Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

All notable public product changes are recorded here. Release notes contain only product scope and reproducible validation; platform identifiers and private operational details are excluded.

## v1.48.0 — 2019 春季《爆丸 決戰星球》

- 收錄日本播出版、1 首 OP 與 2 首 ED,保留共同作曲、共同編曲及前後期片尾;後期 ED 註明 2020 年更新。
- 以台灣播出方與繁中季表核對作品名稱,中文主題影片只作名稱來源;未確認的歌曲發行日期、影片、外部 ID 及 Romaji 保留空缺。
- 春季共 32 套作品、94 筆 OP/ED;本季與夏季仍在補充,2025 秋季尚未收錄。

## v1.47.0 — 作品頁歌曲導覽

- 超過 4 筆歌曲的作品頁新增可收合的頁內導覽,按 OP/ED 分組,完整顯示曲名與演唱者並直接跳到對應版本。
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

Anisonary 是以 Astro + strict TypeScript 建立的動畫歌曲目錄,按季度與日本編輯播出日瀏覽作品、OP 與 ED。網站輸出為純靜態資產,正式交付使用 **Cloudflare Workers Static Assets**;它不是 Cloudflare Pages,也沒有 application Worker backend。下方同時保留 English technical notes。

This repository contains the completed static product: season directory, anime detail pages, traceable OP/ED credits and links, per-song source ledgers, source-attributed media, local-only cross-season search, privacy-bounded offline reading, a GitHub correction flow, and deployment through Cloudflare Workers Static Assets. The default catalogue covers twenty-nine reviewed snapshots across 2019–2026, with 1,948 unique titles and 4,320 known OP/ED records. The 2019 spring snapshot contains thirty-one TV titles, including television shorts and a TV recut; summer contains 38 TV titles and four web series. Both quarters are still being expanded, and 2025 fall is not yet included. Fictional Mock Data remains test-only.
This repository contains the completed static product: season directory, anime detail pages, traceable OP/ED credits and links, per-song source ledgers, source-attributed media, local-only cross-season search, privacy-bounded offline reading, a GitHub correction flow, and deployment through Cloudflare Workers Static Assets. The default catalogue covers twenty-nine reviewed snapshots across 2019–2026, with 1,949 unique titles and 4,323 known OP/ED records. The 2019 spring snapshot contains thirty-two TV titles, including television shorts and a TV recut; summer contains 38 TV titles and four web series. Both quarters are still being expanded, and 2025 fall is not yet included. Fictional Mock Data remains test-only.

目前 source 版本:**v1.47.0**。歌曲較多的作品頁提供可收合的 OP/ED 導覽,按曲名與演唱者直接選擇版本;鍵盤、無 JavaScript 與離線閱讀均可使用。目錄共有 29 個季度、1,948 套作品與 4,320 筆 OP/ED;春季為 31 套作品、91 筆歌曲,春、夏季仍在補充,2025 秋季尚未收錄。
目前 source 版本:**v1.48.0**。新增《爆丸 決戰星球》的日本播出版與 3 筆 OP/ED,保留共同詞曲編曲署名,並區分前後期片尾;未確認的歌曲發行日期及影片保留空缺。目錄共有 29 個季度、1,949 套作品與 4,323 筆 OP/ED;春季為 32 套作品、94 筆歌曲,春、夏季仍在補充,2025 秋季尚未收錄。

導覽延續固定五個入口與年代、年份、季度目錄;搜尋可按動畫、歌曲、創作者、年份、季度及 OP/ED 篩選,每頁顯示 12 套作品。搜尋完全在瀏覽器內進行,YouTube 只於明確操作後連線。網站與同源靜態 JSON API 共用已審閱資料,無 application backend 或 database binding。依賴安全 gate 繼續鎖定 `fast-uri` 3.1.6 並稽核開發依賴。

Production build 會從最終 HTML 自動產生 hash-based Content Security Policy。政策不使用 `unsafe-inline` 或 `unsafe-eval`,禁止 inline event/style attributes,只開放同源資產、已核對的海報來源及使用者啟動後的 YouTube privacy-enhanced iframe。任何未批准的 media origin 會令 build fail closed。

| 可用性 / Availability | 成熟度 / Maturity | 證據 / Evidence |
| -------------------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 公開靜態目錄 / Public static catalogue | Source 版本為 `v1.47.0`;正式發布狀態以對應 Release 驗收摘要為準 | [入口網站 / Live](https://anisonary.k-y.cc) · [版本與驗收 / Releases](https://github.com/kyeunga25/anisonary/releases) · [資料來源 / Sources](docs/DATA_SOURCES.md) · [安全政策 / Security](SECURITY.md) · [授權 / Licence](LICENSING.md) · [版權 / Copyright](COPYRIGHT.md) |
| 公開靜態目錄 / Public static catalogue | Source 版本為 `v1.48.0`;正式發布狀態以對應 Release 驗收摘要為準 | [入口網站 / Live](https://anisonary.k-y.cc) · [版本與驗收 / Releases](https://github.com/kyeunga25/anisonary/releases) · [資料來源 / Sources](docs/DATA_SOURCES.md) · [安全政策 / Security](SECURITY.md) · [授權 / Licence](LICENSING.md) · [版權 / Copyright](COPYRIGHT.md) |

## 技術棧|Technology stack

Expand Down
4 changes: 2 additions & 2 deletions docs/DATA_PROVENANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ API、資料庫、商標或媒體重用權。完整授權邊界見

`first_party` 表示動畫製作/發行方、唱片公司、藝人官方渠道、官方影片或正式播出機構的公開頁面。`cross_check` 表示用於發現缺口及交叉比對的公開索引。兩種角色都是來源分類,不代表數值信心或內容評分。

2019 春季目前整理 31 套 TV 作品(含電視短篇及重編版),夏季整理 38 套 TV 作品及 4 套網絡連載;兩季的其他作品、跨季延續與特殊歌曲仍待核對;`coverageNote` 會在季度頁及 API 公開說明本季範圍。
2019 春季目前整理 32 套 TV 作品(含電視短篇及重編版),夏季整理 38 套 TV 作品及 4 套網絡連載;兩季的其他作品、跨季延續與特殊歌曲仍待核對;`coverageNote` 會在季度頁及 API 公開說明本季範圍。

目前二十九季快照的 season references、1,948 個作品及 4,320 筆 OP/ED 都有結構化 provenance;4,320 筆歌曲全部至少保留一個 `first_party` 與一個 `cross_check` 來源。`tests/unit/curated-catalog.test.ts` 鎖定來源數量、角色、語言、HTTPS、核對日期、Mock URL 禁止條件,以及 legacy labels 與結構化 ledger 的一致性。
目前二十九季快照的 season references、1,949 個作品及 4,323 筆 OP/ED 都有結構化 provenance;4,323 筆歌曲全部至少保留一個 `first_party` 與一個 `cross_check` 來源。`tests/unit/curated-catalog.test.ts` 鎖定來源數量、角色、語言、HTTPS、核對日期、Mock URL 禁止條件,以及 legacy labels 與結構化 ledger 的一致性。

## 欄位決策

Expand Down
4 changes: 2 additions & 2 deletions docs/DATA_SOURCES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ repository 的 Apache-2.0 軟件授權範圍內,詳見

季度完整性定義為:在日本於該季度日曆月份首播的非成人 `TV`/`WEB` 連載動畫,包含短篇、新季度與分割 cour;排除劇場版、OVA、宣傳短片及 18+ 作品。正式播出/配信的獨立特別篇只有在至少兩個季度來源一致歸入該季、並有可追溯第一方發布時才收錄。若作品在季度開始前數日先行發布,亦須由至少兩個季度目錄或主題曲索引一致歸入該季。同一作品跨季時共用一個詳情頁。

目前 repository 中已審閱的快照為:2026 夏季 70 套、2026 春季 70 套、2026 冬季 66 套、2025 夏季 75 套、2025 春季 82 套、2025 冬季 59 套、2024 秋季 88 套、2024 夏季 68 套、2024 春季 76 套、2024 冬季 75 套、2023 秋季 100 套、2023 夏季 75 套、2023 春季 79 套、2023 冬季 72 套、2022 秋季 80 套、2022 夏季 69 套、2022 春季 79 套、2022 冬季 58 套、2021 秋季 65 套、2021 夏季 46 套、2021 春季 73 套、2021 冬季 67 套、2020 秋季 67 套、2020 夏季 31 套、2020 春季 61 套、2020 冬季 58 套、2019 秋季 67 套、2019 夏季 42 套(38 套 TV、4 套網絡連載)及 2019 春季 31 套 TV 作品(含電視短篇及重編版),共 1,948 個作品詳情、4,320 筆 OP/ED 與 567 個歌曲層 YouTube 直連;其中 1,805 筆已保留官方或正式授權影片 metadata。
目前 repository 中已審閱的快照為:2026 夏季 70 套、2026 春季 70 套、2026 冬季 66 套、2025 夏季 75 套、2025 春季 82 套、2025 冬季 59 套、2024 秋季 88 套、2024 夏季 68 套、2024 春季 76 套、2024 冬季 75 套、2023 秋季 100 套、2023 夏季 75 套、2023 春季 79 套、2023 冬季 72 套、2022 秋季 80 套、2022 夏季 69 套、2022 春季 79 套、2022 冬季 58 套、2021 秋季 65 套、2021 夏季 46 套、2021 春季 73 套、2021 冬季 67 套、2020 秋季 67 套、2020 夏季 31 套、2020 春季 61 套、2020 冬季 58 套、2019 秋季 67 套、2019 夏季 42 套(38 套 TV、4 套網絡連載)及 2019 春季 32 套 TV 作品(含電視短篇及重編版),共 1,949 個作品詳情、4,323 筆 OP/ED 與 567 個歌曲層 YouTube 直連;其中 1,805 筆已保留官方或正式授權影片 metadata。

每季先以繁中年度動畫表的對應月份建立日曆清單,再與 Annict、Bangumi 及 AniList identifier 取聯集核對。OP/ED 以作品官網和官方 YouTube 為主,並用 AnimeThemes、UZUREA 與 UtaTen 等季度主題曲表交叉確認;季度歌曲索引未收錄的作品,須返回 Netflix、唱片公司、IP 官網、正式播出機構或製作公司等第一方頁面補證。台港正式代理、串流或出版社名稱優先;未有可確認的繁中名稱時保留原文,不宣稱為正式授權譯名。

2019 春、夏季仍在補充,2025 秋季尚未收錄;季度快照代表已核對範圍,不代表歷史作品或歌曲已全部補齊。

每首已發布歌曲在 `PublicTheme.sources[]` 留下 URL、語言、`first_party`/`cross_check` 角色及核對日期。二十九季快照的 4,320 筆歌曲都必須同時具備兩種角色;這是公開 provenance gate,不是 confidence score。第三方索引將歌曲標為 OP/ED、但第一方頁面只證實插曲、劇中歌、Victory Dance、其他節目用途、舊季度歌曲、其他改編版本或一般「主題歌」時,不把它升格為官方 OP/ED;在既有導航契約中保留的一般主題曲會明示「主題歌(官方分類)」。完整欄位與媒體邊界見 [`DATA_PROVENANCE.md`](./DATA_PROVENANCE.md)。
每首已發布歌曲在 `PublicTheme.sources[]` 留下 URL、語言、`first_party`/`cross_check` 角色及核對日期。二十九季快照的 4,323 筆歌曲都必須同時具備兩種角色;這是公開 provenance gate,不是 confidence score。第三方索引將歌曲標為 OP/ED、但第一方頁面只證實插曲、劇中歌、Victory Dance、其他節目用途、舊季度歌曲、其他改編版本或一般「主題歌」時,不把它升格為官方 OP/ED;在既有導航契約中保留的一般主題曲會明示「主題歌(官方分類)」。完整欄位與媒體邊界見 [`DATA_PROVENANCE.md`](./DATA_PROVENANCE.md)。

## 固定來源

Expand Down
1 change: 1 addition & 0 deletions docs/PROJECT_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
- **v1.45.0 source**:歌曲署名直接開啟本機創作者文字搜尋,保留完整名稱及既有字數上限;入口條件使用不會送出的網址片段,手動編輯時清除,資料、API 與全域導覽數量不變;發布證據見對應 GitHub Release。
- **v1.46.0 source**:2019 春季增加《強襲魔女 501部隊出動!》TV 短篇、13 筆 OP/ED 與 2 筆官方影片 metadata;12 個片尾演唱版本各自保留,作曲署名衝突欄位暫缺,春季共 31 套作品與 91 筆歌曲;發布證據見對應 GitHub Release。
- **v1.47.0 source**:歌曲超過 4 筆的作品新增可收合 OP/ED 導覽,完整列出曲名與演唱者,保留原有深連結、鍵盤焦點及無 JavaScript/離線閱讀;長清單高度受限,資料、API 與全域導覽數量不變;發布證據見對應 GitHub Release。
- **v1.48.0 source**:2019 春季增加《爆丸 決戰星球》日本播出版與 3 筆 OP/ED;區分前後期片尾、共同製作署名與台灣名稱來源,未確認發行日期及影片留空,春季共 32 套作品與 94 筆歌曲;發布證據見對應 GitHub Release。
- 正式網站使用 custom domain;非正式 Cloudflare hostname 不在公開文檔記錄;
- 私有 backend、資料庫、crawler、帳戶設定、憑證與內部規則不屬於本公開 repository。

Expand Down
27 changes: 27 additions & 0 deletions docs/QA_V1_48_2019_SPRING_BAKUGAN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# v1.48.0|2019 春季《爆丸 決戰星球》QA

核對日期:2026-09-07。本文件記錄 source 範圍與本機驗證;正式部署須於固定版本合併後獨立驗收。

## 資料與來源

- 新增《爆丸バトルプラネット/爆丸 決戰星球》日本播出版、1 首 OP 與 2 首 ED;春季共 32 套 TV 作品、94 筆歌曲,仍保留季度未完成說明。
- [東京電視台播出表](https://www.tv-tokyo.co.jp/anime/bakugan-bp/onair/)與 [SEGA 2019 年公告](https://www.sega.jp/topics/detail/190306_goods_1/)核對日本首播為 2019-04-01、星期一 17:55。使用具來源的本站識別碼,不生成外部索引 ID、Romaji 或圖片。
- [YOYOTV 台灣播出方](https://www.youtube.com/watch?v=9yiBbt820uo)及 [YourAnimes 繁中季表](https://youranimes.tw/bangumi/201904)核對繁中名稱。YOYOTV 的中文主題影片只作作品名稱來源,未關聯為日語 OP/ED 影片,也不自動載入媒體。
- OP〈情熱ジャンボリー〉由 HiHi Jets 演唱;SEGA 與[東京電視台製作頁](https://www.tv-tokyo.co.jp/anime/bakugan-bp/staff/)核對作詞 MiNE、共同作曲川口進/MiNE/Atsushi Shimada,以及共同編曲 Atsushi Shimada/Peach。
- 前期 ED〈Be my story〉由 HiHi Jets 演唱;SEGA 及 [onetrap 創作者官方](https://onetrap.ageha.net/archives/onetrap_news/0067)核對中村崇人的詞曲署名,SEGA 另列編曲 Dr.Dalmatian。
- 後期 ED〈サヨナラの方程式〉由 HiHi Jets 演唱;東京電視台製作頁核對作詞 miyakei、共同作曲大智/児山啓介。[作品首頁](https://www.tv-tokyo.co.jp/anime/bakugan-bp/)保留 2020-01-20 主題曲更新公告,因此明示後期歌曲於 2020 年更新,作品仍按日本首次播出的 2019 春季分類。
- [アニソンライブラリー](https://japan-anime-song.com/bakumarubatorupuranetto-anison/)交叉核對 OP/ED 次序與署名。其影片公開日期不作歌曲發行日期;三筆歌曲的發行日期、日語官方影片與後期 ED 編曲均保留空缺,不額外推定單集使用範圍。

## 本機驗收

- `npm run catalog:check`:232 項通過。
- `npm run check` 中公開邊界、Lint、335 項單元測試、建置及 Cloudflare dry-run 通過;瀏覽器啟動受到本機沙箱限制,另在允許環境執行 `npm run test:e2e`,43 項全部通過且沒有重試。
- 完整依賴與正式依賴稽核均為 0 項漏洞;`fast-uri` 保持 3.1.6,既有安全回歸通過。
- 與 v1.47.0 source 比較:1,977 份 API 逐位元相同,只更新春季清單並新增作品詳情,沒有移除。建置產生 1,993 份 HTML、3,985 份公開產物,dry-run 沒有 runtime bindings。
- 四項新增資料測試先確認缺少記錄時失敗,再驗證日本版身份、台灣名稱來源、共同製作署名、未知欄位、API 讀回與繁中/創作者搜尋。首輪瀏覽器回歸發現既有 2020 秋季的影片篩選預期數誤改,恢復原值後通過;該季資料沒有變動。
- 新增 E2E 涵蓋 1280、960、390、320px 的繁中搜尋、創作者連結、年份/季度/ED 篩選及後期片尾深連結,以及 390px 無 JavaScript 年度、季度、作品與來源導覽。原有離線、鍵盤、影片同意、404 與錯誤狀態回歸通過。
- Chromium 檢查作品、OP、前期 ED、後期 ED 與春季頁共 25 個畫面,包含 390px 無 JavaScript 閱讀;沒有水平溢出、頁面錯誤或使用者操作前的 iframe/YouTube 請求。人工檢視桌面及手機作品與後期片尾截圖。

## 發布界線

本機與分支建置結果不代表正式網站已更新。發布時仍須核對合併 SHA、CI、Cloudflare 實際版本與流量,以及 live routes、headers、API 與產物內容。本切片未驗證實體裝置、Safari、Firefox、Lighthouse/Core Web Vitals 或實際 YouTube 播放。
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "anisonary",
"version": "1.47.0",
"version": "1.48.0",
"private": true,
"license": "SEE LICENSE IN LICENSING.md",
"type": "module",
Expand Down
6 changes: 6 additions & 0 deletions src/data/curated-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4606,6 +4606,12 @@ const animeOfficialSourceOverrides: Record<string, { label: string; url: string
};

const animeSourceOverrides: Record<string, AnimeSourceSeed[]> = {
"catalog-bakugan-battle-planet-2019": [{
label: "YOYOTV 台灣播出方:繁中作品名稱;中文主題影片不作日語 OP/ED 版本",
url: "https://www.youtube.com/watch?v=9yiBbt820uo",
language: "zh-Hant",
role: "first_party"
}],
105749: [{
label: "東京電視台:2019 年首集、首播日期與播出時段",
url: "https://www.tv-tokyo.co.jp/broad_tvtokyo/program/detail/201904/22856_201904021755.html",
Expand Down
2 changes: 1 addition & 1 deletion src/data/curated-season-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@ export const curatedSeasonRegistry = validateCuratedSeasonRegistry([
quarter: "spring",
titleZhHant: "春季動畫",
titleJa: "2019年春アニメ",
coverageNote: "本季正在補充,目前收錄 31 套 TV 作品(含電視短篇及重編版)。其餘作品、跨季延續及特殊歌曲版本仍待核對。",
coverageNote: "本季正在補充,目前收錄 32 套 TV 作品(含電視短篇及重編版)。其餘作品、跨季延續及特殊歌曲版本仍待核對。",
seeds: curated2019SpringSeeds,
animeIds: curated2019SpringAnimeIds
}
Expand Down
Loading