<p>如果您编写元数据处理器,则Picard中提供了有关关系的信息,包括音译的tracklistings。迭代发布的所有关系的简单插件如下所示:</p>
<pre><code>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)
</code></pre>
<p>传递给处理器的<code>release</code>参数是Picards<a href="https://github.com/musicbrainz/picard/blob/master/picard/webservice.py#L72" rel="nofollow">XmlNode</a>类的一个实例,它的结构(包括它的子对象)类似于通过web服务向MusicBrainz服务器询问此版本所获得的XML(<a href="https://beta.musicbrainz.org/ws/2/release/1492ce2b-a9ee-4aa3-b9e2-b18ad093bc51?inc=release-rels" rel="nofollow">this</a>是它为示例发行版返回的内容,如果您只询问关系)。现在你有了关系目标的MBID,您可以使用Picards webservice模块的<a href="https://github.com/musicbrainz/picard/blob/master/picard/webservice.py#L292" rel="nofollow">get</a>方法(<code>album</code>s<code>tagger.xmlws</code>属性是XmlWebService类的一个实例)向MusicBrainz网站发送另一个请求,请求有关该发行版的数据(不要忘了加入并减少<code>album</code>s<code>_requests</code>属性,这样它在您完成加载之前不会完成加载步骤更改了数据)。在</p>
<p>其他一些使用这个来请求和处理更多数据的插件是<a href="https://github.com/musicbrainz/picard/blob/master/contrib/plugins/albumartist_website.py" rel="nofollow">the album artist website</a>和{a5}插件。在</p>
<p>/edit:我刚刚得到通知,已经有<a href="http://tickets.musicbrainz.org/browse/PICARD-145" rel="nofollow">a ticket</a>来改进Picard如何处理伪发布,它有一个指向<a href="https://github.com/96187/picard-plugins/blob/master/use-pseudo-releases.py" rel="nofollow">a plugin</a>做你想做的事情的链接。在</p>