如何使用python 3添加专辑封面到mp3文件?

lb3vh1jj  于 2023-01-29  发布在  Python
关注(0)|答案(3)|浏览(241)

我想知道用什么样的模块来设置一张图片作为一个特定的mp3文件的专辑封面,Mutagen似乎是一个流行的选择,但它似乎在python 3上不起作用,我也找不到任何文档。

xtupzzrd

xtupzzrd1#

下面是我使用的代码的一个修改版本,你可能需要修改example.mp3cover.jpg(也许还需要修改mime类型):

import eyed3
from eyed3.id3.frames import ImageFrame

audiofile = eyed3.load('example.mp3')
if (audiofile.tag == None):
    audiofile.initTag()

audiofile.tag.images.set(ImageFrame.FRONT_COVER, open('cover.jpg','rb').read(), 'image/jpeg')

audiofile.tag.save()

tag.images.set()接受三个参数:

*图片类型:这是它的图像类型。3是封面艺术的代码。你可以在这里找到它们。
*图像数据:这是图像的二进制数据,在本例中,我使用open().read()加载了这个数据。
*哑剧类型:这是二进制数据的文件类型。如果它是jpg文件,则需要image/jpeg,如果它是png文件,则需要image/png

vs91vp4v

vs91vp4v2#

除了上面的答案,下面是我苦苦挣扎了两天的答案:

  • 你必须将ID3版本设置为“V2.3”,否则照片不会显示为文件图标。
  • 此外,你必须为每个MP3文件设置一个不同的专辑名称,因为否则音乐播放器会为所有音乐文件显示相同的封面图像,即使它们没有封面图像。
  • 你最好也设置一个标题,因为文件名不会在音乐播放器中显示。
  • 使用audio.initTag()也可以擦除所有 meta信息,如果你想这样做的话。
audio.initTag()
audio.tag.title = u'Your Title'
audio.tag.album = u'Your Album Name'
audio.tag.images.set(3, open("cover.jpg", 'rb').read(), 'image/jpeg')
audio.tag.save(version=eyed3.id3.ID3_V2_3)
jdg4fx2g

jdg4fx2g3#

在撰写本文时,mutagen已经可以很好地与python3配合使用。
https://stackoverflow.com/a/47346660/191246复制粘贴,并为python3所需的图像添加了二进制文件模式。

from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error

audio = MP3(path_mp3, ID3=ID3)
audio.tags.add(
    APIC(
        encoding=3,  # 3 is for utf-8
        mime="image/png",  # can be image/jpeg or image/png
        type=3,  # 3 is for the cover image
        desc='Cover',
        data=open("cover.png", mode='rb').read()
    )
)

注意:您可能希望 Package 在try-except中,以便捕获将从没有ID3标记的MP3文件中抛出的ID3NoHeaderError。在这种情况下,您可以创建标记,例如,tags = ID3()...后跟tags.save('myaudio.mp3')

相关问题