Linux中國

如何使用 metaflac 管理音樂標籤

很久以來我就將 CD 翻錄到電腦。在此期間,我用過幾種不同的翻錄工具,觀察到每種工具在標記上似乎有不同的做法,特別是在保存哪些音樂元數據上。所謂「觀察」,我是指音樂播放器似乎按照有趣的順序對專輯進行排序,它們將一個目錄中的曲目分為兩張專輯,或者產生了其他令人沮喪的煩惱。

我還看到有些標籤非常不明確,許多音樂播放器和標籤編輯器沒有顯示它們。即使這樣,在某些極端情況下,它們仍可以使用這些標籤來分類或顯示音樂,例如播放器將所有包含 XYZ 標籤的音樂文件與不包含該標籤的所有文件分離到不同的專輯中。

那麼,如果標記應用和音樂播放器沒有顯示「奇怪」的標記,但是它們受到了某種影響,你該怎麼辦?

Metaflac 來拯救!

我一直想要熟悉 metaflac,它是一款開源命令行 FLAC 文件元數據編輯器,這是我選擇的開源音樂文件格式。並不是說 EasyTAG 這樣出色的標籤編輯軟體有什麼問題,但我想起「如果你手上有個鎚子……」這句老話(LCTT 譯註:指如果你手上有個鎚子,那麼所有的東西看起來都像釘子。意指人們慣於用熟悉的方式解決問題,而不管合不合適)。另外,從實際的角度來看,帶有 ArmbianMPD 的小型專用伺服器,音樂存儲在本地、運行精簡的僅限音樂的無頭環境就可以滿足我的家庭和辦公室的立體音樂的需求,因此命令行元數據管理工具將非常有用。

下面的截圖顯示了我的長期翻錄過程中產生的典型問題:Putumayo 的哥倫比亞音樂彙編顯示為兩張單獨的專輯,一張包含單首曲目,另一張包含其餘 11 首:

![Album with incorrect tags](/data/attachment/album/201911/16/093653dz77fmufn82k373k.png "Album with incorrect tags")

我使用 metaflac 為目錄中包含這些曲目的所有 FLAC 文件生成了所有標籤的列表:

rm -f tags.txt
for f in *.flac; do
        echo $f >> tags.txt
        metaflac --export-tags-to=tags.tmp "$f"
        cat tags.tmp >> tags.txt
        rm tags.tmp
done

我將其保存為可執行的 shell 腳本(請參閱我的同事 David Both 關於 Bash shell 腳本的精彩系列專欄文章,特別是關於循環這章)。基本上,我在這做的是創建一個文件 tags.txt,包含文件名(echo 命令),後面是它的所有標籤,然後是下一個文件名,依此類推。這是結果的前幾行:

A Guapi.flac
TITLE=A Guapi
ARTIST=Grupo Bahia
ALBUMARTIST=Various Artists
ALBUM=Putumayo Presents: Colombia
DATE=2001
TRACKTOTAL=12
GENRE=Latin Salsa
MUSICBRAINZ_ALBUMARTISTID=89ad4ac3-39f7-470e-963a-56509c546377
MUSICBRAINZ_ALBUMID=6e096386-1655-4781-967d-f4e32defb0a3
MUSICBRAINZ_ARTISTID=2993268d-feb6-4759-b497-a3ef76936671
DISCID=900a920c
ARTISTSORT=Grupo Bahia
MUSICBRAINZ_DISCID=RwEPU0UpVVR9iMP_nJexZjc_JCc-
COMPILATION=1
MUSICBRAINZ_TRACKID=8a067685-8707-48ff-9040-6a4df4d5b0ff
ALBUMARTISTSORT=50 de Joselito, Los
Cumbia Del Caribe.flac

經過一番調查,結果發現我同時翻錄了很多 Putumayo CD,並且當時我所使用的所有軟體似乎給除了一個之外的所有文件加上了 MUSICBRAINZ_* 標籤。(是 bug 么?大概吧。我在六張專輯中都看到了。)此外,關於有時不尋常的排序,我注意到,ALBUMARTISTSORT 標籤將西班牙語標題 「Los」 移到了標題的最後面(逗號之後)。

我使用了一個簡單的 awk 腳本來列出 tags.txt 中報告的所有標籤:

awk -F= 'index($0,"=") > 0 {print $1}' tags.txt | sort -u

這會使用 = 作為欄位分隔符將所有行拆分為欄位,並列印包含等號的行的第一個欄位。結果通過使用 sort 及其 -u 標誌來傳遞,從而消除了輸出中的所有重複項(請參閱我的同事 Seth Kenlon 的關於 sort 程序的文章)。對於這個 tags.txt 文件,輸出為:

ALBUM
ALBUMARTIST
ALBUMARTISTSORT
ARTIST
ARTISTSORT
COMPILATION
DATE
DISCID
GENRE
MUSICBRAINZ_ALBUMARTISTID
MUSICBRAINZ_ALBUMID
MUSICBRAINZ_ARTISTID
MUSICBRAINZ_DISCID
MUSICBRAINZ_TRACKID
TITLE
TRACKTOTAL

研究一會後,我發現 MUSICBRAINZ_* 標籤出現在除了一個 FLAC 文件之外的所有文件上,因此我使用 metaflac 命令刪除了這些標籤:

for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ALBUMARTISTID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ALBUMID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_ARTISTID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_DISCID "$f"; done
for f in *.flac; do metaflac --remove-tag MUSICBRAINZ_TRACKID "$f"; done

完成後,我可以使用音樂播放器重建 MPD 資料庫。結果如下:

![Album with correct tags](/data/attachment/album/201911/16/093702uly0snz1jkezuvqs.png "Album with correct tags")

完成了,12 首曲目出現在了一張專輯中。

太好了,我很喜歡 metaflac。我希望我會更頻繁地使用它,因為我會試圖去糾正最後一些我弄亂的音樂收藏標籤。強烈推薦!

關於音樂

我花了幾個晚上在 CBC 音樂(CBC 是加拿大的公共廣播公司)上收聽 Odario Williams 的節目 After Dark。感謝 Odario,我聽到了讓我非常享受的 Kevin Fox 的 Songs for Cello and Voice。在這裡,他演唱了 Eurythmics 的歌曲 「Sweet Dreams(Are Made of This)」。

我購買了這張 CD,現在它在我的音樂伺服器上,還有組織正確的標籤!

via: https://opensource.com/article/19/11/metaflac-fix-music-tags

作者:Chris Hermansen 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國