Python 的 eyesed3 包未正确设置 ID3 元数据

2023-12-19

为此,我使用 Python 2.7.13、Windows 10 和 eyed3 包(如文档所示)here http://eyed3.nicfit.net/.

Goal:我正在尝试创建一个脚本,可以为缺少信息的 MP3 文件输入任何所需的 ID3 元数据。

Problem:该脚本似乎可以正确更新元数据,但无法将信息添加到 MP3 属性的“详细信息”屏幕(MP3 详细信息屏幕 https://i.stack.imgur.com/t1s9h.png)。但是,如果我在运行脚本之前首先在这些字段中手动输入数据,它会正确添加元数据并将其显示在详细信息屏幕上!我注意到的另一件事是,我只需要在脚本的至少一个字段中输入数据,然后正确填充所有字段。这样做似乎会初始化并允许以某种方式访问​​这些字段......

eyed3 文档列出了示例代码,我在此处的代码中或多或少完全遵循了这些示例代码:

import eyed3
import eyed3.mp3

path = [path to some MP3 file]

if eyed3.mp3.isMp3File(path):
     audiofile = eyed3.load(path)   # load file from file path
     audiofile.tag.artist = u"Artist"    # u needed to denote unicode
     audiofile.tag.album_artist = u"Album Artist"
     audiofile.tag.album = u"Album"
     audiofile.tag.save()    # save altered tags

问题:

  1. ID3 元数据和 MP3 属性的详细信息屏幕上看到的实际字段之间是否存在一些我不知道的隐藏分隔?
  2. I saw 另一个问题 https://stackoverflow.com/questions/31326789/create-new-id3-tag-using-python-and-eyed3关于 eyed3 问题,当文件开始时没有 ID3 标签时,通过使用 initTag() 解决了这个问题。虽然我没有遇到同样的错误,但我的问题是否相关?
  3. 我可能缺少导入声明吗?
  4. 我应该尝试使用不同的 Python 模块来操作 ID3 元数据吗?

我已经尝试了各种测试,但无法得出任何可能指向解决方案的不同结果。

预先感谢所有花时间阅读本文的人!任何帮助表示赞赏:)


我遇到了同样的问题,最后在这个线程上找到了解决方案:https://bitbucket.org/nicfit/eyed3/issues/22/tag-save-method-does-not-apply-changes https://bitbucket.org/nicfit/eyed3/issues/22/tag-save-method-does-not-apply-changes

要点:默认eyed3.load(pathtofile)加载 ID3_V2_4 标签,资源管理器和 Windows Media Player 使用 1.x 标签。

解决方案: 将您的保存语句替换为以下内容:

   audiofile.tag.save(version=(1,None,None))
   audiofile.tag.save()

第一条语句将确保资源管理器和 WMP 使用的标签已更新。第二个将确保使用 v2.4 标签的应用程序也得到更新(例如 VLC)。希望这可以帮助!

编辑:将来如果您还计划添加专辑封面,那么您还应该添加以下内容:

    audiofile.tag.save(version=(2,3,0))

不太清楚为什么,但更新 v2.3 标签似乎可以完成第一次专辑封面更改的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 的 eyesed3 包未正确设置 ID3 元数据 的相关文章

随机推荐