Difference between revisions of "MusicBrainz Picard/Plugins/API"
From MusicBrainz Wiki
Jump to navigationJump to searchPavanChander (talk | contribs) m (Picard Qt/Plugin API moved to MusicBrainz Picard/Plugins/API) |
(Redirect to new API docs home on Picard website) Tag: New redirect |
||
(6 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
+ | #REDIRECT [[picard:docs/plugin-api/]] |
||
− | =APIs for PicardQt Plugins= |
||
− | |||
− | API documentation for [[Picard Qt|PicardQt]] plugins. |
||
− | |||
− | ==Metadata Processors== |
||
− | |||
− | MusicBrainz metadata can be post-processed at two levels, album and track. |
||
− | |||
− | Album metadata example: |
||
− | |||
− | <pre> |
||
− | 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) |
||
− | </pre> |
||
− | |||
− | Track metadata example: |
||
− | |||
− | <pre> |
||
− | 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) |
||
− | </pre> |
||
− | |||
− | ==File Formats== |
||
− | |||
− | Example: |
||
− | |||
− | <pre> |
||
− | 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) |
||
− | </pre> |
||
− | |||
− | ==Tagger Script Functions== |
||
− | |||
− | To define new [[Picard Qt/Scripting|tagger script]] function use <code><nowiki>register_script_function(function, name=None)</nowiki></code> from module <code><nowiki>picard.script</nowiki></code>. |
||
− | |||
− | Example: |
||
− | |||
− | <pre> |
||
− | 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) |
||
− | </pre> |
||
− | |||
− | [[Category:MusicBrainz Picard]] |
Latest revision as of 17:40, 8 July 2019
Redirect to: