首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mutagen的save()不为MP3文件设置或更改cover

Mutagen的save()不为MP3文件设置或更改cover
EN

Stack Overflow用户
提问于 2020-01-20 00:31:41
回答 2查看 1.2K关注 0票数 5

我试图使用诱变剂来更改ID3 (版本2.3),以如下方式覆盖一堆MP3文件的art:

代码语言:javascript
复制
from mutagen.mp3 import MP3
from mutagen.id3 import APIC

file = MP3(filename)

with open('Label.jpg', 'rb') as albumart:
    file.tags['APIC'] = APIC(
        encoding=3,
        mime='image/jpeg',
        type=3, desc=u'Cover',
        data=albumart.read()
    )
file.save(v2_version=3)

但是,该文件(或至少是APIC标记)保持不变,通过读取该标记进行检查。但是,在系统文件资源管理器中,该文件确实显示了更新的Date modified。如何使诱变剂能够正确更新封面艺术?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-04 21:35:17

我需要设置"APIC:“标记的封面,而不是"APIC”标记(我猜IDv2.3是如何指定的)。

票数 0
EN

Stack Overflow用户

发布于 2020-02-05 10:25:26

这个问题的出现是由于ID3规范声明:

可能有几张图片附加到一个文件中,每个图片在各自的"APIC“帧中,但只有一个具有相同内容描述符的图片。

这意味着ID3必须使用['APIC:Description']存储APIC标记。此外,添加标记的推荐方法不是像问题中的示例那样直接通过字典接口添加标记,而是使用ID3.add()函数。使用ID3对象还允许我们使用ID3.getall()函数来检查标记是否已正确附加。

代码语言:javascript
复制
from mutagen.id3 import APIC, ID3
file = ID3("test.mp3")

print(file.getall('APIC')) # [] (assuming no APIC tags attached)

with open('image.jpg', 'rb') as albumart:
    file.add(APIC(
        encoding=3,
        mime='image/jpeg',
        type=3, desc=u'Cover',
        data=albumart.read()
    ))

print(file.getall('APIC'))
# [APIC(encoding=<Encoding.UTF16: 1>, mime='image/jpeg', type=<PictureType.COVER_FRONT: 3>, desc='Cover', data=...]
file.save(v2_version=3)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59815698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档