Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.8诱变剂无法读取GEOB标记_Python_Mp3_Pydev_Id3_Mutagen - Fatal编程技术网

Python 3.8诱变剂无法读取GEOB标记

Python 3.8诱变剂无法读取GEOB标记,python,mp3,pydev,id3,mutagen,Python,Mp3,Pydev,Id3,Mutagen,我将PyDev与Eclipse一起使用。通过水蟒安装诱变剂 我有C语言的经验,但决定尝试一下Python。不知道为什么这不起作用,也没有很多诱变剂的例子。这是一个简单的mp3,我正试图从中读取标签。我检查了诱变剂规范,GEOB类确实存在。但我不知道我错过了什么 这是我的python文件: import mutagen from mutagen.id3 import ID3 audio = ID3("Test.mp3") #path: path to file title

我将PyDev与Eclipse一起使用。通过水蟒安装诱变剂

我有C语言的经验,但决定尝试一下Python。不知道为什么这不起作用,也没有很多诱变剂的例子。这是一个简单的mp3,我正试图从中读取标签。我检查了诱变剂规范,GEOB类确实存在。但我不知道我错过了什么

这是我的python文件:

import mutagen

from mutagen.id3 import ID3

audio = ID3("Test.mp3") #path: path to file

titleData = audio.get('TIT2')
print(titleData)

tagData = audio.get('GEOB')  # returns None as a default
print(tagData)
    
 
print("Done!")
以下是输出:

Stupid Song
None
Done!
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
TBPM=142
TCON=Other
TIT2=Stupid Song
TKEY=E
TSSE=Lavf58.20.100
TXXX=SERATO_PLAYCOUNT=0
我正在使用文件Test.mp3作为我的测试用例。如果我用十六进制编辑器打开,我看到实际上有一个GEOB标记:

因此,我希望看到的输出不是“无”。感谢您的帮助

更新: 添加了以下行:

printall = audio.pprint()
print(printall)
并得到了输出:

Stupid Song
None
Done!
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
GEOB=[unrepresentable data]
TBPM=142
TCON=Other
TIT2=Stupid Song
TKEY=E
TSSE=Lavf58.20.100
TXXX=SERATO_PLAYCOUNT=0

那么我是否只是错误地使用了audio.get函数?我希望能够以二进制或十六进制的形式获取所有[不可表示的数据]。

我既不知道诱变剂也不知道Python,但根据手册,任何文本框(即您的)都基于类,具有
.text
属性。因此,当您发布:

titleData = audio.get('TIT2')
…你实际上是:

titleData = audio.get('TIT2').text
记住这一点,现在看看:它没有任何这样的属性。这取决于您选择想要得到什么-可能是
.desc

还有其他的框架也没有主文本-最突出的是(),您可能也很容易遇到/想要处理文本框是最简单的类型,但不是唯一的类型-请看一看,看看每种类型有多不同(示例:)

(这个答案中所有有底线的都是一个链接,而不仅仅是蓝色文本。)

根据诱变剂,要获得具有给定标识符的所有帧,方法调用是“getall”而不是“get”。以下方法返回歌曲标题和所有GEOB帧

def get_tags_mutagen(filepath):
    audio = ID3(filepath) #path: path to file
    
    titleData = audio.getall('TIT2')
    print("Song Title: ", titleData)

    tagData = audio.getall('GEOB')  # returns None as a default
    for i in tagData:
        print(i)

    return tagData

audio.pprint()
是否列出了GEOB帧?(术语:“标签”就是全部;“框架”就是“TIT2”和“GEOB”)更新了我的帖子。列出了GEOB框架。不知道为什么我没有从他们那里得到数据。