メタデータ プロセッサを作成すると、音訳されたトラックリストを含む関係に関する情報を 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 Web サービス モジュールのgetメソッド ( album
stagger.xmlws
属性は XmlWebService クラスのインスタンス) を使用して、そのリリースに関するデータを求める別の要求を MusicBrainz Web サイトに送信できます (don' t をインクリメントおよびデクリメントするalbum
のを忘れる_requests
そのため、データを変更するまでロード手順は完了しません)。
これを使用してさらにデータを要求および処理する他のプラグインには、アルバム アーティストの Web サイトとLast.FM.Plusプラグインがあります。
/edit: Picard が疑似リリースを処理する方法を改善するためのチケットが既にあることを知らされました。これには、やりたいことを実行するプラグインへのリンクがあります。