1

我正在做一个程序来使用 Python 编辑 mp3 上的标签,现在我正在使用 mutagen 模块,为了使用 id3v4 标准将图像作为封面嵌入到 mp3 文件中,我必须使用这个添加 APIC 框架。

但我不明白我必须在参数中输入什么encodingmimedata

我从这里查看了一个示例并想出了这个:

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))

但是我不知道前3个是什么意思?为什么我放"utf-8"的时候不起作用?并且该open()函数不起作用,它返回如下错误:

Traceback (most recent call last):
  File "<pyshell#104>", line 1, in <module>
    frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))
  File "C:\Python34\lib\site-packages\mutagen\id3\_frames.py", line 65, in __init__
    setattr(self, checker.name, checker.validate(self, val))
  File "C:\Python34\lib\site-packages\mutagen\id3\_specs.py", line 184, in validate
    raise TypeError("%s has to be bytes" % self.name)
TypeError: data has to be bytes

当我把"b"

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","b"))

它返回

Traceback (most recent call last):
  File "<pyshell#106>", line 1, in <module>
    frame= APIC("utf-8","image/jpg",3,"Cover",open("albumcover.jpg","b"))
ValueError: Must have exactly one of create/read/write/append mode and at most one plus

那我应该放什么?

而且我也试过open("albumcover.jpg").read()了,还是不行。

4

2 回答 2

0

您需要以 - read(rb) 或write(wb) 或append(ab) 模式(b - 表示它是一个二进制文件并且我们从中读取字节而不是字符串)打开文件。

对于你的情况,我认为read模式就足够了,所以试试 -

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","rb").read())

rb表示我们需要以读取模式打开文件并且它是一个二进制文件,调用它的函数.read()会导致它从文件中读取字节并返回它。

于 2015-06-25T09:46:21.327 回答
0

该参数3表示,它是专辑的封面,请阅读文档

于 2015-06-25T09:47:56.883 回答