使用mutagen mac与pc分配专辑图片

时间:2013-01-16 22:51:05

标签: python mutagen

我正在尝试将图片分配给一首歌,我有一些代码可以在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资源管理器中。有没有人有这方面的经验,可以对此有所了解?感谢。

1 个答案:

答案 0 :(得分:1)

不幸的是Windows不支持该版本。而不是仅仅将其保存在ID3v1中,请尝试将其保存在ID3v3ID3v1中。我在我的程序中使用它,它在Windows 8OSX中运行良好。

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)