為 anime1.me 打造的瀏覽器增強油猴腳本:自動封面圖、觀看記錄與續播、海報卡片列表、追番更新提醒。
- 瀏覽器安裝 Tampermonkey(或 Violentmonkey)。
- 點此安裝(Tampermonkey 會跳出安裝頁): https://raw.githubusercontent.com/bakabaka0613/anime1-plus/main/dist/anime1-plus.user.js
- 安裝時若提示
unsafeWindow、@require(jsdelivr 的 OpenCC 繁簡庫)等權限請允許。打開任一動畫頁即生效。
自動更新:腳本已設定 @updateURL / @downloadURL,Tampermonkey 會定期自動檢查並更新;也可在儀表板對腳本手動「檢查更新」。
- 解析 anime1 標題(去集數/字幕組、辨識「第X季」「Ⅱ」「2nd Season」「劇場版」「OVA」等),到 Bangumi 搜尋,用「名稱相似度 + 年份 + 季度」三維評分。
- 信心不足不靜默對錯,改列候選讓你手選,選擇會記住。
- 封面卡主標用 anime1 原始繁體名(Bangumi 中文常為簡體),副標只附日文原名(與主標重複的中文名不再贅列、過長截兩行)。
- 動畫頁資訊卡還顯示:比對信心、放送季(如
2024冬)與 Bangumi 標籤(類型在前、熱門 tag 在後,最多兩排);電腦端封面圖放大顯示。 - 動畫以穩定的
categoryID為 key,分類頁/單集頁/列表頁共用同一份資料。 - 繁簡自動轉換(OpenCC):繁體標題轉簡體去搜(Bangumi 索引多為簡體);name/name_cn 對不上時,再抓 Bangumi 別名比對救回。
- 在分類頁就地內嵌播放器看時(anime1 實際的觀看方式),自動用播放器的
data-apireq精準辨識第幾話並記錄進度;單集頁/{postId}也支援。 - 重看自動跳回上次位置;確實播到 ≥90% 才標記「看完」(並防止播放器重載瞬間的 0 覆蓋進度)。
- 分類頁每集標示「已看 ✓ / 進度條」,頂部橫幅顯示進度:未看完一鍵繼續看、最後一集已看完則顯示看下一集/看最新集(跨分頁也能跳,因看時已記下該集網址)。
- 分類頁多個內嵌播放器折疊成上方選集列、下方單一播放器,點集數即切換;進入時自動選該續播的集(最後看的已看完則跳下一集,而非停在已看完那集)。特殊集在選集列顯示 SP / OVA / OAD 標籤(非「#」);分頁分類頁就算該頁只剩一集也照樣顯示選集列。
- 單集頁導覽列:單集頁底部把原生連結整成一排按鈕
[上一集] 全集連結 [下一集];上/下一集依和選集列相同的順序(數字集→特殊集)跨集跳,最後一個數字集也能接到 OVA/SP;沒有上/下一集時該鈕呈灰色不可點。 - 自動下一集:看完自動切到下一集(折疊模式切選集列、單集頁倒數跳轉,倒數時可立即播放或取消)。
- 首頁
/的動畫列表重排成海報卡片網格:封面在上、標題+集數在下;封面 lazy + 限流 + 失敗重試載入。 - 封面比對信心不足時仍放圖,但加左上角「待確認」角標,誘導點進該動畫做嚴謹比對/手選。
- Bangumi 評分:海報右下角顯示 ★ 8.5(取 Bangumi 搜尋結果附帶的評分,無人評分則不顯示)。
- 更新提醒:對有觀看記錄的動畫,若首頁集數欄的最新集數超過你已看完的集,卡片右上角顯示 「+N」 徽章(即時資料、不需額外請求)。
- 封面 TAG 速覽:右鍵(桌機)或長按(手機)海報,封面上浮出該動畫的標籤(Bangumi 類型 metaTags 在前、熱門 tags 在後,已轉繁體、去重、過濾年月季等冗餘);桌機滑鼠移開、手機點任意處即淡出消失。標籤尚未快取時會即時補抓(顯示「載入標籤中…」),不再彈出瀏覽器原生選單。
- 懸浮工具列(下滾黏頂):搜尋框、卡片大小滑桿、卡片 ⇄ 原始列表切換。
- 下滾無限載入:捲到底自動載入更多(透過 DataTables API)。
- 點封面或標題都可進入該動畫。
- 18禁番(連結到 anime1.pw):首頁中連往
anime1.pw的成人向特殊番,跳過 Bangumi 封面查找、統一顯示內建「18禁」封面(點擊仍可前往)。
- 鍵盤快捷鍵:
←/→快退/快轉(秒數可在選單調整、Shift+←/→固定 10 秒)、空白播放暫停(全域攔截,分類頁/單集頁皆生效、不受焦點影響)、N下一集、F系統全螢幕、W網頁全螢幕(填滿視窗)、+/-調速。 - 播放速度記憶。
- 追番清單浮動面板(右下 📺):列出在追的動畫(名稱用繁體)、一鍵繼續看;分兩區排序——上方為「有進度」(可繼續看/看下一集/看新集),下方為「已看完/已到最新進度」,各區內皆依最後觀看時間由新到舊。已追平後又出新集者標「+N 新集」並歸在上方有進度區——只對「曾追到當時最新集」的動畫提醒,落後沒追完的不會跳。已看完最後一集者,依首頁集數欄狀態顯示**「已到最新進度」(仍標連載中)或「已看完」(已完結);這兩種終端狀態也是可點連結,回到你最後看的那一集**(低調灰色,方便想重看時點回去)。
- 追番清單管理模式:按住 Shift 點 📺(或長按 📺 1.5 秒,給觸控裝置)開啟面板進入管理模式,每部右側出現 ✓ 標記已看完(把已知的每一集都設為看完,使其落到「已看完」區;已是終端狀態者不顯示)與 🗑 刪除進度 兩個鈕;不按 Shift 開啟則無這些鈕,避免誤觸。
- 🗑 刪除會同步:刪除採「軟刪除」——清零觀看時間並打上刪除標記,會同步到其他裝置並一起隱藏(看不到=刪除);再次觀看該動畫即自動復原。(之所以不直接抹除,是因為硬刪會被雲端合併還原。)
- 追番清單封面預覽:滑鼠移到列左側的小封面縮圖上,會在面板旁浮出該封面的放大圖,移開即消失。
- 網頁全螢幕按鈕:播放器右上角明顯按鈕(亦可按
W),填滿視窗的網頁全螢幕;播放中閒置時會跟控制列一起自動淡出,滑鼠移入才顯示。 - 右側欄隨檢視模式收放:卡片檢視時自動隱藏右側欄(搜尋/近期更新等 widget),讓海報網格更寬;切回原始列表則顯示。
- 油猴選單:JSON 匯出/匯入(貼上 JSON、合併模式)、「清除資料…」統一入口(輸入數字選範圍:此動畫觀看記錄、封面快取〔動畫頁=只清此動畫/首頁=清全部〕、追番記錄、還原設定、完全重置)、開關各功能。
- 把追番進度(觀看記錄 + 追番輔助資料)同步到你自己的一個私有 GitHub Gist,多台裝置/瀏覽器共用。
- 只同步進度:不含封面快取(各端各自向 Bangumi 重抓)與裝置設定(快進秒數、卡片寬度等保持各端獨立)。新端同步後追番清單封面會先是空的——開啟首頁列表時,待可見海報抓完便自動接著補抓追番清單缺的封面(低優先、不擋可見列表),補完下次開面板即有圖。
- 逐集合併:兩端看不同集會按時間戳(
watchedAt)逐集合併,互不覆蓋;流程為pull → 合併 → push。 - 自動同步:開啟動畫頁時先拉一次遠端;之後有新觀看進度會自動(約數秒 debounce)上傳。也可從油猴選單「☁️ 立即同步」。
- 設定方式:油猴選單「☁️ 設定多端同步」→ 貼上 GitHub Personal Access Token,腳本會自動建立(或找回既有的)私有 gist 並記住 id。其他裝置貼同一個 token 即會指向同一份。
- Token 權限:建議用 fine-grained PAT,只勾 Gist 的讀寫權限即可,把風險面降到最小(詳細步驟見下)。
- 隱私 / 安全:進度會存到你的私有 gist(在 GitHub 上)。Token 只存在本機 Tampermonkey,且**「匯出資料 (JSON)」不會包含 token**,可安心分享匯出檔。
需要一個有 Gist 讀寫權限的 token,建議用 fine-grained(細粒度)token,權限最小最安全。GitHub 介面沒有中文,所以下面要點選的選項名稱保留英文,照著畫面對即可:
- 登入 GitHub,開啟 https://github.com/settings/personal-access-tokens/new (手動路徑:右上頭像 → Settings → 左側最下 Developer settings → Personal access tokens → Fine-grained tokens → Generate new token)。
- Token name:隨意取名,例如
anime1-plus-sync,方便日後辨識。 - Expiration:自選有效期。到期後同步會失效,需重新產生並重貼一次 token(見下方「更新/撤銷」)。想省事就設長一點。
- Resource owner:選你自己的帳號。
- Repository access:Gist 不屬於任何 repo,這項不影響,保持預設或選 Public Repositories (read-only) 都行。
- Permissions → 展開 Account permissions(
⚠️ 不是 Repository permissions)→ 找到 Gists → 把它的 Access 設成 Read and write。- 只需要這一項權限。Gists 在 Account permissions 底下;Repository permissions 裡沒有 Gist 選項。
- 拉到最下點 Generate token,然後複製產生的 token(
github_pat_…開頭)。⚠️ token 只會完整顯示這一次,離開頁面就再也看不到,請先複製好。
- 回到 anime1 頁面,油猴選單 →「☁️ 設定多端同步」→ 貼上 token → 確定。看到「同步已啟用並完成首次同步 ✓」就成功了。
- 其他裝置:在每台裝置/瀏覽器的同步設定貼上同一個 token,就會全部接到同一份 gist,開始互相同步。
classic token 也可以:若慣用 classic token,產生時只勾
gist這一個 scope 即可,效果相同。
- 撤銷 token(不再讓它能存取):到 GitHub 的 token 列表 Delete / Revoke,立即失效。
- 本機刪除 token:選單「☁️ 同步設定(變更 token)…」→ 清空輸入框並按確定 = 刪除本機 token 並停用同步(會保留 gist id,日後重貼 token 即接回同一份資料)。
- token 過期或更換:重新產生一個(步驟同上),用「☁️ 同步設定(變更 token)…」貼上即可。若舊 gist 已被刪或換了帳號,腳本會自動找回既有或新建一份,不會卡住。
- 暫時停用:選單「✓ 多端同步(點此停用)」。
npm install
npm test # 純函式單元測試(parse / match / util:集數解析、更新判定、繼續看判定)
npm run build # 產出 dist/anime1-plus.user.js原始碼拆分於 src/:
| 檔案 | 職責 |
|---|---|
parse.js |
標題解析(季度/集數/類型) |
match.js |
Bangumi 候選嚴謹評分 |
bangumi.js |
Bangumi 搜尋(GM_xmlhttpRequest) |
cover.js |
封面查詢/渲染協調 |
store.js |
GM storage(記錄/設定/匯出匯入) |
progress.js |
觀看記錄、續播、自動下一集、快捷鍵 |
list.js |
列表頁卡片網格、工具列、無限滾動、待確認角標、更新徽章 |
animelist.js |
取首頁 animelist.json 解析各動畫即時最新集數 |
ui.js |
樣式與各 UI 元件(封面卡、追番面板、選集列…) |
util.js |
純函式:繁簡轉換、相似度、集數解析、更新/繼續看判定 |
dom.js |
anime1 DOM 選擇器與 helper(改版優先看這) |
main.js |
依頁面類型分派、油猴選單 |
由 esbuild(build.mjs)打包成單檔。發布更新流程:改 src → 在 build.mjs bump VERSION → npm run build → git commit + git push;版本號務必往上加,否則 Tampermonkey 不會偵測到更新。
- Bangumi 公開 API 有速率限制 → 結果快取、列表 lazy + 限流。
- 列表無限滾動需透過頁面的 DataTables 實例(
unsafeWindow);若拿不到,會保留原生分頁。 - 播放器若改為非原生
<video>,續播/記錄會自動略過(不報錯)。 - 追番面板的「已追平後出新集」判定依賴
meta.maxEpSeen(進過該動畫分類頁才會記錄);只在單集頁看過、從沒進分類頁的動畫無法判定,保守不提醒。 - 多端同步:其他裝置的變動在追番面板開啟時即時讀新,但分類頁的集數標記、列表頁徽章要重新整理或換頁後才反映。Gist 無鎖,採
pull→合併→push,對單人少數裝置的低並發足夠;極端同時寫入的競態未做 ETag 偵測。單份同步資料上限 1MB(追番進度遠不會到)。