我有此文件“ image.jp 这个.mp3文件:
“绿色节-我来了[官方音乐视频] .mp3”
在“测试”目录中
我已经使用eyeD3库成功设置了标签为作者,标题,专辑等。 然后我尝试设置Cover Art。
我尝试了两种可能性,但没有一种可行: 第一个: Mutagen :
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error
complete_file_path = "test\\"+"Green Day - When I Come Around [Official Music Video].mp3"
path_to_thumb_wf = "test\\"+"image.jpg"
audio = MP3(complete_file_path, ID3=ID3)
# add ID3 tag if it doesn't exist
try:
audio.add_tags()
except error:
pass
print(path_to_thumb_wf)
audio.tags.add(
APIC(
encoding=3, # 3 is for utf-8
mime='image/jpg', # image/jpeg or image/png
type=3, # 3 is for the cover image
desc=u'Cover',
data=open(path_to_thumb_wf, 'rb').read()
)
)
audio.save(v2_version=3)
以及使用 eyeD3
的解决方案audiofile = eyed3.load(complete_file_path)
# read image into memory
imagedata = open(path_to_thumb_wf,"rb").read()
# append image to tags
audiofile.tag.images.set(3,imagedata,"image/jpeg", u"you can put a description here")
audiofile.tag.save()
我在Windows 10上使用python 3.5.2。我不知道它是否会影响结果,但是无论如何,我会说,这首歌已经有了我想要更改的封面。
答案 0 :(得分:0)
一个文件可能有几张图片,每张图片都在各自的“ APIC”框架中,但是只有一张具有相同的内容描述符。可能只有一张图片,其图片类型分别声明为图片类型$ 01和$ 02。
在v2.3中,IIRC实际上没有在任何地方记录“内容描述符”,因此,不同的客户端在这里可能做的事情略有不同,但是大多数工具会将其视为图片类型加上描述字符串,或者视为整个标头(文本编码,MIME类型,图片类型和编码描述)作为二进制Blob。 (有些工具只是忽略它,而允许您使用完全相同的帧头存储图片,但我认为与Mutagen无关)。
无论如何,这意味着您可能只是添加了另一张名为Cover (front)
的{{1}}图片,而不是替换任何现有的图片。
您尚未说明如何查看文件。但是我猜您正在尝试在Windows Media Player或iTunes或其他播放器中打开它,或在Windows资源管理器中查看它(我想只是要求WMP读取标签),或者类似的东西?
几乎所有此类工具在面对多张图片时,仅向您展示第一个。 (其中有些甚至不区分图片类型,并向您显示 any 类型的第一张图片,即使它是32x32文件图标…)
但是,有些人确实可以查看其他图片。例如,在iTunes中,如果您在轨道上'Cover'
或Get Info
,请转到Properties
或类似标签(抱歉,但名称因版本而异),您可以看到标签中的所有图片。
无论如何,如果您想用不同的API替换APIC,则需要完全匹配描述符(并且同样,对于不同的库来说可能意味着不同的事情……),或者更简单地,只需删除旧版本以及添加新版本。
还需要注意的另一件事:iTunes和WMP缓存的封面,并假设一旦导入文件就永远不会改变。 WMP还有很多可以覆盖文件中图像的功能,例如同一目录中正确使用UUID的文件夹封面图像。