【问题标题】:eyed3 package for Python not properly setting ID3 metadata用于 Python 的 eyed3 包未正确设置 ID3 元数据
【发布时间】:2017-01-05 21:51:27
【问题描述】:

为此,我使用 Python 2.7.13、Windows 10 和 eyed3 包,如 here 所述。

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

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

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. 我看到another question 提到了一个 eyed3 问题,该问题通过使用 initTag() 解决,当文件没有 ID3 标签开头时。虽然我没有收到同样的错误,但我的问题可能与此有关吗?
  3. 我可能缺少导入语句吗?
  4. 我是否应该尝试使用不同的 Python 模块来处理 ID3 元数据?

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

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

【问题讨论】:

    标签: python mp3 id3 eyed3


    【解决方案1】:

    我遇到了同样的问题,终于在这个帖子上找到了解决方案: 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 标签似乎可以完成第一次专辑封面更改的工作。

    【讨论】:

    • 谢谢!这解决了问题。我最终只使用了 version=(2,3,0),因为它似乎还涵盖了专辑艺术家等其他方面。
    猜你喜欢
    • 2014-06-28
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多