Commit Graph

247 Commits

Author SHA1 Message Date
Šarūnas Nejus
29580d2f00 Import everything from parent beets.autotag 2026-06-02 08:57:35 +01:00
Alok Saboo
f8a834fb7a add typehints 2026-06-01 10:46:57 +02:00
Alok Saboo
4b554e9697 Batch SQLite commits and follow write-before-store pattern 2026-06-01 10:46:57 +02:00
Sebastian Mohr
adfb73b66d Run ruff format 2026-05-20 16:53:06 +02:00
Šarūnas Nejus
30ab81eb5b Extract UserError from beets.ui to a new beets.exceptions module.
Update all references in core, plugins, and tests to import UserError
from the new location. This centralizes exception handling and improves
code organization.
2026-05-16 11:18:51 +01:00
Alok Saboo
e84ce4198a Revert unrelated docstring reformatting 2026-04-29 08:33:31 -04:00
Alok Saboo
2c7274fff1 Address reviewer comments and update related tests 2026-04-19 09:08:55 -04:00
Alok Saboo
ea72d3f117 more lint 2026-04-18 21:28:42 -04:00
Alok Saboo
b8e029669c simplify 2026-04-18 21:24:37 -04:00
Alok Saboo
99b81c550f lint 2026-04-18 21:16:39 -04:00
Alok Saboo
826aaeb4b3 Address reviewer comments 2026-04-18 21:07:48 -04:00
Alok Saboo
75cfa0d751 Address reviewer coments 2026-03-31 19:49:04 -04:00
Alok Saboo
913149ef8f Fix Spotify batch helper typing for mypy 2026-03-31 19:45:29 -04:00
Alok Saboo
2d6711e404 lint 2026-03-31 19:41:51 -04:00
Alok Saboo
d4d265e7e0 batch spotify requests 2026-03-31 19:33:56 -04:00
Šarūnas Nejus
46aa0a4ba5 Make get_search_query_with_filters abstract 2026-03-08 09:06:00 +00:00
Šarūnas Nejus
0670611d7a Document new methods 2026-03-08 09:00:14 +00:00
Šarūnas Nejus
9855d46901 Bound Spotify auth retry during search
Replace recursive 401 handling with a single retry loop.

This prevents unbounded recursion when authentication keeps failing.
2026-03-08 09:00:14 +00:00
Šarūnas Nejus
27bb34411c Refactor shared search API flow
Move search orchestration into SearchApiMetadataSourcePlugin.

Migrate Deezer, Spotify, and Discogs to provider hooks.

Keep query handling, logging, and limits centralized.
2026-03-08 09:00:14 +00:00
Šarūnas Nejus
1c20e4bd4e Address RUF012 2026-01-13 20:55:40 +00:00
Šarūnas Nejus
078ffc1c57 Configure ruff for py310 2026-01-13 20:55:40 +00:00
Šarūnas Nejus
b964d8b7eb Configure future-annotations 2026-01-13 20:55:40 +00:00
Alok Saboo
cff631f9c9 updated credentials 2026-01-11 09:20:03 -05:00
Alok Saboo
dd3ecec579 Updated Spotify API credentials 2026-01-07 18:54:39 -05:00
Arden Rasmussen
a7170fae45 expand tests to include check for track artists 2025-12-18 16:23:58 -08:00
Arden Rasmussen
01e0aeb662 address linter and ai comments from pr 2025-12-17 12:20:05 -08:00
Arden Rasmussen
963a9692cc added tests for multi-artist spotify and lastgenre changes 2025-12-17 11:54:12 -08:00
Arden Rasmussen
62256adf4e support multiple artists for spotify and improve multiartist support for lastgenre 2025-12-17 10:52:50 -08:00
Šarūnas Nejus
d486885af3 pyupgrade Python 3.10 2025-11-08 12:09:52 +00:00
Alok Saboo
7724c661a4 hopefully...this works 2025-10-30 10:49:51 -04:00
Alok Saboo
447511b4c8 ruff formating 2025-10-30 10:47:07 -04:00
Alok Saboo
8305821488 more lint 2025-10-30 10:34:30 -04:00
Alok Saboo
4302ca97eb resolve sorucery issue....make it thread safe 2025-10-30 10:29:07 -04:00
Alok Saboo
e6c70f06c1 lint 2025-10-30 10:20:53 -04:00
Alok Saboo
0d11e19ecf Spotify: gracefully handle 403 from deprecated audio-features API
Add a dedicated AudioFeaturesUnavailableError and track audio-features
availability with an audio_features_available flag. If the audio-features
endpoint returns HTTP 403, raise the new error, log a warning once, and
disable further audio-features requests for the session. The plugin now
skips attempting audio-features lookups when disabled (avoiding repeated
failed calls and potential rate-limit issues).

Also update changelog to document the behavior.
2025-10-30 10:13:54 -04:00
Alok Saboo
b66b2b51b5 Remove potentially expensive item.get() calls 2025-10-01 17:48:41 -04:00
Alok Saboo
70a4d0462d Persist spotify track attributes even if audio features are missing 2025-10-01 17:15:13 -04:00
Sebastian Mohr
efbfc23931 Removed config options and fixed a bug with beet spotify command 2025-09-19 17:20:51 +02:00
Sebastian Mohr
c7ba399dd1 fix incorrect matches when album is missing or empty
closes #5189
2025-09-19 17:20:51 +02:00
Šarūnas Nejus
17bc11034f Limit search query results using request parameters 2025-09-01 04:36:54 +01:00
Šarūnas Nejus
20497d3d9b Dedupe search_limit config option init 2025-09-01 04:10:53 +01:00
Šarūnas Nejus
d00d51e0bf Add configurable search_limit to Spotify and Deezer plugins 2025-08-31 18:48:46 +01:00
Šarūnas Nejus
b3d434f58f Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
Šarūnas Nejus
d6b6ac3387 Replace logging f-strings with arguments 2025-08-30 23:10:21 +01:00
Šarūnas Nejus
d93ddf8dd4 Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
Šarūnas Nejus
1c16b2b308 Replace string concatenation (' + ')
- Join hardcoded strings
- Replace concatenated variables with f-strings
2025-08-30 23:10:15 +01:00
Šarūnas Nejus
4a361bd501 Replace format calls with f-strings 2025-08-30 18:42:26 +01:00
Sebastian Mohr
1c0484c4ba renamed keywords to query_string, shortened query construct expression,
removed legacy isinstance check
2025-08-26 13:41:11 +02:00
Sebastian Mohr
f81684e188 Moved construct search into SearchApiMetadataSource to dedupe some
deezer and spotify functionalities.
2025-08-26 13:41:11 +02:00
Šarūnas Nejus
7509843517 Fix a generic type error and warnings in spotify 2025-07-16 14:15:27 +01:00