如果您编写元数据处理器,Picard 中会提供有关关系的信息,包括音译的曲目列表。一个简单的插件迭代一个版本的所有关系如下所示:
PLUGIN_NAME = "Find transliterated tracklisting relationships"
PLUGIN_AUTHOR = "Wieland Hoffmann"
PLUGIN_DESCRIPTION = "I'm too lazy"
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["1.0"]
from picard.metadata import register_album_metadata_processor
from picard import log
# The relationship type id for transliterations from
# https://musicbrainz.org/relationship/fc399d47-23a7-4c28-bfcf-0607a562b644
TRANS_REL_UUID = "fc399d47-23a7-4c28-bfcf-0607a562b644"
@register_album_metadata_processor
def find_transliteration_relationship(album, metadata, release):
if "relation_list" in release.children:
for rel in release.relation_list:
if rel.relation[0].type_id == TRANS_REL_UUID:
log.info("Found a transliterated tracklisting relationship")
for release in rel.relation[0].release:
log.info("Its target is https://musicbrainz.org/release/%s",
release.id)
传递给处理器的release
参数是 Picards XmlNode类的一个实例,其结构(包括其子对象)类似于您通过 Web 服务向 MusicBrainz 服务器询问此版本而获得的 XML(这是它为您的示例返回的内容)如果您只询问关系,请释放)。现在您有了关系目标的 MBID,您可以使用Picards webservice 模块的getalbum
方法( stagger.xmlws
属性是 XmlWebService 类的一个实例)向 MusicBrainz 网站发送另一个请求,询问有关该版本的数据(不要不要忘记增加和减少album
s_requests
属性,因此在您更改其数据之前它不会完成其加载步骤)。
使用它来请求和处理更多数据的其他一些插件是专辑艺术家网站和Last.FM.Plus插件。
/edit:我刚刚被告知,已经有一张票可以改进 Picard 处理伪版本的方式,该版本有一个指向插件的链接,可以做你想做的事情。