MusicBrainz Picard/Plugins/API

From MusicBrainz Wiki
< MusicBrainz Picard‎ | Plugins
Revision as of 22:00, 8 September 2012 by Conversion script (talk) (Conversion script moved page MusicBrainz Picard/Plugins/API to musicBrainz Picard/Plugins/API: Converting page titles to lowercase)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 valu for both of them is True.