我一直在试图写一个Picard插件。我的想法是让它自动插入音译曲目列表,作为用非拉丁语脚本编写的曲目标题发行版的注释。MusicBrainz将这些音译作为与实际发行版并行存在的伪发行版。例如,对于a given release,我必须首先读取相关版本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中指定的任何方式访问它。在
我已经查过Picard和the standalone web service的来源,但是没有找到任何东西。这有可能吗?如果有,我该怎么做?在
在MusicBrainz Web Service中,您可以获得如下音译版本: https://musicbrainz.org/ws/2/release/1492ce2b-a9ee-4aa3-b9e2-b18ad093bc51?inc=release-rels (注意
inc=release-rels
)。 您也可以使用json web service。在使用python-musicbrainzngs可以执行类似
musicbrainzngs.get_release_by_id("1492ce2b-a9ee-4aa3-b9e2-b18ad093bc51",includes=["release-rels"])
的操作。在但是,Picard不提供musicbrainzngs。因此,您要么必须单独安装python musicbrainzngs,如果没有它,您的插件将无法工作,或者您必须使用Picard提供的模块。我不确定Picard元数据中到底包含了什么,不包含什么,但这些模块可能有帮助:picard.album,picard.webservice和{a7}。在
如果您编写元数据处理器,则Picard中提供了有关关系的信息,包括音译的tracklistings。迭代发布的所有关系的简单插件如下所示:
传递给处理器的
release
参数是PicardsXmlNode类的一个实例,它的结构(包括它的子对象)类似于通过web服务向MusicBrainz服务器询问此版本所获得的XML(this是它为示例发行版返回的内容,如果您只询问关系)。现在你有了关系目标的MBID,您可以使用Picards webservice模块的get方法(album
stagger.xmlws
属性是XmlWebService类的一个实例)向MusicBrainz网站发送另一个请求,请求有关该发行版的数据(不要忘了加入并减少album
s_requests
属性,这样它在您完成加载之前不会完成加载步骤更改了数据)。在其他一些使用这个来请求和处理更多数据的插件是the album artist website和{a5}插件。在
/edit:我刚刚得到通知,已经有a ticket来改进Picard如何处理伪发布,它有一个指向a plugin做你想做的事情的链接。在
相关问题 更多 >
编程相关推荐