В качестве упражнения для обучения я пытаюсь написать плагин для MusicBrainz, который соответствует формату albumartistsort
к albumartist
и artistsort
к artist
, в отличие от (очевидно) стандартного формата Last Name, First Name. в настоящее время использую.
Я только изучаю Python, и поэтому я пытаюсь использовать другой плагин в качестве руководства, но необходимо внести некоторые важные изменения, и именно здесь я, вероятно, облажался.
Когда я пытаюсь установить плагин, он не появляется в списке плагинов, хотя копируется в папку плагинов; и файл .pyo
не создается. Я предполагаю, что это связано с ошибкой компиляции, но я не смог включить все, что мне нужно, поэтому я могу использовать модуль picard
(не знаю, где его найти и импортировать), чтобы я мог протестировать его на своем питоне устный переводчик.
Это код, который у меня есть:
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
в интерпретатор (где его найти И как его включить), то ваши комментарии очень важны ценные и действительные ответы на этот вопрос.
-d
, чтобы вы могли видеть его вывод, и/или как использовать модуль Pythonlogger
для создания собственного отладочного вывода в системных журналах/файле/что угодно, верно? Выполнение одного или другого из них в значительной степени необходимо для отладки плагинов. - person abarnert   schedule 10.12.2013artist
иartistsort
— это поля метаданных дорожки, а не поля метаданных альбома, поэтому вам почти наверняка понадобится процессор дорожек, а также процессор альбомов. - person abarnert   schedule 10.12.2013tagger scritp
при чтении документа. Теперь это работает. Я вообще не знаю, как управлять Пикардом. В настоящее время я используюOptions > Options > Plugins > Install plugin...
и смотрю, добавлено ли оно в список или нет. Настаивать на версии плагина только потому, что она уже написана, добавление четвертого аргумента и переход на обработчик альбомов тоже не сработали. - person Kevin   schedule 10.12.2013MusicBrainz Picard
былоpicard.exe
. Но попробовав, я понял, что вы имели в виду. - person Kevin   schedule 10.12.2013