【问题标题】:using edeD3 to change encoding of mp3 tags使用 edeD3 更改 mp3 标签的编码
【发布时间】:2011-08-19 22:49:12
【问题描述】:

我找到了this question,这是我的确切起点:mp3 文件上的中文编码元数据。我想将我的所有元数据重新编码为 utf-8,以便 Banshee 可以读取它。

我不知道如何让 eyeD3 做到这一点。我可以根据之前的链接解码单个标签,但我不能让 eyeD3 更改 mp3 文件本身的实际文本编码,因此可以以正确的编码重写这些标签。我尝试将所有数据读入变量(下面,'t' 是正确编码的标题),然后调用:

tag.clear()
tag.update(eyeD3.ID3_V2_4)
tag.setTitle(t)

这告诉我:ValueError: ID3 vNone.None is not supported. 不是我所期待的。

我试过tag.setTextEncoding('utf-8'),但它告诉我eyeD3.tag.TagException: Invalid encoding。我尝试的所有其他编码都会给我相同的错误消息。

eyeD3.TAGS2_2_TO_TAGS_2_3_AND_4 看起来很有希望,但它是一本对我来说毫无意义的神秘字母代码字典。

谁能告诉我如何将标签的版本更改为支持 utf-8 的版本,然后将文件编码更改为 utf-8 并将元数据重新写入?

【问题讨论】:

  • 好的,我已经能够使用库的命令行版本来设置文件的版本、编码和元数据,但奇怪的是无法读取现有数据。即,我可以使用python库读取数据但不写入数据,使用命令行库写入数据但不读取数据......
  • 啊啊啊啊……我想通了。设置文本编码应类似于tag.setTextEncoding(eyeD3.UTF_8_ENCODING)。对不起~

标签: encoding mp3 metadata


【解决方案1】:

Eric Abrahamsen 发现,设置文本编码应该类似于
tag.setTextEncoding(eyeD3.UTF_8_ENCODING) 而不是
tag.setTextEncoding('utf-8')

【讨论】:

    【解决方案2】:

    看起来有人已经创建了这样的东西:

    http://code.google.com/p/id3-to-unicode/

    它非常易于使用。只需从网站下载最新版本的脚本,确保安装了 eyeD3 和 chardet python 模块(在 ubuntu 中快速sudo apt-get install python-eyed3 python-chardet 为我做了诀窍),并使用 -h 标志运行脚本以查看如何使用它。

    我唯一的抱怨是脚本假定您的音乐像艺术家/专辑/01 曲目名称.mp3 那样组织,并使用路径/文件信息来填充缺失的标签。我在最新版本 (http://id3-to-unicode.googlecode.com/files/id3_to_unicode_1.1.py) 中通过注释掉第 126-138 行禁用了此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多