我正在尝试将图片分配给一首歌,我有一些代码可以在Mac上运行,但不能在PC上运行。
来自mutagen.easyid3 import EasyID3
来自mutagen.id3导入ID3,APIC,错误
来自mutagen.mp3导入MP3
def image_assigner(self):
song = MP3(self.file, ID3=ID3) # add ID3 tag if it doesn't exist try: song.add_tags() except error: print "we got an image error" pass song.tags.add( APIC( encoding=3, mime='image/jpeg', type=2, desc=u'Cover', data=open('example.JPG', 'rb').read() ) ) song.save()
所以在Mac上,这段代码可行,但是当我在我的电脑上试用它时,它不会。任何帮助,将不胜感激。谢谢!
修改的 因此,在做了一些研究之后,我发现这段代码确实将专辑封面保存到Mac和Windows上的mp3文件中,但它将它保存在Mac可以读取的ID3v2.4中,但Windows无法读取,所以它似乎没有保存在Windows上。似乎在mutagen保存功能中使用v1 = 2选项应该将标签保存在ID3v1中(参见this页面上的10月4日帖子)。如果我更新专辑,艺术家,标题等的标签似乎有效,但是当我为专辑封面时,它仍然没有出现在Windows资源管理器中。有没有人有这方面的经验,可以对此有所了解?感谢。
答案 0 :(得分:1)
不幸的是Windows
不支持该版本。而不是仅仅将其保存在ID3v1
中,请尝试将其保存在ID3v3
和ID3v1
中。我在我的程序中使用它,它在Windows 8
和OSX
中运行良好。
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error, TRCK, TIT2, TPE1, TALB, TDRC, TCON
audio = MP3([PATH_TO_FILE], ID3=ID3)
audio.tags.delete([PATH_TO_FILE], delete_v1=True, delete_v2=True)
audio.tags.add(
APIC(
encoding=3,
mime='image/jpeg',
type=3,
desc=u'Cover',
data=open([PATH_TO_COVER_IMAGE], 'rb').read()
)
)
audio.save([PATH_TO_FILE], v2_version=3, v1=2)