Categories
通風報信

無可取代的音樂標籤編輯─Mp3tag

Mp3tag啟動畫面
Mp3tag啟動畫面

講到音樂標籤編輯軟體,大家一致推薦的就是Mp3tag了。
就連我在Linux底下也找不到可以與之相比的程式,所以也不嫌麻煩地用WINE跑來用。
這裡稍微紀錄一下我的使用方式。

首先從安裝開始吧,安裝的時候記得勾選「Explorer Context Menu」。
Mp3tag安裝
Mp3tag安裝

這樣使用時,就可以在專輯資料夾直接用右鍵選單呼叫Mp3tag出來編輯。

Mp3tag設定
Mp3tag設定

MP3標籤格式設定上則是全部使用ID3v2.4 UTF-8以維持各平台系統相容,但如果要遷就蹩腳的隨身播放器可以改用ID3v2.3 UTF-16,是說這年頭大家都改用智慧型手機當作播放器應該沒有這個問題了。

在開始埋頭苦幹前,如果檔案的標籤有殘缺或是亂碼,但是檔名本身保留有可用的資訊的話,可以使用「檔案名稱-標籤」按鈕來取得。

Mp3tag自檔名取得資訊
Mp3tag自檔名取得資訊

例如常用的%track%. %title%,也可以像%dummy% %title%這樣用%dummy%來略過不要的部份。

Mp3tag作業畫面
Mp3tag作業畫面

專輯圖片可以使用拖拉的方式將圖片檔案拖進欄位來,執行完每一項改變後都可以按下工具列上第一個按鈕存檔,順帶一提Mp3tag有強大的復原功能可以回復,都搞定後換按第二個按鈕將其它種類的多餘標籤(如ID3v1)清除。

接著我會再檢查一下有沒有缺漏或是該刪除的標籤欄位,全選專輯內所有檔案後按下右鍵選擇「標籤」,或是一首一首查看。

Mp3tag標籤檢視
Mp3tag標籤檢視

至於最後也是最實用的部份就是快速檔案命名了,在標籤資訊都完成後,在工具列上按下「標籤-檔案名稱」就能呼叫這個功能。

Mp3tag以標籤命名檔案
Mp3tag以標籤命名檔案

當我們按下這個按鈕後,會出現一個對話視窗,要你選擇格式字串。而格式字串可以提供的操作非常的多,除了基本的標籤欄位變數跟檔案資訊變數外,居然還提供了函式功能

我所使用的是這樣的判斷邏輯:
$validate($if($and(%discnumber%,$neql(%discnumber%,1/1)),$regexp(%discnumber%,/\d,)-,)$num(%track%,2) %title%,_)

那麼接下來,我就一步一步的解釋上面這一串東西,我的檔名命名習慣跟整理方式是沿襲iTunes預設的方式,在各個artist資料夾底下再開各個album的資料夾,所以我的檔案命名並不會加入這兩個變數。

一、基本的曲目跟標題
$num(%track%,2) %title%
這邊用到一個函式,$num(),將輸入的數字資訊轉成指定的位數,最常看到的用法就是將曲目固定成2或3位數,這樣看起來比較整齊,(官網範例是用3,不過除了大合輯外我還沒看過流行音樂專輯超過99個曲目的)曲目跟標題間空一格是iTunes的命名方式,也是我的習慣,這樣比較清楚也不會把分隔符號跟標題本身搞在一起。

二、加上碟片編號
$if(%discnumber%,%discnumber%-,)$num(%track%,2) %title%
針對精選輯之類會有超過一片光碟,而塞在同一個專輯資料夾裡面需要做區隔,這邊使用到$if()函式,判斷如果沒有光碟編號欄位資訊的話,就什麼也不寫,(即第二個逗號後的變數為空)有光碟編號欄位資訊就寫入編號後再加個「-」作分隔。

三、處理光碟編號資訊同時寫入最大值的情況
$if(%discnumber%,$regexp(%discnumber%,/\d,)-,)$num(%track%,2) %title%
像是iTunes等的軟體,在轉檔時,會將CDDB提供的光碟總數也寫入,舉例來說,三片裝時光碟編號大概就會長成1/3、2/3、3/3,得再作個處理。這裡用到$regexp()這個正規式判斷函式,把/後面的最大值(正規式的\d對應任何數字)跟「/」一起去掉(第二個逗號後面的變數為空,即代換為空字串,等同去掉)

四、處理只有一張光碟卻還是寫入「光碟編號/最大值」的情況
$if($and(%discnumber%,$neql(%discnumber%,1/1)),$regexp(%discnumber%,/\d,)-,)$num(%track%,2) %title%
這邊要先注意一下,這用法並不能處理只有一張光碟卻在光碟編號寫入「1」的情形,因為如果有三張光碟卻分別寫入「1」、「2」、「3」,這時就不能把「1」拿掉了。所以遇到只有一張光碟時,我不是修改成「1/1」,就是乾脆清空它。這回一口氣多用了兩個函式來判斷,因為要判斷有光碟編號卻又不是「1/1」的情況。
$neql()判斷光碟編號不是「1/1」,回傳true。
$and()當然就是要同時有光碟編號,而光碟編號又不是「1/1」的判斷啦。

五、代換掉容易造成問題的特殊字元
$validate($if($and(%discnumber%,$neql(%discnumber%,1/1)),$regexp(%discnumber%,/\d,)-,)$num(%track%,2) %title%,_)
最後用到的是$validate(),這個函式用來將「 /?*”<>|: 」等在軟體讀取時,容易造成問題的特殊字元代換成你指定的字元,我習慣將它們替換成底線。

Mp3tag的欄位多值輸入
Mp3tag的欄位多值輸入

另外值得一提的是Mp3tag在支援多筆數值的欄位輸入上,使用「\\」兩個反斜線作為分隔字元,當演出者有兩位以上就可以如圖中那樣輸入。
結尾再介紹一個非常實用的功能,就是右鍵選單「標籤複製」與「標籤貼上」,我的使用情境是全選一整張原本使用MP3格式的專輯檔案,將標籤複製到mp3tag本身的標籤剪貼簿,然後再開啟同樣一張專輯的無損FLAC檔案,確定檔案排序與原本的相同後,全選貼上剪貼簿內的標籤資訊,就能方便地將已經編輯好的標籤資訊搬移過來,快樂地淘汰舊檔案。

12 replies on “無可取代的音樂標籤編輯─Mp3tag”

受益良多, 感謝分享, 辛苦了!

另外想請教一下如果要批次處理檔名轉標籤,
檔案如果有track的編號要如何透過
%dummy% %title% 這個部份整批移除編號到標籤啊,
先感謝您的回覆了!

先感謝您的回覆, 弟再將問題說清楚一點,
例如原先mp3的檔名為
01.bye.mp3
02.hi.mp3
要如何透過批次檔名轉標籤的方式, 標籤全部只剩
bye.mp3
hi.mp3

再麻煩您不吝釋疑了….
感激不盡, 謝謝!

先感謝您的回覆,
您的意思是先將檔名轉標籤, 再用
%dummy%.%title%
抓到標題(不好意思, 請教一下這句是什麼意思, 是指用標籤轉檔案名稱嗎?, 因為弟試了一下除了檔名前多了一個.字外, 其餘沒有變化耶)

不好意思一直麻煩您釋疑….

弟先用「檔案名稱-標籤」
原先的檔名
01.bye.mp3
02.hi.mp3
標籤就一樣變成
01.bye.mp3
02.hi.mp3

後來再用「標籤-檔案名稱」,套用您的公式
%dummy%.%title%
檔名就變成
.01.bye.mp3
.02.hi.mp3

真不好意思一直麻煩您解釋 >_<

版大您好!
請問若我已重新編輯專輯名稱、曲名等並按了儲存鍵,在資料夾中觀看也確認已更改成新的名字,但過一陣子檔案又跳回原本的名稱是儲存設定上出了問題嗎?

WM 發表迴響 取消回覆