【问题标题】:How do I name metadata for mp3's with python?如何使用 python 命名 mp3 的元数据?
【发布时间】:2015-10-23 23:54:10
【问题描述】:

我有一些包含 MP3 文件的文件夹,这些文件不包含任何元数据,但文件名本身包含一些数据。

我想将标题中的数据作为元数据复制到文件中。

我已经拥有的:

import eyed3.mp3
import os

local = os.getcwd()+"\\"
for file in os.listdir(local):
    while os.path.basename(file)[-4:len(os.path.basename(file))] == ".mp3":
        original = os.path.basename(file)
        print(original)
        original2 = original[0:-4]
        print(original2)
        list = original2.split(" - ")
        print(list)
        f = eyed3.load(file)
        class Mp3AudioFile(f):
            f.initTag(Artist=(list[0]))
            f.initTag(Album=(list[1]+list[2]))
            f.initTag(TrackNumber=(list[3]))
            f.initTag(Title=(list[4]))
        break

打印的内容:

John Williams - S.W. Ep. IV -  CD 1 - 01 - 20th Century Fox Fanfare.mp3
John Williams - S.W. Ep. IV -  CD 1 - 01 - 20th Century Fox Fanfare
['John Williams', 'S.W. Ep. IV', ' CD 1', '01', '20th Century Fox Fanfare']

它给出了这个错误:

TypeError: initTag() got an unexpected keyword argument 'Artist'

如何从标题中获取我在列表中解析的数据作为文件的元数据。

我还希望能够在我拥有的任何文件夹中复制和粘贴 .py 文件,然后执行它。

【问题讨论】:

    标签: python metadata mp3 eyed3


    【解决方案1】:

    如果您查看documentation,initTag 的唯一 kwargs 是 tag_version。所以不能通过这个函数设置艺术家、标题、曲目编号或专辑。

    您可以按如下方式设置值:

    f = eyed3.load(file)
    f.tag.artist = unicode(list[0])
    f.tag.album = unicode(' '.join(list[1]+list[2]))
    f.tag.track_num = int(list[3])
    f.tag.title = unicode(list[4])
    f.tag.save()
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2010-09-05
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多