mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 08:39:17 +01:00
lastgenre: Album to item genre fallback
In case individual track sources are enabled but no genre could be fetched from last.fm, fall back to the album's genre (only if that is not the fallback genre already).
This commit is contained in:
parent
aaa9be123b
commit
0f408416ac
1 changed files with 26 additions and 6 deletions
|
|
@ -582,16 +582,25 @@ class LastGenrePlugin(plugins.BeetsPlugin):
|
|||
if "track" in self.sources:
|
||||
item_genre, label = self._get_genre(item)
|
||||
|
||||
if not item_genre:
|
||||
# Fallback to album genre if required
|
||||
if (
|
||||
not item_genre
|
||||
or item_genre == self.config["fallback"].get()
|
||||
and album.genre
|
||||
and album.genre != self.config["fallback"].get()
|
||||
):
|
||||
item_genre = album.genre
|
||||
label = "inherit from album"
|
||||
|
||||
if item_genre:
|
||||
self._apply_item_genre(item, label, item_genre)
|
||||
if write:
|
||||
item.try_write()
|
||||
else:
|
||||
self._log.info(
|
||||
'No genre found for track "{0.title}"',
|
||||
item,
|
||||
)
|
||||
else:
|
||||
self._apply_item_genre(item, label, item_genre)
|
||||
if write:
|
||||
item.try_write()
|
||||
|
||||
else:
|
||||
# Just query single tracks or singletons
|
||||
for item in lib.items(args):
|
||||
|
|
@ -614,6 +623,17 @@ class LastGenrePlugin(plugins.BeetsPlugin):
|
|||
if "track" in self.sources:
|
||||
for item in album.items():
|
||||
item_genre, label = self._get_genre(item)
|
||||
|
||||
# Fallback to album genre if required
|
||||
if (
|
||||
not item_genre
|
||||
or item_genre == self.config["fallback"].get()
|
||||
and album.genre
|
||||
and album.genre != self.config["fallback"].get()
|
||||
):
|
||||
item_genre = album.genre
|
||||
label = "inherit from album"
|
||||
|
||||
self._apply_item_genre(item, label, item_genre)
|
||||
|
||||
else:
|
||||
|
|
|
|||
Loading…
Reference in a new issue