【问题标题】:why am I unable to display the USLT lyrics为什么我无法显示 USLT 歌词
【发布时间】:2015-12-09 16:17:59
【问题描述】:

我正在使用诱变剂尝试在我的媒体上查找歌词。当我运行以下内容时

import mutagen.mp3

mp3 = MP3(mp3file)
print mp3.pprint()

我可以看到框架 USLT 存在并且它包含:

USLT=[无法表示的数据]

我不明白为什么数据不可表示。我已将标签插入到 mp3 文件中,如下所示:

tags = ID3(mp3file)
tags[u"USLT::'eng'"] = (USLT(encoding=3, lang=u'eng', desc=u'desc', text="this is a test"))
tags.save()

我真的不明白为什么我需要将标签声明为 u"USLT::'eng'"] 而不是单独使用 "USLT" 但我可以确认这是有效的,因为我可以看到标签出现在 mp3tag 中(用于修改mp3标签的软件)

所以标签存在,带有歌词。我可以在 mp3.pprint() 和 mp3tag 中看到这一点,但我无法使用以下代码查看它:

ulyrics = mp3["USLT"]
print ulyrics

我尝试将“USLT”更改为 u"USLT::'eng'",但没有任何区别。 我经常看到错误信息:

文件“filepath\mutagen_util.py”,第 206 行,在 getitem 中 返回 self.__dict[key] 键错误:'USLT'

但我无法判断这是诱变剂还是我的代码中的错误(我可以看到我需要的所有其他标签的结果)

【问题讨论】:

    标签: python python-2.7 mutagen


    【解决方案1】:

    此时,对我有用的是:

    from mutagen.id3 import ID3
    
    mp3file = "... path to mp3 file ..."
    
    tags = ID3(mp3file)
    ulyrics = tags.getall('USLT')[0]
    
    # change the lyrics text
    ulyrics.text = " An arbitrary new lyrics text..."
    tags.setall('USLT', [ulyrics])
    
    # change the lyrics object completely
    ulyrics = USLT(encoding=3, lang=u'eng', desc=u'desc', text="this is a test")
    tags.setall('USLT', [ulyrics])
    

    请务必注意,不必使用密钥 "USLT::'eng'",因为 lang 包含在 USLT 对象中。

    【讨论】:

    • 太糟糕了 OP 无法接受他上次访问后发布的答案。
    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2018-12-16
    • 2021-03-13
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多