【问题标题】:Mutagen's save() does not set or change cover art for MP3 filesMutagen 的 save() 不会设置或更改 MP3 文件的封面
【发布时间】:2020-05-06 00:21:08
【问题描述】:

我正在尝试使用Mutagen 通过以下方式更改一堆 MP3 文件的 ID3(2.3 版)封面:

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。如何让 Mutagen 正确更新封面?

【问题讨论】:

    标签: python mp3 mutagen id3v2 id3-tag


    【解决方案1】:

    由于ID3 specification 声明:

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

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

    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)
    

    【讨论】:

      【解决方案2】:

      我需要将封面设置为“APIC:”标签,而不是“APIC”标签(我猜这就是 IDv2.3 的指定方式)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-28
        • 2010-11-10
        • 1970-01-01
        • 2016-10-20
        • 1970-01-01
        • 2015-07-05
        • 2014-11-07
        • 1970-01-01
        相关资源
        最近更新 更多