- plugin functions currently unimplemented
- added authentication flow (pcke)
- added api layer to abstract communication with tidal (similar to spotify)
- added a general Request RateLimiter as I have seen that tidal will penalize
you pretty rough if you make more requests than expected.
Each song.store() was opening and committing its own SQLite transaction.
With thousands of unique tracks the WAL grows and each successive write
becomes slower. Wrapping the loop in a single transaction makes writes
O(1) per item instead of progressively slower.
Move MusicBrainzPlugin to SearchApiMetadataSourcePlugin hooks.
Keep entity mapping and criteria in provider-specific hooks.
Update typing and tests for the candidate search path.
* master: (37 commits)
importsource: Test skip, Test reimport-skip
Fix initial importsource plugin #4748 changelog
importsource: fix potential prevent_suggest_removal crash
Ensure that inc are joined with a plus
Add retries for connection errors
Add Usage block to RequestHandler
Refactor HTTP request handling with RequestHandler base class
Make musicbrainzngs dependency optional and requests required
musicbrainz: remove error handling
musicbrainz: access the custom server directly, if configured
musicbrainz: browse directly
musicbrainz: search directly
musicbrainz: lookup recordings directly
musicbrainz: lookup release directly
Move pseudo release lookup under the plugin
Add missing blame ignore revs from musicbrainz plugin
Define MusicBrainzAPI class with rate limiting
Move TimeoutSession under beetsplug._utils
expand tests to include check for track artists
remove changes for lastgenre as there was an existing PR for that work
...
Introduce a new RequestHandler base class to introduce a shared session,
centralize HTTP request management and error handling across plugins.
Key changes:
- Add RequestHandler base class with a shared/cached session
- Convert TimeoutSession to use SingletonMeta for proper resource
management
- Create LyricsRequestHandler subclass with lyrics-specific error
handling
- Update MusicBrainzAPI to inherit from RequestHandler
This PR moves the `vfs.py` module, which is only used by plugins, to
avoid polluting the main beets namespace. Also exposes the `vfs` and
`art` module from beets with a deprecation warning.