Commit graph

13007 commits

Author SHA1 Message Date
Sebastian Mohr
08d9f34df5
Discogs: artist name variation support + artist credit support. (#6050)
Implements #3354, updates #6040. This PR also improves typehints for the discogs plugin.

The name variations provided by Discogs can now be used by the
auto-tagger through 3 config options.
By default, the plugin will write the variation to the tag
`artist_credit`, but through three config options can also write it
to the album artist tag, the track's artist tag, or any combination of
the three.

This PR contains a small addition on #6040, letting the string used to
join featured artists be customized.

The new configuration options available, and their defaults, are as
follows:

```yaml
discogs:
  featured_string: "Feat."
  anv:
    artist_credit: True
    album_artist: False
    artist: False
```
2025-10-05 12:54:31 +02:00
henry
90120e451d
Merge branch 'master' into discogs-anv-support 2025-10-04 12:00:51 -07:00
Henry
ed73903deb type corrections 2025-10-04 11:59:15 -07:00
Henry
2a80bdef2e Added type hints to all functions 2025-10-04 11:03:17 -07:00
Henry
a909dddd16 adding typechecks, need to fix the medium discrepancy 2025-10-03 18:52:37 -07:00
J0J0 Todos
347802afea
fix spacing for "finding tags for" prompt (#6067) 2025-10-04 01:06:56 +02:00
Henry
267428f0a4 Merge branch 'master' of github.com:henry-oberholtzer/beets into discogs-anv-support 2025-10-03 15:05:48 -07:00
Henry
b9a840a2a3 Update all functions with types 2025-10-03 15:01:34 -07:00
Henry
f5acdec2b1 Update configuration format. 2025-10-03 14:44:22 -07:00
MinchinWeb
033e613016 fix spacing for "finding tags for" prompt 2025-10-03 14:48:56 -06:00
Sebastian Mohr
e12020abb8
Spotify: Store track attributes even if audio features are missing (#6062)
Fixes #6061
2025-10-02 12:05:43 +02:00
Alok Saboo
b66b2b51b5 Remove potentially expensive item.get() calls 2025-10-01 17:48:41 -04:00
Alok Saboo
7a097bb4b6 lint 2025-10-01 17:47:26 -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
f6ca68319d
Add git commit suffix to __version__ for development installs (#5967)
Make it obvious when beets is installed from from a non
major version. When installed locally this adds a git hash suffix and
the distance to the last release.

closes #4448
2025-10-01 12:58:57 +02:00
Sebastian Mohr
4782e96599
Move vfs.py to beetsplug._utils package to avoid polluting core namespace (#6017)
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.
2025-10-01 12:28:18 +02:00
Henry
fcebe8123a Expand documentation 2025-09-30 20:01:35 -07:00
Henry
9371ab81ec Merge remote-tracking branch 'origin' into discogs-anv-support 2025-09-30 19:23:23 -07:00
Sebastian Mohr
b06f3f6aa6
Improved beets/logging.py typing (#6032)
This PR enhances `beets/logging.py` with improved typing and tests:

* `getLogger` now returns the precise logger type (`BeetsLogger` or
`RootLogger`).
* Tests use `pytest` and `parametrize` for more concise and readable
coverage.
2025-09-30 13:47:08 +02:00
Sebastian Mohr
89c2e10680 Removed typealias, worked locally with mypy but does seem to cause
issues with the ci. Also python 3.9 requires unions here...
2025-09-30 13:39:49 +02:00
Sebastian Mohr
837295e250 Added typehints from typeshed and removed default argument. 2025-09-30 13:37:51 +02:00
Sebastian Mohr
caebf185f1 Removed unused ParamSpec and added a consistency check in the tests. 2025-09-30 13:37:51 +02:00
Sebastian Mohr
b2fc007480 Fixed plugin typehints: use actual logger class. 2025-09-30 13:37:51 +02:00
Sebastian Mohr
f637e5efbb Added overload to getLogger function. Added changelog entry
and added myself to codeowners file.
2025-09-30 13:37:51 +02:00
Sebastian Mohr
461bc049a0 Enhanced custom logger typing and logging tests 2025-09-30 13:37:51 +02:00
Šarūnas Nejus
689ec1022f
Fix plugin loading (#6039)
Fixes #6033

This PR addresses a bug where plugin loading failed when plugins
imported other `BeetsPlugin` classes, namely `chroma` and `bpsync`.

- Add module path filtering to ensure only classes from the target
plugin module are considered, preventing conflicts when plugins import
other `BeetsPlugin` classes
2025-09-29 11:47:16 +01:00
Šarūnas Nejus
7954671c73
Mock DummyPlugin properly 2025-09-29 11:39:16 +01:00
Šarūnas Nejus
c34b2a00a4
Fix plugin loading 2025-09-29 11:39:15 +01:00
Henry
c44c535b22 Fully parametrize testing 2025-09-28 10:49:56 -07:00
Henry
abc8c2d5d8 resolve overriding method type error 2025-09-27 15:05:14 -07:00
Henry
9efe728f47 type checking, tuple unpacking fix in various artists 2025-09-27 14:49:56 -07:00
Henry
b1903417f4 Add artist credit support, artist name variation support, more flexible featured credit. 2025-09-27 14:29:25 -07:00
Henry
1cf2254e74 Merge branch 'master' into dev 2025-09-27 11:48:52 -07:00
Šarūnas Nejus
4e865a6def
Discogs featured artist fix (#6040)
Fixes #6038 - Appends featured artists in the extraartists field to the
artist tag, similar to the MusicBrainz plugin. Works well with ftintitle
for consistency as well.

## To Do

May need adjustment for common artist delimiters used - but appears to
match the MusicBrainz standard at the moment.
2025-09-27 18:59:32 +01:00
Henry
dd57c0da2d improve flexibility of use of anv on artist tracks 2025-09-27 10:42:29 -07:00
Henry
85201a4e17 merge with master branch 2025-09-27 08:04:53 -07:00
Šarūnas Nejus
bc9d34ed98
Fix for Spotify Candidate Lookup. Changed query from double to single quotes. (#6049)
I noticed that spotify did not return any candidates for some of my
examples, but adding the search id manually would give a very good
match. I debugged it a bit and it seems like spotify does not like
double quotes we used for the search query.

Using single quotes fixed it for me.

Note that this does not seem to be documented in the [spotify api
documentation](https://developer.spotify.com/documentation/web-api/reference/search)

The example I used:

```
# Query with double quotes, which does not return any candidates
# Searching Spotify for 'album:"Flamethrower" artist:"Circadian, Cody Frost"'
https://api.spotify.com/v1/search?offset=0&limit=50&query=album%3A%22Flamethrower%22%20artist%3A%22Circadian%2C%20Cody%20Frost%22&type=album


# New Query
# Searching Spotify for 'album:'Flamethrower' artist:'Circadian, Cody Frost''
https://api.spotify.com/v1/search?offset=0&limit=5&query=album%3A%27Flamethrower%27%20artist%3A%27Circadian%2C%20Cody%20Frost%27&type=album
```
2025-09-27 13:34:20 +01:00
pSpitzner
cc0024e089 Spotify tests are now consistent with quote change 2025-09-27 13:22:41 +02:00
pSpitzner
a0a0a094d3 Changed query from double to single quotes. 2025-09-27 13:06:12 +02:00
Henry
1e677d57c1 Updates to documentation 2025-09-26 21:37:18 -07:00
Henry
0ec6689395 test updates, one case still failing 2025-09-26 17:56:25 -07:00
Henry
5a43d6add4 Testing and implemented anv method, also added Featuring customizable string 2025-09-26 16:01:33 -07:00
Henry
533aa6379b Test working, need to implement anv now 2025-09-25 22:38:02 -07:00
Henry Oberholtzer
9c8172be12 Write initial ANV test 2025-09-26 01:55:28 +02:00
Henry
751919e9f9 merge with upstream 2025-09-25 08:47:27 -07:00
Henry
b61306ea0d Fixes, test improvement, rebase to master 2025-09-25 08:39:38 -07:00
Henry
43f2d423fa testing, updated changelog 2025-09-25 08:19:46 -07:00
Henry
876c57c8b3 Featured artists extracted and appended, need to see if join needs to be variable 2025-09-25 08:19:46 -07:00
Henry
5c03672874 Test written, beginning fix 2025-09-25 08:19:46 -07:00
Šarūnas Nejus
64c94f61b7
Metadata option (#6041)
My usecase needs the `convert` to not write tags so I can write my own
APEv2 tags. This PR adds a write_metadata option to disable the
`convert` plugin writing metadata to the converted files.
2025-09-25 03:34:58 +01:00