python - 使用 mutagen mac 与 pc 分配专辑封面

标签 python mutagen

我正在尝试将图片分配给歌曲,并且我有一些可以在 Mac 上运行的代码,但不能在 PC 上运行。

from mutagen.easyid3 import EasyID3

from mutagen.id3 import ID3, APIC, error

from mutagen.mp3 import 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 中(请参阅 this 页面上的 10 月 4 日帖子)。如果我更新专辑、艺术家、标题等标签,它似乎可以工作,但是当我为专辑插图执行此操作时,它仍然不会显示在 Windows 资源管理器中。有没有人在这方面有经验并且可以对此有所启发?谢谢。

最佳答案

是的,不幸的是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)

关于python - 使用 mutagen mac 与 pc 分配专辑封面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14369366/

相关文章:

python - 在 Python 中递归生成每个井字游戏

java - 如何在 Airflow 中运行 Spark 代码?

python - 为什么我无法显示 USLT 歌词

python - 在 Python 3 中使用 Mutagen 将专辑封面嵌入到 mp3

python - Mutagen pprint() 和 save() 错误 (python 2.7.5)

Python 元素树 : Parsing a string and getting ElementTree instance

python - 有没有办法从 python 类生成 C++ 类并将其绑定(bind)到编译时间?

python - 将线段添加到绘图的简洁方法(使用 python/jupyter notebook)?

python - 删除音乐文件元数据标签

python - 诱变剂 key 错误