1

我正在尝试为歌曲分配图片,并且我有一些适用于 Mac 的代码,但不适用于 PC。

从 mutagen.easyid3 导入 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 上,这段代码有效,但是当我在我的 PC 上尝试时,它不会。任何帮助,将不胜感激。谢谢!

编辑 所以,在做了更多研究之后,我发现这段代码确实将专辑插图保存到 Mac 和 Windows 上的 mp3 文件中,但它保存在 ID3v2.4 中,Mac 可以读取,但 Windows 不能阅读,所以它似乎没有保存在 Windows 上。似乎在诱变保存功能中使用 v1=2 选项应该将标签保存在 ID3v1 中(请参阅本页 10 月 4 日的帖子。如果我更新专辑、艺术家、标题等的标签似乎可以工作,但是当我为专辑封面更新时,它仍然没有出现在 Windows 资源管理器中。有没有人在这方面有经验并且可以对此有所了解?谢谢。

4

1 回答 1

2

是的,不幸Windows的是不支持该版本。而不是只是将其保存在ID3v1尝试将其保存在ID3v3and中ID3v1。我在我的程序中使用它,它在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)
于 2014-11-20T04:57:40.400 回答