MusicBrainz Picard / Plugins / API
This page has not been reviewed by our documentation team (more info).
API documentation for MusicBrainz Picard plugins.
Metadata Processors
MusicBrainz metadata can be post-processed at two levels, album and track.
Album metadata example:
1 PLUGIN_NAME = "Disc Numbers"
2 PLUGIN_AUTHOR = "Lukas Lalinsky"
3 PLUGIN_DESCRIPTION = "Moves disc numbers from album titles to tags."
4
5 from picard.metadata import register_album_metadata_processor
6 import re
7
8 def remove_discnumbers(metadata, release):
9 matches = re.search(r"\(disc (\d+)\)", metadata["album"])
10 if matches:
11 metadata["discnumber"] = matches.group(1)
12 metadata["album"] = re.sub(r"\(disc \d+\)", "", metadata["album"])
13
14 register_album_metadata_processor(remove_discnumbers)
Track metadata example:
1 PLUGIN_NAME = "Feat. Artists"
2 PLUGIN_AUTHOR = "Lukas Lalinsky"
3 PLUGIN_DESCRIPTION = "Removes feat. artists from track titles."
4
5 from picard.metadata import register_track_metadata_processor
6 import re
7
8 def remove_featartists(metadata, release, track):
9 metadata["title"] = re.sub(r"\(feat. [^)]*\)", "", metadata["title"])
10
11 register_track_metadata_processor(remove_featartists)
File Formats
Example:
1 PLUGIN_NAME = "..."
2 PLUGIN_AUTHOR = "..."
3 PLUGIN_DESCRIPTION = "..."
4
5 from picard.file import File
6 from picard.formats import register_format
7
8 class MyFile(File):
9 EXTENSIONS = [".foo"]
10 NAME = "Foo Audio"
11 def read(self):
12 ....
13 def save(self):
14 ....
15
16 register_format(MyFile)
Tagger Script Functions
To define new tagger script function use register_script_function(function, name=None) from module picard.script.
Example:
1 PLUGIN_NAME = "Initials"
2 PLUGIN_AUTHOR = "Lukas Lalinsky"
3 PLUGIN_DESCRIPTION = "Provides tagger script function $initials(text)."
4
5 from picard.script import register_script_function
6
7 def initials(parser, text):
8 return "".join(a[:1] for a in text.split(" ") if a[:1].isalpha())
9
10 register_script_function(initials)
register_script_function supports to optional arguments:
- eval_args: If this is False, the arguments will not be evaluated before being passed to function.
- check_argcount: If this is False the number of arguments passed to the function will not be verified.
The default value for both of them is True.