星期三, 2月 05, 2014

puddletag 的編碼轉換

puddletag 跟 Windows 上的 mp3tag 軟體一樣都是編輯 MP3 id3 資訊的工具,Linux 上同類的軟體有 easytag。這套軟體的介面基本上就是向 mp3tag 看齊,有使用過 mp3tag 的話,使用上應該不太有困難。
除了介面與 mp3tag 相似以外,我覺得 puddletag 最大的特色是 action/function 這功能,你可以用 action 跟 function 組合出各式各項快捷的新組合,讓你在編輯上能更方便,例如可以對歌曲重新編 track 並且填入 album 。
我在使用時,遇到有亂碼的問題,我大概知道是編碼的問題,之前是使用 big5 填 id3 tag v1,所以如果沒 id3 tag v2 的欄位時,會拿 id3 tag v1 的欄位來用,這時候因為不知道要從何種編碼轉為 unicode ,就會有亂碼的發生。本來我已經捲起袖子要寫 Plugin 來解決問題了,後來看了 puddletag 本身提供的 function,發現已經有 "Convert from non-standard encoding" 這個 function,只是裏面的選項沒有 big5 可以選。
追蹤 puddletag 的原始碼,這個 function 是定義在 /usr/share/pyshared/puddlestuff/functions.py 裡,內容大致是這樣:
因此,只要在 "&Encoding, combo," 後加上 "big5," 就可以多出 big5 的選項,日文就是 shiftjis,簡體中文就是 gb2312。有了這選項,編碼轉換的功能也可以順利運作了。為了避免更動原始碼,就寫了一個 plugin function,其實只是增加多的編碼,網址在 https://github.com/elleryq/puddletag_pluginfunction_extended_enconvert

沒有留言: