鉴于本人素ID3 tag严重洁癖者,之前有用easytag手动给几千个mp3改过tag= = easytag的界面不错,就是不能批量修改,导致那两天改的我手都酸的不行了….入了n1以后有一点不爽的就是不管啥音乐软件,听歌的时候就是抓不到一张封面,那个默认的灰色封面实在让我火大,就用python写了个从豆瓣抓封面图片直接嵌入ID3 tag的程序,一劳永逸了~~
读写ID3 tag信息
对ID3信息的读取和修改依赖了mutagen库,当然用之前还是要对ID3标准有一个基本的了解。
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error
audio = MP3(self.filename, ID3=ID3)
try:
audio.add_tags()
except error:
pass
有可能音乐文件一开始并没有tag(虽然机率比较小),所以调用add_tags()方法初始化一下,一般情况下都会抛出个error,提示已经有tag了。
album = self.audio['TALB'][0]
frames = self.audio.tags.getall("APIC")
for frame in frames:
ext = ".img"
if frame.mime == "image/jpeg" or frame.mime == "image/jpg":
ext = ".jpg"
elif frame.mime == "image/png":
ext = ".png"
elif frame.mime == "image/gif":
ext = ".gif"
如果tag中已经包含唱片标题信息,那么audio.keys()的返回结果中就会包含”TALB”这一项,其他还有比如”TLE1″(表演者),“TCON”(流派)等等。ID3标准中规定代表唱片封面信息的帧结构如下:
audio.tags.add(APIC(encoding = 3,mime = "image/jpeg",type = 3, desc = u'Cover',data=imagedata)) audio.save()
encoding = 3表示utf8编码,mime可以为”image/jpeg”(“image/jpg”)或者”image/png”格式,type=3表示写入的是front cover,desc是描述信息,data是图片的二进制数据,可以从某个uri读取,也可以从本地读取。




















Recent Comments