如何设置:标签的“艺术家”、“专辑艺术家”、“年份”、“专辑”、“歌曲编号”和“标题”字段,带诱变剂

2023-12-06

我正在尝试使用 mutagen (使用 Python 2.7.5)创建一个程序,假设歌曲的路径是...\Artist\Year Album\Songnumber Title.mp3,设置歌曲的艺术家、专辑艺术家、年份、专辑、歌曲编号和标题标签,并保留流派标签。我尝试这样做EasyID3,但它没有专辑艺术家标签。我也尝试用常规方法来做ID3,但我遇到了一些问题。这是我使用的代码:

from mutagen.id3 import ID3, TIT2, TPE2, TALB, TPE1, TYER, TDAT, TRCK, TCON, TORY, TPUB
p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"
audio = ID3(p)
audio.add(TIT2(encoding=3, text=u"t"))    #TITLE
audio.add(TRCK(encoding=3, text=u"1"))    #TRACK
audio.add(TPE1(encoding=3, text=u"a"))    #ARTIST
audio.add(TALB(encoding=3, text=u"al"))   #ALBUM
audio.add(TYER(encoding=3, text=u"2000")) #YEAR
audio.add(TDAT(encoding=3, text=u"2001")) #YEAR
audio.add(TORY(encoding=3, text=u"2002")) #ORIGYEAR
audio.add(TPE2(encoding=3, text=u"aa"))   #ALBUMARTIST
audio.add(TCON(encoding=3, text=u"g"))    #GENRE
audio.save()

I used 这张桌子查找每个标签的 4 字母代码。

标题、曲目、艺术家和专辑都运行良好。对于 mp3 文件的属性>详细信息下的所有字段(除了这四个和“年份”),以前的值已被清除save(),当我尝试添加新的时,什么也没发生。特别是“流派”和“专辑艺术家”字段不起作用。至于同时具有 TYER 和 TDAT 代码的“年份”,它根本不会改变,除非该字段先为空,然后仅由 TYER 改变。带有代码 TORY 的“ORIGYEAR”什么也没做。

“流派”字段实际上并没有完全损坏 - 如果你用 python 代码更改它(audio.add(etc)),或者事先手动进入属性>详细信息,save()将清除非内置流派,例如“技术死亡金属”或“mt3jr39kf390”,同时它适用于“经典摇滚”或“乡村”等内置流派,而某些整数(例如 1 或 2)会变成这些内置流派。 (年份字段有时也会表现类似 - 如果您手动将字段值设置为某些数字,save()会将其更改为不同的数字。我只观察到低于 800 的值,但并非所有值都如此 - 448 和 449 保持不变,而 500 变为 320,700 变为 448,12 变为 10,10 变为 8。如果将 12 更改为 10这样然后再次运行程序,什么也不会发生,但如果你手动将其更改为其他值并返回到10,它将变成8。)

所以,问题是,如果那里已经有东西,我就无法更改年份标签,我无法更改专辑艺术家或流派标签,而且如果有的话,我不知道如何执行“get”命令这样我就可以保留流派标签。

Also, EasyID3也有同样的问题——save()清除某些字段,并且在流派和年份方面表现得很奇怪。唯一的区别似乎是,即使该字段不为空,也可以更改年份。这是我使用的代码:

from mutagen.easyid3 import EasyID3
p = "E:\\Musik\\Aeon\\2005 Bleeding the False\\01 Cenobites - Copy.mp3"
audio = EasyID3(p)
audio["title"] = u"t"
audio["artist"] = u"a"
audio["album"] = "al"
audio["date"] = u"2000"
audio["tracknumber"] = u"1"
audio["genre"] = u"g"
audio.save()
print '\n'.join(EasyID3.valid_keys.keys())

我和你有同样的问题。我尝试过

from mutagen.id3 import ID3, TIT2, TIT3, TALB, TPE1, TRCK, TYER`
tags = ID3()
tags['TIT2'] = TIT2(encoding=3, text=u'just a title') #title
tags['TYER'] = TYER(encoding=3, text=u'2000')  #year
tags['TRCK'] = TRCK(encoding=3, text=u'9')  #trackno
tags.save('111.mp3')

这样,似乎可以在不确保以前的标签为空的情况下更改标签,但是当我以python方式检查这些标签时,我发现TYER框架已更改为TDRC,我不知道为什么

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

如何设置:标签的“艺术家”、“专辑艺术家”、“年份”、“专辑”、“歌曲编号”和“标题”字段,带诱变剂 的相关文章

随机推荐