作为学习练习,我正在尝试为 MusicBrainz 编写一个与albumartistsort
toalbumartist
和artistsort
to匹配的插件,而不是它当前使用artist
的(显然)默认的姓氏,名字格式。
我只是在学习 Python,因此我正在尝试使用另一个插件作为指南,但是需要进行一些重要的更改,这可能是我搞砸的地方。
当我尝试安装插件时,虽然它被复制到插件文件夹中,但它并没有出现在插件列表中;并且.pyo
文件没有生成。我猜这是由于编译错误造成的,但我无法包含我需要的任何内容,因此我可以使用该picard
模块(不知道在哪里找到它或导入它)所以我可以在我的 python 解释器中进行测试.
这是我的代码:
PLUGIN_NAME = "Sort Artist and Album Artist"
PLUGIN_AUTHOR = "Kevin Hernandez"
PLUGIN_DESCRIPTION = "Sorts artist/album artist by name as in Artist/Album Artist field instead of Last, First"
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10", "0.15", "0.16"]
from picard.metadata import register_album_metadata_processor
import re
def copy_albumartist_to_albumartistsort(tagger, metadata, release):
match = re.search($not($eq(metadata["albumartistsort"],metadata["albumartist"])))
if match:
metadata["albumartistsort"] = metadata["albumartist"]
def copy_artist_to_artistsort(tagger, metadata, release):
match = re.search($not($eq(metadata["artistsort"],metadata["artist"])))
if match:
metadata["artistsort"] = metadata["artist"]
register_album_metadata_processor(copy_albumartist_to_albumartistsort)
register_album_metadata_processor(copy_artist_to_artistsort)
我还尝试将函数定义为:
def copy_albumartist_to_albumartistsort(tagger, metadata, release):
metadata["albumartistsort"] = metadata["albumartist"]
def copy_artist_to_artistsort(tagger, metadata, release):
metadata["artistsort"] = metadata["artist"]
我必须指出,我不完全理解何时调用这些。我相信这里、这里和这里的插件文档不足以遵循他们在那里拥有的插件(例如,他们在不同插件中使用的方法search
和方法在我所指的文档链接中没有解释。match
re
如果有更详尽的文档,您可以查明我在代码中做错了什么,或者知道如何将picard
模块包含在解释器中(在哪里找到它以及如何包含它),那么非常感谢您的评论和这个问题的有效答案。