MusicBrainz Picard/Plugins/API: Difference between revisions
From MusicBrainz Wiki
Jump to navigationJump to search
m (Conversion script moved page MusicBrainz Picard/Plugins/API to musicBrainz Picard/Plugins/API: Converting page titles to lowercase) |
(Redirect to new API docs home on Picard website) Tag: New redirect |
||
(3 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
#REDIRECT [[picard:docs/plugin-api/]] |
|||
API documentation for [[MusicBrainz Picard]] 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> |
|||
<code><nowiki>register_script_function</nowiki></code> 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'''. |
|||
[[Category:MusicBrainz Picard]] |
Latest revision as of 17:40, 8 July 2019
Redirect to: