如何使用eyed3设置“专辑艺术家”?

6 投票
3 回答
4697 浏览
提问于 2025-04-17 15:19

我正在尝试使用 eyed3 这个 Python 库,目的是为了更改一大堆 .MP3 文件的艺术家名称。我参考了项目网页上的示例代码(http://eyed3.nicfit.net/),发现使用 setsaudiofile.tag.artist 这个方法只能更改“参与艺术家”的名称。根据文档(在 http://eyed3.nicfit.net/api/eyed3.html),这个标签对象里没有其他的艺术家字段。

请问,使用 eyed3 是否可以真正更改专辑艺术家的名称?如果可以的话,能否提供一段清晰简洁的 Python 代码来实现这个功能?

3 个回答

0

相关内容:如果专辑艺术家这一项是空的,我希望它能被设置为我的音乐库中艺术家字段的值,这个功能在Quod Libet中可以实现。这个方法是:

import os
import quodlibet.library

library_path = os.path.join(quodlibet.get_user_dir(), "songs")
library = quodlibet.library.init(library_path)

for song in library:
    if song('albumartist') == '':
        song['albumartist'] = song('artist')
        print(song['albumartist'])
    library.changed([song])

library.save()
2

这是我之前写的命令,用来修改那个字段:

eyeD3 --set-text-frame=TPE2:"Various Artists" filename.mp3

其中“Various Artists”是你想要放在“专辑艺术家”字段里的值。

1

如果你有很多MP3歌曲,可以把同一个歌手的所有歌曲放在一个文件夹里。比如说,把所有“Coldplay”的歌曲放在一个叫“Coldplay”的文件夹里。

如果你使用的是Linux系统,可以按照下面的步骤操作:

import os
import eyed3
folder = raw_input('Please enter the folder of music')
files = os.listdir(folder) # This will give us a list of all of the MP3s in that folder
artist = folder.split('/')[-1]

for x in files:
    mp3 = eyed3.load(folder + '/' + x) # Loads each and every MP3
    mp3.tag.artist = unicode(artist, "UTF-8") # Sets the "artist" tag to the artist name 
    mp3.tag.save() # Saves tag

如果你是在Windows系统上,只需要把代码里的所有斜杠“/”改成反斜杠“\”就可以了。

撰写回答