我一直在尝试写一个Picard插件。我的想法是,它自动插入音译的曲目列表,作为用非拉丁脚本编写的带有曲目标题的版本的注释。MusicBrainz将这些音译包含为与实际版本并行存在的伪版本。例如,对于给定的释放,我必须首先读取相关版本的ID的关系。然后,我将不得不将这些曲目的标题转移到我的文件的注释字段中。伪码:
pseudo_release = actual_release.getTransliteration() # As indicated in a relationship
i = 1
while i <= actual_release.numTracks():
actual_release.getTrack(i).setComment(pseudo_release.getTrack(i).getTitle())
i++第一句是我不知道该怎么做。因为这个关系不能作为Picard变量使用,所以它不能通过API中指示的任何方式访问。
我一直在寻找皮卡德和独立的web服务的来源,但没有找到任何东西。这有可能吗?如果可能的话,我该怎么做?
发布于 2014-07-08 17:03:42
如果您编写元数据处理器,有关关系(包括音译跟踪列表)的信息可以在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模块的到达方法(album的tagger.xmlws属性是XmlWebService类的一个实例)向MusicBrainz网站发送另一个请求,请求有关该发布的数据(不要忘记加入和减少album的_requests属性,以便在您更改其数据之前它不会完成其加载步骤)。
其他一些用于请求和处理进一步数据的插件是专辑艺术家网站和Last.FM.Plus插件。
/edit:我刚刚被告知,已经有了一张票来改进Picard处理伪租约的方式,它有一个链接到插件,可以完成您想要做的事情。
发布于 2014-07-08 09:53:56
在MusicBrainz网络服务中,您可以获得如下所示的音译版本:https://musicbrainz.org/ws/2/release/1492ce2b-a9ee-4aa3-b9e2-b18ad093bc51?inc=release-rels (注意inc=release-rels)。您也可以使用json web服务。
有了巨蟒-音乐头脑,您会做一些类似于musicbrainzngs.get_release_by_id("1492ce2b-a9ee-4aa3-b9e2-b18ad093bc51",includes=["release-rels"])的事情。
然而,皮卡德并没有提供音乐创意。所以你要么单独安装,要么你的插件没有它就不能工作,要么你必须使用Picard提供的模块。我不确定Picard元数据中到底包含了什么,也不知道其中包含了什么,但这些模块可能会有所帮助:picard.album、picard.webservice和picard.mbxml。
https://stackoverflow.com/questions/24619930
复制相似问题