为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

斯蒂芬大帝 2021-03-30 09:14:28
我在Windows 8上使用python 2.7.5运行mutagen 1.21和python 2.7.5,当我尝试使用pprint()和save()时出现以下错误。如果有人能弄清楚问题出在哪里,我也将感谢您如何设置mp3文件的标题,艺术家,专辑艺术家,专辑,日期和曲目号的示例代码。另外,是否可以不删除我不想更改的现有标签?如果没有,我需要一种方法来删除mp3文件,然后再将其与其他标签一起设置。代码from mutagen.mp3 import MP3p = "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 argument (got str instance instead)代码from mutagen.mp3 import MP3p = "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'
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

MP3类是ID3类的一种,正如本教程所说,它具有高度结构化,由于需要跟踪其元数据而不能简单地写入。我怀疑这是导致错误的原因-当您尝试保存或打印audio对象时,代码期望每个键都指向某个对象,但看到的只是一个简单的字符串。


相反,您需要指定要使用EasyMP3类,以便可以根据需要编辑密钥。该EasyMP3课程将字符串自动转换为找到适合的对象。来自文档的示例:


from mutagen.mp3 import EasyMP3 as MP3

audio = MP3("example.mp3")

audio["title"] = "An example"

audio.pprint()

但是,您只能编辑某些键。要获取可编辑的有效键的列表,请使用以下命令:


from mutagen.easyid3 import EasyID3

print '\n'.join(EasyID3.valid_keys.keys())

编辑:


免责声明:所有这些都未经测试,可能需要调整或调试。


要编辑EasyMP3中未包含的标签,您可以参考此图表并使用该ID3v2.3列下的4个字母的标签。


例如,要设置专辑艺术家,图表会指出4个字母的代码为TPE2。然后,您可以尝试:


import mutagen.id3 as id3

import mutagen.mp3 as mp3


audio = mp3.MP3("example.mp3")

audio.add(id3.TPE2(encoding=3, text=u"An example"))

audio.save()

但是,我不确定100%该encoding参数的作用,也无法找到有关此参数的任何文档,因此您的工作量可能会有所不同。


查看完整回答
反对 回复 2021-04-06
  • 1 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号