Difference between revisions of "MusicBrainz Picard/Plugins/API"

From MusicBrainz Wiki
Jump to navigationJump to search
m
(Redirect to new API docs home on Picard website)
Tag: New redirect
 
(5 intermediate revisions by 4 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>
 
 
[[Category:MusicBrainz Picard]]
 

Latest revision as of 17:40, 8 July 2019