During late 2022 I was discussing with those at the unofficial MusicBrainz Discord server, conceptualising a plugin that facilitated submitting genres as folksonomy tags on MusicBrainz. I had a massive library, and it’d be a pain to go through each track/release’s MusicBrainz page and tag them manually, but I still wanted to add my genre tags to MusicBrainz in case anyone else wanted to use them. In January of this year, fuelled by my move from MusicBee to Quod Libet and wanting to move the featured artists from the title to the artist field (a relic from last.fm/iTunes times), I decided to update the genre tags where needed and, as a result, I made this plugin that allows users to submit tags to MusicBrainz straight from Picard.
I’d like to thank rdswift for the Submit ISRC plugin. That plugin was used as a reference to learning how the WebService worked in Picard, and I used his network handling code as the basis for handling network-related issues in this plugin, with some changes to accomodate the needs of my plugin. Also thanks to everyone on the unofficial MusicBrainz Discord server for their input! It helped me with feature implementation as well as bug fixing.
It has been successfully tested on Picard 2.8.5, running Windows 10 and Arch Linux, with Python 3.10.9 for the latter. Should work on macOS too, but do let me know if there are issues. Of course, you need to allow Picard access to your MusicBrainz account to submit the tags.
Features
- Submit user-specified tags to MusicBrainz entities.
- The default submitted tags are
genre
andmood
.
- The default submitted tags are
- Support for the following MusicBrainz entities via their MBIDs:
- Recordings
- Releases
- Release groups
- Release artists
- Note that for release/-related tags every
genre
andmood
tag should be the same to prevent unnecessary tags. If your track tags are different across a release, it’d be more appropriate to submit recording tags instead.
- Note that for release/-related tags every
- User-defined find and replacement of tags when submitting (e.g. find “synthpop” and replace it with the MusicBrainz standard genre tag “synth-pop”)
Limitations/Bugs
Right now it’s primitive in how submissions are handled - i.e. you can either keep the tags already there or overwrite them (the former is the default behaviour). Anyone who knows the MusicBrainz API knows that it’s just putting or omitting a vote option in the XML for the submitted tag. This is because right now I’m only submitting tags and not yet retrieving them for processing. I’d like to have a more dynamic option, so people don’t have to worry about whether their tags would be overwritten or not but for now this is what’s available.
Authentication with MusicBrainz must also be done before submission. There’s an error that pops up as it tries to execute the submission function after authentication (uses afterwards are fine though). I do plan to fix that in the future, likely through detecting the lack of a login.
If you find that your tags aren’t being added or removed despite picking the right setting, it might be the server not responding to your requests. I have used this to submit tags from my music library (over 10k tracks) with little to no problems, but I did notice that this happens sometimes to rarely, so YMMV.
Future Plans
- A better way of submitting tags, that isn’t just “keep old tags” or “delete it all”.
Allow customisation of what tags are submitted.- Possible integration with the recently made Genre Mapping plugin, which would be a better solution than the find/replace functions I have in this plugin. (i.e. “don’t reinvent the wheel”)
- It just got released a little while ago so I’d wait until this reaches the list of downloadable plugins before implementing this though.
Now available on the Picard plugins repo!