猿问

Mutagen pprint()和save()错误(python 2.7.5)

我在Windows 8上使用python 2.7.5运行mutagen 1.21和python 2.7.5,当我尝试使用pprint()和save()时出现以下错误。如果有人能弄清楚问题出在哪里,我也将感谢您如何设置mp3文件的标题,艺术家,专辑艺术家,专辑,日期和曲目号的示例代码。另外,是否可以不删除我不想更改的现有标签?如果没有,我需要一种方法来删除mp3文件,然后再将其与其他标签一起设置。


代码


from mutagen.mp3 import MP3

p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"

audio = MP3(p)

audio["title"] = "An example"

audio.pprint()

audio.save()

追溯


Traceback (most recent call last):

  File "id3tag.py", line 5, in <module>

    audio.pprint()

  File "C:\Python27\lib\site-packages\mutagen\__init__.py", line 138, in pprint

    try: tags = self.tags.pprint()

  File "C:\Python27\lib\site-packages\mutagen\id3.py", line 190, in pprint

    frames = list(map(Frame.pprint, self.values()))

TypeError: unbound method pprint() must be called with Frame instance as first a

rgument (got str instance instead)

代码


from mutagen.mp3 import MP3

p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"

audio = MP3(p)

audio["title"] = "An example"

audio.save()

追溯


Traceback (most recent call last):

  File "id3tag.py", line 5, in <module>

    audio.save()

  File "C:\Python27\lib\site-packages\mutagen\__init__.py", line 132, in save

    return self.tags.save(filename, **kwargs)

  File "C:\Python27\lib\site-packages\mutagen\id3.py", line 370, in save

    framedata = [self.__save_frame(frame) for (key, frame) in frames]

  File "C:\Python27\lib\site-packages\mutagen\id3.py", line 461, in __save_frame


    framedata = frame._writeData()

AttributeError: 'str' object has no attribute '_writeData'


斯蒂芬大帝
浏览 147回答 1
1回答

繁星点点滴滴

MP3类是ID3类的一种,正如本教程所说,它具有高度结构化,由于需要跟踪其元数据而不能简单地写入。我怀疑这是导致错误的原因-当您尝试保存或打印audio对象时,代码期望每个键都指向某个对象,但看到的只是一个简单的字符串。相反,您需要指定要使用EasyMP3类,以便可以根据需要编辑密钥。该EasyMP3课程将字符串自动转换为找到适合的对象。来自文档的示例:from mutagen.mp3 import EasyMP3 as MP3audio = MP3("example.mp3")audio["title"] = "An example"audio.pprint()但是,您只能编辑某些键。要获取可编辑的有效键的列表,请使用以下命令:from mutagen.easyid3 import EasyID3print '\n'.join(EasyID3.valid_keys.keys())编辑:免责声明:所有这些都未经测试,可能需要调整或调试。要编辑EasyMP3中未包含的标签,您可以参考此图表并使用该ID3v2.3列下的4个字母的标签。例如,要设置专辑艺术家,图表会指出4个字母的代码为TPE2。然后,您可以尝试:import mutagen.id3 as id3import mutagen.mp3 as mp3audio = mp3.MP3("example.mp3")audio.add(id3.TPE2(encoding=3, text=u"An example"))audio.save()但是,我不确定100%该encoding参数的作用,也无法找到有关此参数的任何文档,因此您的工作量可能会有所不同。
随时随地看视频慕课网APP

相关分类

Python
我要回答