beets
beets copied to clipboard
Implement "Create new release on musicbrainz" feature
Description
Closes #1866.
Implement support to create new releases on musicbrainz from unmatched albums directly.
Screencast from 2024-06-12 23-37-41.webm
See https://github.com/beetbox/beets/discussions/5299.
- When the new option is chosen, the MB release editor is opened in the browser, with known metadata already filled in. The plugin must launch an internal web server to do that.
- When the release is saved / created on musicbrainz, musicbrainz redirects to the local web server, submitting the new release ID. beets proceeds to import the album with that ID, similar to what happens when an ID is provided manually. (That's not shown in the screen cast)
See documentation and comments for details.
If no unmatched album is available for testing, set configuration mbsubmit.threshold to 'strong' and run import with --timid to select the new option.
To Do
- [x] Documentation. (If you've added a new command-line flag, for example, find the appropriate page under
docs/to describe it.) - [x] Changelog. (Add an entry to
docs/changelog.rstto the bottom of one of the lists near the top of the document.) - [x] Tests.
- [x] All todo marks still left in the code.
- [x] Add some more key comments to the code.
- [x] Add command to CLI
- [x] Do more testing on Windows and Linux after switch to Flask
- [x] Selecting Port "0" (let the OS choose) does not work when also specifying a hostname
Hey @doronbehar, If you're around, have a look at this. Maybe I can remove the "Open with Picard" option now that this here is implemented?
Thanks for the PR! I've made a couple comments but I'll also note that a fair amount of the changes in this PR are fairly boilerplate HTTP webserver stuff. Have you considered using something like simple-http-server or another package to deal with this? It would reduce the number of lines in the PR and make it easier to change in the future.
I thought about not pulling int too many new dependencies. I can also use flask instead, since that's already used by a couple other plugins...?
I don't think many dependencies is an issue that is too pressing. If it makes the code easier to read and maintain, that wins out over another dependency in my book. If flask is used by other plugins though, by all means use it!
Thank you for the review! It's now much cleaner and shorter with flask.
Hey @doronbehar, If you're around, have a look at this. Maybe I can remove the "Open with Picard" option now that this here is implemented?
Hey! Personally I won't mind it getting removed, as I'd definitely use this functionality once it will land! It also makes sense to me from a general point of view to remove it, but that needs an approval from the maintainers of beets.
Thanks for working on this feature!
Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.