在Python中使用EyeD3设置ID3评论

4 投票
2 回答
4373 浏览
提问于 2025-04-18 06:11

我有一个Python脚本,放在一个包含mp3文件的文件夹里:

import os
import eyed3

def track(file):
    tag = eyed3.load(file)
    tag.tag.comment = u"teststring"
    tag.tag.genre = u"Pop"
    tag.tag.save()

for fn in os.listdir('.'):
    print fn[-3:]
    if fn[-3:] == 'mp3':
        track(fn)

这里的'genre'(音乐类型)设置得对,但我的评论部分却出现了一些乱七八糟的内容。我在winamp里给评论加了一个'Test',然后运行我的脚本,从命令行输出ID3信息时,我看到的是:

ys3(01).mp3 [ 3.86 MB ]
-------------------------------------------------------------------------------
Time: 03:02 MPEG1, Layer III    [ ~177 kb/s @ 48000 Hz - Joint stereo ]
-------------------------------------------------------------------------------
ID3 v2.3:
title: WANDERERS FROM YS    - ?
artist: 
album: 
track:      genre: Pop (id 13)
Comment: [Description: ] [Lang: eng]
Test
Comment: [Description: ÿþÿ] [Lang: eng]
þ
-------------------------------------------------------------------------------

我是不是把'Comment'(评论)传递得不对呢?

2 个回答

1

你的方法看起来没问题,但在 eyed3 这个库里,tag 的评论属性并不是一个简单的属性,而是需要用一个设置函数来处理的:

audiofile.tag.comments.set(comment)

2

我不太明白为什么会这样,但你可以看看在这个示例文件中是怎么设置注释的:

from eyed3.id3 import Tag

t = Tag()
t.comments.set(u"Gritty, yo!")

我觉得这和注释放在框架里有关,不过其他人可能会有不同的看法。请注意,如果你不传递unicode,这个方法会失败。

这个在以下版本上有效:

↪ eyeD3 --version
eyeD3 0.7.4-beta (C) Copyright 2002-2013 Travis Shirk

撰写回答