在 python 中编辑 ID3-mp3 - 最新包?

Posted

技术标签:

【中文标题】在 python 中编辑 ID3-mp3 - 最新包?【英文标题】:ID3-mp3 editing in python - up-to-date package? 【发布时间】:2013-06-24 15:58:24 【问题描述】:

编辑:试图让这些库在 python 3.3 中工作显然是错误的方法,我现在的问题完全不同,所以我将在一个新问题中重新提出。

我希望能够使用 python 命令编辑 mp3 文件的 ID3 标签,例如 setAlbumName("folderPath\song.mp3", "albumname")。到目前为止,我已经尝试过 Mutagen、PyID3、pytagger、eyeD3,它们似乎都已过时,因为由于语法错误导致安装失败。我试图在 eyeD3 中修复它,但我遇到了死胡同:http://i41.tinypic.com/o6zklv.png(在我修复了所有打印和“除了错误,e”等之后的第二个屏幕截图)。

我对 Mutagen 进行了同样的尝试,但是当将“raise KeyError, key”替换为“raise KeyError as key”不起作用时,我也遇到了障碍。

我什至不知道该怎么做这个(pytagger):http://i41.tinypic.com/29fz7mh.png

这似乎表明我的 python 安装有问题?不深究。

那么,有没有人愿意给我指出一个有效的 ID3 包,或者尝试修复一个过时的包?

(另外,我尝试了“python setup.py install”和“setup.py install”,似乎没有什么区别。我在 Windows 8 上。)

编辑:从下面的截图,加上源代码(使用 python 2.7.5 的诱变剂)

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 7, 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】:

mutagen 非常适合我使用 Python 2.7。

例子: https://code.google.com/p/mutagen/wiki/Tutorial

from mutagen.mp3 import MP3

audio = MP3("example.mp3")
audio["title"] = "An example"
audio.pprint()
audio.save()

附言请发布代码示例,以便人们可以提供帮助.. 不是屏幕截图的链接。

p.p.s.看起来您正在尝试将 Python2 库安装到 Python3 中。

【讨论】:

那你怎么安装呢?正如我所说,当我编写“python setup.py install”或“setup.py install”时它对我不起作用,因为它似乎使用了过时的语法,例如打印“stuff”而不是 print(“stuff”),和 'except Error, e' 而不是 'except Error as e'。编辑:nvm,看到你使用 python 2.7。 好的,我尝试安装 python 2.7,使其成为默认值并安装诱变剂,但它不起作用。 (链接到屏幕截图,因为我没有足够的字符来复制回溯。)我用你给出的例子得到了第一个回溯,当我删除 audio.pprint() 时得到第二个回溯:i41.tinypic.com/301ev5i.png 我告诉过你,我没有足够的字符来复制回溯(最多 600 个)。我还告诉过你,我的代码就是你发布的,除了我显然用我计算机上的 mp3 文件的路径替换了“example.mp3”,第二个错误来自我删除 audio.pprint() 时。如果我复制并重新发布您发布的代码会有帮助吗? 请了解如何正确使用本网站。我已经完成了帮助。 外部链接(包括屏幕截图)从网络上消失了,随着时间的推移,问题变得无关紧要。这不是供您个人使用的众包调试器。【参考方案2】:

Mutagen 还有一个 EasyID3 工具,可以处理简单的任务,比如更改文件的标题:

from mutagen.easyid3 import EasyID3
f = EasyID3("file.mp3")
f["title"] = u"Some title"
f.save()

像魅力一样工作。但它的功能非常有限。 在http://code.google.com/p/mutagen/wiki/Tutorial查看更多示例

【讨论】:

以上是关于在 python 中编辑 ID3-mp3 - 最新包?的主要内容,如果未能解决你的问题,请参考以下文章

2018年最新Python书单

CentOS 7.7 最新版本发布

python3Django中使用Uediter百度富文本编辑器的配置方法

python3Django中使用Uediter百度富文本编辑器的配置方法

最新的 Android Studio 中没有布局编辑器

最新selenium+验证码识别模拟登陆B站