Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 19:10
· 350 commits to main since this release

從 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(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 原本的錯誤搬到輪詢那一欄,補漏那一欄從空的開始;降版把兩欄
      併回一欄。
  • 週報(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,並念得出會開新分頁。