Repository navigation
v0.3.0
從 0.2.9 升級:docker compose pull && docker compose up -d 就好;docker-compose.yml 與 .env 沒有變。
image 是 ghcr.io/1morr/berth:0.3.0,同時是 :0.3 與 :latest——固定在 :0.2 的不會自動升到這一版,要把
berth 的 image 改成 :0.3。下面改到的 API 只有 Berth 自己的畫面在用,升級之後重新整理一次頁面即可。
這一版有六個資料庫 migration(Berth 啟動時自動依序套用一次,各自寫在下面那一條)。
這一版是 M4「有事時 Berth 會說」:通知走 Discord 私訊,要先在設定 → 通知貼上你自己建的 bot token;不設也照舊運作,
只是不會收到通知。每天的巡檢與每週的週報不需要設定。
Added
- 「可以看了」送到管理員的 Discord(M4 票 123):一筆下載在 Jellyfin 全部認出來之後,每一位填了 Discord ID 的
管理員收到一則私訊,說出作品、季集與 Route(電影只說作品)。設定 → 通知:貼上自己建的 Discord bot 的 token
(存的時候向 Discord 驗一次,之後畫面只說「已設定」,token 不回到瀏覽器)、用邀請連結把 bot 加進你所在的伺服器、
填自己的 Discord user ID、按「送一則測試訊息給我」,失敗時當場說出原因與補法。通知用存 ID 那一刻的介面語言寫。
Discord 暫時連不上時,沒送到的那幾則留著下一輪再送。API:GET /api/settings/notifications、
PUT /api/settings/notifications/bot;自己的 Discord ID 與測試在/api/me/notifications(下一條)。
這一版有資料庫 migration(d5e8a2c7f914):新的待送表,使用者多兩欄(Discord ID、通知語言)。 - 通知裡的連結(M4 票 124):設定 → 通知多一格「Berth 的網址」,填你在手機上、家外面打開 Berth 用的那一個
(反向代理、Tailscale、NAS 的網域)。沒存過時預填你現在開著 Berth 的網址,按儲存才算數;不是http://或
https://開頭的完整網址會被擋下並說原因。存了之後「可以看了」帶作品頁的連結;沒存照送、不附連結。
Jellyfin 的對外網址同一條規則,兩者都不再收帶?或#的網址(接上路徑之後開不到那一頁)。
API:PUT /api/settings/notifications/berth-url,GET /api/settings/notifications多一格berth_url。 - 通知送不出去時看得見、不拖累別的(M4 票 128):健康頁多一張「通知」卡,說出上次送出、等著送幾則;
Discord 不再接受 bot token(例如在 Developer Portal 重設過)時它變紅、通知全部暫停,設定 → 通知貼上新的
token 就自動恢復。Discord 連不上時自動退避再試(30 秒起,最長隔一小時),被限速時照 Discord 說的秒數等。
bot 傳不到某個人(沒有共同伺服器或關了私訊)時,那一則不再重試,那個人的設定 → 通知上說出原因與兩個補法,
補好之後按測試、送到了那一句就收掉。送不出去的通知最多留 24 小時就放棄,修好之後不會一次湧出一大堆舊的。
通知寫不成或送出出錯都不會讓下載、入庫失敗。API:GET /api/health/detail多notify,
GET /api/settings/notifications多token_rejected,GET /api/me/notifications有unreachable_at、
unreachable_detail。
這一版有資料庫 migration(e3a9c6f1b207):使用者多兩欄(上次收不到通知的時間與原文)。 - 每個人都收得到通知,只收自己看得到的(M4 票 125):一般使用者也有設定 → 通知(頁首的「設定」帶他到這一頁),
填自己的 Discord ID、勾要收哪幾種(「可以看了」預設勾著;「正在下載」可以先勾,這一則還沒開始送)、按測試;
bot token 與 Berth 的網址仍只有管理員看得到。「可以看了」只送給在 Jellyfin 看得到那個媒體庫的人,
帳號被停用的不送;Jellyfin 暫時問不到時那一則等它回來再送,不猜。同一部作品 5 分鐘內入庫的幾批合成一則、
季集範圍合起來,所以每一則「可以看了」會在認出來之後約 5 分鐘到。API:「我的」那一半從
/api/settings/notifications/me、/test搬到GET|PUT /api/me/notifications(多kinds)、
POST /api/me/notifications/test;GET /api/settings/notifications只剩 bot 與 Berth 的網址。
這一版有資料庫 migration(f4b8d2e6a913):使用者多一欄(要收的通知種類,既有的人是「可以看了」)。 - 「有 N 件等你處理」(M4 票 127):待審核、Issue 或待綁定的 RSS Series 有新的一件時,管理員收到一則 Discord
私訊;10 分鐘內接著出現的併進同一則。訊息說出這一波新增了什麼(「新增 3 件:1 件待審核、1 個 Issue(無主目錄)、
1 個 RSS Series 待綁定」)與現在各有幾件;只有一件時連到那一列(頁面打開後捲到那裡),多件時連到各自的清單。
送出前都已經處理掉的就不送;被忽略、隔天對帳又開的 Issue 算進總數但不再推。原本規劃的「Issue 新增」通知併進這一則。
只有管理員收得到、在設定 → 通知勾得到;管理員預設就勾著。Discord 的連結好幾條時寫在同一行。
這一版有資料庫 migration(b7d1e5a3c820):既有的管理員補上這一種通知的訂閱。 - 「正在下載」開始送了(M4 票 126):在設定 → 通知勾了它的人,RSS 送出新的下載時收到一則 Discord 私訊,
說出作品、季集與 Route(「正在下載:葬送的芙莉蓮」、S02E03–E05)。一輪一則、一部作品一則:一個 Feed
的一次輪詢、一次綁定(連補舊集上百集也一樣)、一次訂閱,送出幾集都合成一則;qBittorrent 沒收下的不算。
在搜尋結果或作品頁按下載、在 RSS 頁按綁定、「立即輪詢」、「全部下載」、放行時,其他訂閱的人照收,按的人自己不收。
只送給在 Jellyfin 看得到那個媒體庫的人(同「可以看了」)。 - 每日巡檢(M4 票 129):Berth 每天 05:00(容器的時區)自己檢查一次,不花 token。
- 第一批卡住:還沒確認的 RSS Series 有一筆下載停在「送單失敗」或「客戶端錯誤」超過一天,而那一筆沒有別的
Issue 在說它時,/issues多一件「第一批卡住」。列上說出停在哪、從什麼時候、原因與下一步(重試或刪掉那一筆,
或在審核頁確認整個 Series),連到那一筆下載;處理之後隔天巡檢自己收掉,忽略了就不再問到它解除為止。 - 放太久:「等你處理」裡最舊的一件等了 3 天以上,訂閱了「等你處理」的管理員再收到一則提醒(「有一件等了
3 天」),連到那一件;同一件 3 天內只提醒一次,送出前處理掉了就不送。升級之前就在等的,從升級後開始算。 - 重啟 Berth 不會立刻跑一輪;精靈跑完之前不跑。
- 第一批卡住:還沒確認的 RSS Series 有一筆下載停在「送單失敗」或「客戶端錯誤」超過一天,而那一筆沒有別的
- 每日巡檢看 RSS(M4 票 130):同一輪多三種
/issues,處理之後隔天巡檢自己收掉,忽略了就不再問到它解除為止。- 一直失敗的 Feed:Feed 的輪詢或每日補漏一直失敗超過一天,各開一件(「輪詢一直失敗」「補漏一直失敗」),
說出從什麼時候、最後的原因,連到 RSS 頁的那一個 Feed。RSS 頁的 Feed 列也把兩種失敗分開說:輪詢是整個 Feed
讀不到,補漏是某幾個字幕組在 Mikan 上的整季清單讀不到。 - 缺集:一個 RSS Series 已入庫的集數中間少了幾集,而且後面那一集入庫已滿 7 天(給字幕組晚發),列出缺哪幾集、
連到作品頁搜缺的集。別的字幕組或手動下載補上的不算缺,正在下載或等審核的也不算。 - 同一集多份:同一個字幕組的兩個發佈寫的是不同集,卻都入庫成同一集(多半是集號換算或 offset 錯了),列出
撞在一起的發佈名、連到作品頁修正。同一集的 v2、简繁兩版、不同解析度、季末合集與別的字幕組照舊並存,不算。 - API:
GET /api/rss/feeds的last_error拆成poll_error與backfill_error。
這一版有資料庫 migration(c5f2a8e4d917):Feed 原本的錯誤搬到輪詢那一欄,補漏那一欄從空的開始;降版把兩欄
併回一欄。
- 一直失敗的 Feed:Feed 的輪詢或每日補漏一直失敗超過一天,各開一件(「輪詢一直失敗」「補漏一直失敗」),
- 週報(M4 票 131):每週一 05:00(容器的時區)每日巡檢跑完之後,Berth 寫一份上一週的週報:入庫了哪幾部
(季集範圍)、修了什麼(核准的計劃、rematch 的檔案、你們解決的與系統收掉的 Issue)、還有什麼等你處理(那一刻的
待審核、Issue、待綁定的 RSS Series,巡檢開的另外點出來)。頁首多一個「週報」(只有管理員),看最新一週與歷來每一週;
週報寫下來就不再變,之後刪掉的下載不會讓舊週報少一行。管理員在設定 → 通知多一個「週報」勾選,預設勾著,
收到一則 Discord 摘要、連到那一週。週一那一刻 Berth 沒在跑的話,下一次啟動補上,同一週不會有兩份;新裝的 Berth
從下一個週一起。API:GET /api/weekly、GET /api/weekly/{id}。
這一版有資料庫 migration(a8c3f6e1d254):新的週報表;既有的管理員補上「週報」訂閱;降版拿掉兩者。
Fixed
- 套用到 RSS Series 時其中一筆剛好被別處處理掉,不再整個失敗(M4 票 133):在審核頁改季集並套用到整個 RSS Series,
另一個分頁同時核准或刪掉了其中一筆停著的下載時,那一筆跳過、其餘照常重算;原本整個套用報錯。 - 忽略的 Jellyfin 認錯不再每天重開(M4 票 122):按「忽略」之後,每日對帳又比到同樣的不一致不會再開一筆;
Jellyfin 認對過一輪之後又認錯才重開,問不到 Jellyfin 的那一輪不算認對。qBittorrent 上 Berth 不認得的 torrent
同樣:按「忽略」之後原本 5 秒內就重開,現在它還掛在 qBittorrent 上就不再問,移除之後又出現才重開。 - 作品頁跟得上背景入庫(M4 票 132):作品頁開著時,RSS 在背景替這部作品送出第一筆下載並入庫,
原本季表停在舊的件數、也不長出「下載」段,要重新整理才看得到;現在幾秒內自己更新。 - 英文介面的 Route 頁標題與分頁同名(M4 票 132):設定的分頁叫 Library paths,點進去與精靈頁 3 的標題
卻是 Routes;兩個標題改成 Library paths(中文本來就都叫「媒體庫路徑」)。 - 通知的測試不再測到舊的 Discord ID(M4 票 132):設定 → 通知改了自己的 Discord ID 還沒儲存時,「送一則測試訊息給我」
先說「先儲存你改過的 Discord ID,再測試」,不再拿存著的舊 ID 去送、說已送出。「通知裡的連結」改過欄位後說明不再說那是預填的;
清空並儲存時說「已清掉:通知不附連結」。 - 作品頁的搜尋區塊(M4 票 132):搜尋鍵停用時,原因就在鍵的正下方(手機上原本要往下捲過名字與清單才看得到);
打了關鍵字時名字與季的選項停用並說為什麼(之前按了也不影響要問的那一個);換了名字之後查詢數的變化念得出來;
從季表按「搜這部作品缺的集」時,預覽回來之前不再列出作品名那幾個查詢。 - 完成頁的服務連結(M4 票 132):點得到的高度至少 24px,並念得出會開新分頁。