把 120 首現場曲目做成可離線播放清單:我留的腳本與失效邊界

这篇内容暂时只有 繁體中文 版本,以下是原文。

上個月整理一批 2016–2019 的現場錄音,來源主要是自己錄的 WAV 和幾場官方直播的音軌。全部丟進同一個資料夾後大約 30 GB、120 首左右,檔名長這樣:20170812_encore_take2.wav、live_2019-03-05_02.flac。問題不是聽不到,是每次想找「那場唱了什麼」都要重新翻資料夾,而且現場演出常有同一首歌在不同場次重複出現,光靠檔名根本分不出來。

我的做法是先建一份最小的清單,不碰音檔本身。用 ffprobe 抓時長跟取樣率,寫進一個 TSV,再手動補上演出日期、場次、曲序:

for f in *.wav *.flac; do
  d=$(ffprobe -v quiet -show_entries format=duration -of csv=p=0 "$f")
  printf '%s\t%s\n' "$f" "$d"
done > durations.tsv

清單長這樣,order 欄是我自己聽完排的,不是檔名順序:

date\tvenue\torder\ttitle\tfile\tduration
2017-08-12\tLegacy\t03\t某首安可曲\t20170812_encore_take2.wav\t312.4

有了這份 TSV,播放清單就是一行 awk 的事:

awk -F'\t' 'NR>1 {print $5}' setlist.tsv > playlist.m3u8

之後不管用 foobar2000 還是 mpv 都能直接吃。我把這份 TSV 當成唯一真相來源,音檔改名、換資料夾都只改這一欄。

為什麼不用現成的音樂庫管理器?因為現場錄音的 metadata 幾乎是空的,自動補標會把不同場次同一首歌併成一張專輯,反而更亂。手動建一份小清單,代價是 120 首要花一個晚上,好處是每個欄位我都知道它從哪來。

會失效的地方:ffprobe 對某些直播轉出來的檔案會把 duration 抓成 N/A,那幾首我是用播放器看實際長度手動填的。另外 TSV 用 tab 分隔,只要標題裡混進 tab 就會整欄錯位,我後來把標題裡的 tab 一律換成空格。還有一個坑:playlist.m3u8 只寫檔名,資料夾一搬就整份失效,現在我改成寫相對路徑。

你們在整理現場錄音時,是讓檔名帶資訊,還是另外維護一份清單?

0
赞同度 100% · 0 条评论 · 2 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。