Skip to content

匯入管線

匯入會把一個檔案資料夾轉成目錄項目,且不修改任何檔案位元組。本頁說明使用指南所述流程背後的管線。

監看資料夾由平台的檔案系統事件監控,經過 debounce,並在變更時重新掃描;掃描會與既有候選清單比對,而不是從頭開始。掃描器會把資料夾分類為一個發行版本(音訊直接位於其中,或像 CD1/CD2 這類碟形子資料夾),或把它遞迴成合集。檔案會先依副檔名分類為音訊、圖片與文件,然後探測音訊:真正重要的編解碼器是 FFmpeg 在位元組中找到的,而不是副檔名。含有部分下載標記的資料夾會被排除,直到下載完成。

CUE sheet 會把一個音訊映像檔轉成曲目清單。Parser 處理 pregap 與 postgap、每曲 performer 與 ISRC,以及單檔映像與每曲一檔的 CUE 版面。曲目邊界會從 CUE frame(1/75 秒)轉成精確樣本位置,稍後成為播放使用的位元組與樣本區段。

每个候选人都存储一个可编辑的元数据草稿和可选的来源。 草稿可以是空白的,直接填充,从外部发布填充,或从存储的文件标签快照填充。 来源记录当前草稿开始的地方;后续编辑不会删除它。

顶部的元数据插槽显示草稿、在線上尋找 浏览器或檔案標籤 浏览器。 打开或关闭浏览器不会重写草稿。 套用 替换源在一个数据库事务中替换草稿、其来源和选定的源封面,同时保留文件角色、CUE 绑定、磁盘分配和其他映射决定。

在線上尋找 是唯一运行识别的路径,它从 rip 日志或 CUE 表中计算 光碟 ID, 使用 OCR 识别条形码和目录文本,查询 MusicBrainz 和 Discogs, 并匹配结果。 嵌入式音频标签不是在线识别证据。

預設中繼資料來源有三個值。會建立空白草稿,且不啟動中繼資料工作。檔案標籤會讀取並套用標籤快照。在線上尋找會開啟線上工作流程。預設在線上尋找模式可選擇自動手動搜尋:自動會將證據擷取、供應商查詢和比對加入佇列,手動搜尋不會啟動識別。為任何候選項目開啟在線上尋找都會使用所選模式;自動不會重新啟動進行中或已完成的工作。

檔案標籤 会懒惰地读取嵌入的音频标签和 CUE 元数据,除非它是新发现的候选的配置默认值。 预览存储了一个快照,其中包含候选的扫描生成、文件编辑修订和观察到的音频文件。 套用 将其替换为该快照的草稿。

直接输入不执行元数据 I/O。 空白草稿的发布和跟踪字段可以立即编辑,并且在必需的字段和映射验证后可以导入。 候选列表不会将缺失的来源视为错误或请求注意。

MusicBrainz 以匿名方式查詢,並嚴格維持每秒一次請求。Discogs 使用者鑰匙圈中的個人 token 驗證,依其速率限制調整與重試;被拒絕的 token 會被如此回報,讓 UI 可標記它,而不是讓搜尋安靜失敗。回應會按 session 快取,勝出的任何來源原始 JSON 會封存在資料庫中,以供未來重新解讀。

確認匯入會依序執行:

  1. 解碼驗證:每首曲目從頭到尾解碼;無法完整解碼的擷取會在寫入任何內容前匯入失敗(config flag 可停用)。
  2. 響度分析:在同一次解碼 pass 中測量每曲與每張專輯的 integrated loudness 與 true peak,儲存供 replay-gain 使用。
  3. 封面選擇:所選圖片(遠端、資料夾圖片或內嵌圖片)會重新算圖為顯示縮圖;如果原圖來自資料夾,原圖會保留在發行版本檔案中。
  4. 原子寫入:發行版本、曲目、名單、身分、格式、segments、檔案與封面會在同一個 transaction 中提交。沒有半匯入狀態。

發行版本會落地並就地引用使用者檔案。如果使用者選擇雲端管理,上傳會在提交後作為儲存轉換發生,而檔案的原始位元組始終是事實來源;使用者交給 bae 的任何內容都不會被刪除或改動。

每個發行版本會記錄其匯入資料夾結構(相對路徑與大小,與位置無關)的內容雜湊。重新掃描會用它標記已在資料庫中的資料夾,同一份擷取重新匯入時會找到並替換先前的發行版本,而不是建立重複項目。