Python 3.x 如何使用Python从acousticid获取跟踪元数据
我有一个带有未知标签的file.mp3。我用这个来获取声学ID:Python 3.x 如何使用Python从acousticid获取跟踪元数据,python-3.x,musicbrainz,Python 3.x,Musicbrainz,我有一个带有未知标签的file.mp3。我用这个来获取声学ID: import acoustid acoustID= acoustid.match(API_KEY, filepath) audioId包含几个候选项,假设我选择了最好的一个:“0f6eb38a-d6c9-4f87-a9a7-6e7b0eeb4281” 我尝试过这个,但它没有提供很多信息: import musicbrainzngs musicbrainzngs.get_recording_by_id(acoustID) 如何从
import acoustid
acoustID= acoustid.match(API_KEY, filepath)
audioId
包含几个候选项,假设我选择了最好的一个:“0f6eb38a-d6c9-4f87-a9a7-6e7b0eeb4281”
我尝试过这个,但它没有提供很多信息:
import musicbrainzngs
musicbrainzngs.get_recording_by_id(acoustID)
如何从此声学ID获取相应的标记(唱片集、大头号、流派、乐队等?最终找到了以下内容:。您可以在浏览器中使用此url:https://acousticbrainz.org/
。从您的代码中,您可以从以下url获得一个包含此轨道上所有元数据的大型json数据文件:https://acousticbrainz.org/api/v1//low-level
对于python脚本,可以使用如下内容:
import acoustid
import urllib.request, json
file = "path/to/myAudioFile"
API_KEY = 'cSpUJKpD'
candidates = acoustid.match(API_KEY, file) # returns a generator of candidates
best_score, best_acoustId, best_title, best_artist = next(candidates)
metadata = {}
with urllib.request.urlopen("https://acousticbrainz.org/api/v1/" + best_acoustId + "/low-level") as url:
data = json.loads(url.read().decode())
metadata = data['metadata']
有关
audioId.match()
的更多信息,您可以查看他们的github页面,尤其是这里:您的audioId
不是一个audioId,而是一个
您是正确的,默认情况下,musicbrainzngs.get\u recording\u by\u id
只返回非常小的数据集。它是API的包装器,根据通过inc
参数请求的内容返回数据。这在musicbrainzngs中可用,因为包含参数到get\u*\u by\u id
函数。如果你使用
musicbrainzngs.get_recording_by_id(“0f6eb38a-d6c9-4f87-a9a7-6e7b0eeb4281”,包括=[“艺术家”,“发行版”])
更多的数据——在本例中是关于录音的艺术家及其出现的版本的数据——将被返回。您需要定义您自己(或要求用户)来选择正确的版本,因为您无法仅从录制的MBID判断哪个版本应被视为“正确”