[PR #6369] [CLOSED] Migrate MusicBrainz plugin to MetaBrainz.MusicBrainz #10935

Closed
opened 2026-02-07 06:29:27 +03:00 by OVERLORD · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/jellyfin/jellyfin/pull/6369
Author: @heyhippari
Created: 8/1/2021
Status: Closed

Base: masterHead: musicbrainz-improvements


📝 Commits (3)

  • a71abe5 Migrate MusicBrainz plugin to MetaBrainz.MusicBrainz
  • e4d5531 Merge branch 'master' into musicbrainz-improvements
  • 1dcd04b Clean up

📊 Changes

14 files changed (+505 additions, -1115 deletions)

View changed files

📝 MediaBrowser.Providers/MediaBrowser.Providers.csproj (+1 -0)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/Configuration/PluginConfiguration.cs (+44 -23)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumArtistExternalId.cs (+16 -17)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumExternalId.cs (+16 -17)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs (+162 -710)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistExternalId.cs (+16 -17)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistProvider.cs (+114 -220)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzOtherArtistExternalId.cs (+16 -17)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzReleaseGroupExternalId.cs (+16 -17)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzTrackId.cs (+16 -17)
📝 MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs (+44 -26)
📝 src/Jellyfin.Extensions/EnumerableExtensions.cs (+42 -32)
📝 tests/Jellyfin.XbmcMetadata.Tests/Parsers/MusicAlbumNfoProviderTests.cs (+1 -1)
📝 tests/Jellyfin.XbmcMetadata.Tests/Parsers/MusicArtistNfoParserTests.cs (+1 -1)

📄 Description

Changes

  • Removes the custom XML serializer
  • Use the MetaBrainz-recommended MetaBrainz.MusicBrainz library.
    This makes it a lot easier to get and do stuff with MusicBrainz data, removes a bunch of code on our end, handles rate limiting for us, has the MetaBrainz-approved user agent format and a bunch of other stuff.

Notes

Important: I wanted to preserve the ability to use a custom server, but the library works a bit differently. Users will need to change https://musicbrainz.com to musicbrainz.com. We should also maybe add stuff like "Enable SSL for requests" to set HTTP/HTTPS and a port setting, but I'm not quite sure what the best way to do this would be. Suggestions are welcome.

This is still work in progress, hence the draft. This is now at feature parity with the current provider.

Through working on this, it became apparent that, as of now, the MusicBrainzAlbumProvider does essentially nothing aside from setting a few IDs. I do want to improve this, but I first want to get the plugin into a more workable state with the MetaBrainz library, as it's a pain to work with otherwise.

Release matching is currently a bit trash. Essentially, if it has a release ID, it uses that, which is great. But if it doesn't, it just takes the first release in the release group, or the first result of the search. That's incredibly naive and will lead to mismatched albums (which you can't see currently, since it doesn't use any of the info aside from the release date and annotation).
I'd like to take a look at how Picard and Beets handle release matching, to improve the way we do it. Obviously, this will come after the migration is done.

I think there's some discussion to be had in regards to merging this plugin with the Cover Art Archive one, at some point in the future.
Not only do we already get Cover Art Archive info in the API response we get here, but it could also improve the search experience for users by providing preview images and reducing the complexity of having to use multiple plugins.
I would hazard a guess that this would be done only after moving the MusicBrainz provider out of the server repository, though.

Issues


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/jellyfin/jellyfin/pull/6369 **Author:** [@heyhippari](https://github.com/heyhippari) **Created:** 8/1/2021 **Status:** ❌ Closed **Base:** `master` ← **Head:** `musicbrainz-improvements` --- ### 📝 Commits (3) - [`a71abe5`](https://github.com/jellyfin/jellyfin/commit/a71abe5d43e5b158e739884b27363eb7272ba2f1) Migrate MusicBrainz plugin to MetaBrainz.MusicBrainz - [`e4d5531`](https://github.com/jellyfin/jellyfin/commit/e4d553147fd516ab2850c19b23a5e374b0473e3c) Merge branch 'master' into musicbrainz-improvements - [`1dcd04b`](https://github.com/jellyfin/jellyfin/commit/1dcd04babcb3f18318a241277fba79a6cbd870f7) Clean up ### 📊 Changes **14 files changed** (+505 additions, -1115 deletions) <details> <summary>View changed files</summary> 📝 `MediaBrowser.Providers/MediaBrowser.Providers.csproj` (+1 -0) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/Configuration/PluginConfiguration.cs` (+44 -23) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumArtistExternalId.cs` (+16 -17) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumExternalId.cs` (+16 -17) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs` (+162 -710) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistExternalId.cs` (+16 -17) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistProvider.cs` (+114 -220) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzOtherArtistExternalId.cs` (+16 -17) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzReleaseGroupExternalId.cs` (+16 -17) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzTrackId.cs` (+16 -17) 📝 `MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs` (+44 -26) 📝 `src/Jellyfin.Extensions/EnumerableExtensions.cs` (+42 -32) 📝 `tests/Jellyfin.XbmcMetadata.Tests/Parsers/MusicAlbumNfoProviderTests.cs` (+1 -1) 📝 `tests/Jellyfin.XbmcMetadata.Tests/Parsers/MusicArtistNfoParserTests.cs` (+1 -1) </details> ### 📄 Description **Changes** * Removes the custom XML serializer * Use the MetaBrainz-recommended [MetaBrainz.MusicBrainz](https://github.com/Zastai/MetaBrainz.MusicBrainz/) library. This makes it a lot easier to get and do stuff with MusicBrainz data, removes a bunch of code on our end, handles rate limiting for us, has the MetaBrainz-approved user agent format and a bunch of other stuff. **Notes** ***Important***: I wanted to preserve the ability to use a custom server, but the library works a bit differently. Users will need to change `https://musicbrainz.com` to `musicbrainz.com`. We should also maybe add stuff like "Enable SSL for requests" to set HTTP/HTTPS and a port setting, but I'm not quite sure what the best way to do this would be. Suggestions are welcome. ~~This is still work in progress, hence the draft.~~ This is now at feature parity with the current provider. Through working on this, it became apparent that, as of now, the MusicBrainzAlbumProvider does essentially nothing aside from setting a few IDs. I do want to improve this, but I first want to get the plugin into a more workable state with the MetaBrainz library, as it's a pain to work with otherwise. Release matching is currently a bit trash. Essentially, if it has a release ID, it uses that, which is great. But if it doesn't, it just takes the first release in the release group, or the first result of the search. That's incredibly naive and will lead to mismatched albums (which you can't see currently, since it doesn't use any of the info aside from the release date and annotation). I'd like to take a look at how Picard and Beets handle release matching, to improve the way we do it. Obviously, this will come after the migration is done. I think there's some discussion to be had in regards to merging this plugin with the Cover Art Archive one, at some point in the future. Not only do we already get Cover Art Archive info in the API response we get here, but it could also improve the search experience for users by providing preview images and reducing the complexity of having to use multiple plugins. I would hazard a guess that this would be done only after moving the MusicBrainz provider out of the server repository, though. **Issues** <!-- Tag any issues that this PR solves here. ex. Fixes # --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
OVERLORD added the pull-request label 2026-02-07 06:29:27 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#10935