インポートパイプライン
インポートは、ファイルのバイトを変更せずに、ファイルのフォルダーをリリースに合ったカタログ項目へ変換します。このページは、利用ガイド で説明した流れの裏側にあるパイプラインです。
スキャン
このセクションへのリンク監視フォルダーはプラットフォームのファイルシステムイベントで監視され、変化がまとまった後に再スキャンされます。スキャンは最初からやり直すのではなく、既存の候補一覧と突き合わせます。スキャナーは、フォルダーを 1 つのリリース(音声が直下にある、または CD1/CD2 のようなディスク形サブフォルダーを持つ)として分類するか、コレクションとして再帰的に入ります。ファイルは拡張子で音声、アートワーク、文書に分類され、その後で音声が検査されます。重要なコーデックは拡張子ではなく、FFmpeg がバイト列から見つけたものです。部分ダウンロードを示すマーカーを含むフォルダーは、ダウンロード完了まで除外されます。
CUE シートは、1 つの音声イメージをトラックリストに変換します。パーサーはプリギャップとポストギャップ、トラックごとの演奏者と ISRC、単一ファイルイメージとトラックごとに 1 ファイルの CUE 配置の両方を扱います。トラック境界は CUE フレーム(1/75 秒)から正確なサンプル位置へ変換され、後で再生が使うバイト窓とサンプル窓になります。
タグではなく証拠
このセクションへのリンク識別は、フォルダーから 3 種類の証拠を 1 回の処理で読み取ります。
- disc ID: CD の正確なトラック配置の MusicBrainz フィンガープリントで、リッピングログまたは CUE シートから計算されます。
- バーコード: プラットフォームの画像認識機能でアートワークスキャンから読み取り、CUE の catalog フィールドからも読み取ります。
- テキスト: アートワーク OCR、フォルダー名とファイル名、リッピング内のテキストファイルからのカタログ番号と自由テキストです。
埋め込み音声タグは、意図的に証拠にはしません。タグ付けした人が何だと考えたかを表すもので、盤そのものを表すものではないからです。(ユーザーがリリースを不明としてインポートした場合のフォールバックメタデータには使われます。)
Disc ID とバーコードは同時に検索されます。Disc ID は MusicBrainz に、バーコードは MusicBrainz と Discogs の両方に同時に照会されます。結果は突き合わせられます。リリースグループで一致する結果は収束し、カタログ番号の一致は盤の一覧を絞り込み、シグナルの不一致は静かな最良推測ではなく、ユーザーに明示的な競合として表示されます。すべての結果は由来(disc ID、barcode、catalog match で見つかったなど)を持つため、UI はその行が提示される理由を説明できます。
ソース
このセクションへのリンクMusicBrainz は匿名で照会され、厳密に 1 秒 1 リクエストの間隔を守ります。Discogs はキーリング内のユーザー個人トークンで認証され、レート制限内で間隔調整と再試行を行います。拒否されたトークンはそのように報告されるため、UI は検索を静かに失敗させず、問題として示せます。レスポンスはセッションごとにキャッシュされ、勝ったソースの元 JSON は将来の再解釈のためにデータベースへアーカイブされます。
コミット
このセクションへのリンクインポートの確認後、次の順で実行されます。
- Decode verification: すべてのトラックを先頭から末尾までデコードします。完全にデコードできないリッピングは、何かを書き込む前にインポートに失敗します(設定フラグで無効化できます)。
- Loudness analysis: その同じデコード処理中に、トラックごとおよびアルバムごとの integrated loudness と true peak を測定し、replay-gain 用に保存します。
- Cover selection: 選ばれたアート(リモート、フォルダー画像、埋め込み)を表示用サムネイルに再描画します。フォルダー由来の場合、元画像はリリースのファイル群に保持されます。
- Atomic write: リリース、トラック、クレジット、身元、形式、セグメント、ファイル、カバーを 1 つのトランザクションでコミットします。半分だけインポートされた状態はありません。
リリースは、ユーザーのファイルをその場で参照する形で作成されます。ユーザーがクラウド管理対象を選んだ場合、アップロードはコミット後にストレージ遷移として行われます。元ファイルのバイト列はその間ずっと正とされ、ユーザーが bae に渡したものが削除または変更されることはありません。
リッピングの認識
このセクションへのリンク各リリースは、インポートしたフォルダーの構造(相対パスとサイズ、場所には依存しない)に対する内容ハッシュを記録します。再スキャンではそれを使って、すでにライブラリにあるフォルダーを示します。同じリッピングを再インポートした場合は、重複させず、以前のリリースを見つけて置き換えます。