我試圖用mutagen(用python 2.7.5)創建一個程序,假設歌曲的路徑是「... \ Artist \ Year Album \ Songnumber Title」。 mp3「,設置歌曲的藝術家,專輯藝術家,年份,專輯,歌曲編號和標題標籤,並保留流派標籤。我試圖用EasyID3做到這一點,但它沒有專輯封面。我也試着用普通的ID3來做,但我遇到了一些問題。下面是我使用的代碼:一些誘變劑標籤不起作用
from mutagen.id3 import ID3, TIT2, TPE2, TALB, TPE1, TYER, TDAT, TRCK, TCON, TORY, TPUB
p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"
audio = ID3(p)
audio.add(TIT2(encoding=3, text=u"t")) #TITLE
audio.add(TRCK(encoding=3, text=u"1")) #TRACK
audio.add(TPE1(encoding=3, text=u"a")) #ARTIST
audio.add(TALB(encoding=3, text=u"al")) #ALBUM
audio.add(TYER(encoding=3, text=u"2000")) #YEAR
audio.add(TDAT(encoding=3, text=u"2001")) #YEAR
audio.add(TORY(encoding=3, text=u"2002")) #ORIGYEAR
audio.add(TPE2(encoding=3, text=u"aa")) #ALBUMARTIST
audio.add(TCON(encoding=3, text=u"g")) #GENRE
audio.save()
這是我用來找出每個標籤的4個字母的代碼表:http://help.mp3tag.de/main_tags.html
標題,曲目,藝術家和專輯都能正常運作。除了這四個和「年份」之外,對於mp3文件的屬性>詳細信息中的所有字段,以前的值由save()清除,並且當我嘗試添加新值時,什麼也沒有發生。特別是「流派」和「專輯藝術家」字段不起作用。至於代碼爲TYER和TDAT的「年份」,除非該字段先是空的,然後再由TYER填充,否則它不會改變。代碼TORY的「ORIGYEAR」什麼都沒做。如果你用python代碼(audio.add(etc))改變它,或者事先手動進入屬性>細節,save()會清除非內置的字段,在諸如「技術性死亡金屬」或「mt3jr39kf390」等流派中,雖然它與諸如「經典搖滾」或「國家」之類的內置類型一起使用,但是諸如1或2的某些整數變成了這些內置類型。 (年份字段偶爾也會有相似的表現 - 如果您手動將字段值設置爲某些數字,則save()會將其更改爲不同的數字。我只在800以下的值觀察到這一點,但不是所有值 - 448和449保持不變,而500變爲320,700變爲448,12變爲10,而10變爲8.如果以這種方式將12變爲10,然後再次運行程序,則不會發生任何事情,但如果您手動更改它到一些其他的價值,並回到10,它會變成8.)
所以,問題是,我不能改變年份標籤,如果已經有東西,我不能改變專輯藝術家或流派標籤,我不知道如何做「獲取」命令,如果有的話,我可以保留流派標籤。
此外,EasyID3也存在相同的問題 - save()清除某些字段並且隨着流派和年份而異常地行爲。唯一的區別似乎是即使字段不爲空也可以更改年份。這裏是我使用的代碼:
from mutagen.easyid3 import EasyID3
p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"
audio = EasyID3(p)
audio["title"] = u"t"
audio["artist"] = u"a"
audio["album"] = "al"
audio["date"] = u"2000"
audio["tracknumber"] = u"1"
audio["genre"] = u"g"
audio.save()
print '\n'.join(EasyID3.valid_keys.keys())
這並修復與是否有一些有一年沒有改變的問題。現在剩下的就是「專輯藝術家」和「流派」標籤的問題。 (順便說一下,這是它的保存('111.mp3')。) – Blrp