Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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.x 如何使用Python从acousticid获取跟踪元数据_Python 3.x_Musicbrainz - Fatal编程技术网

Python 3.x 如何使用Python从acousticid获取跟踪元数据

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) 如何从

我有一个带有未知标签的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)
如何从此声学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判断哪个版本应被视为“正确”