Skip to content

Commit bc9bf6e

Browse files
committed
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).
1 parent c79d2d3 commit bc9bf6e

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

beetsplug/lastgenre/__init__.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -582,15 +582,25 @@ def lastgenre_func(lib, opts, args):
582582
if "track" in self.sources:
583583
item_genre, label = self._get_genre(item)
584584

585-
if not item_genre:
585+
# Fallback to album genre if required
586+
if (
587+
not item_genre
588+
or item_genre == self.config["fallback"].get()
589+
and album.genre
590+
and album.genre != self.config["fallback"].get()
591+
):
592+
item_genre = album.genre
593+
label = "inherit from album"
594+
595+
if item_genre:
596+
self._apply_item_genre(item, label, item_genre)
597+
if write:
598+
item.try_write()
599+
else:
586600
self._log.info(
587601
'No genre found for track "{0.title}"',
588602
item,
589603
)
590-
else:
591-
self._apply_item_genre(item, label, item.genre)
592-
if write:
593-
item.try_write()
594604

595605
else:
596606
# Just query single tracks or singletons
@@ -614,6 +624,17 @@ def imported(self, session, task):
614624
if "track" in self.sources:
615625
for item in album.items():
616626
item_genre, label = self._get_genre(item)
627+
628+
# Fallback to album genre if required
629+
if (
630+
not item_genre
631+
or item_genre == self.config["fallback"].get()
632+
and album.genre
633+
and album.genre != self.config["fallback"].get()
634+
):
635+
item_genre = album.genre
636+
label = "inherit from album"
637+
617638
self._apply_item_genre(item, label, item_genre)
618639

619640
else:

0 commit comments

Comments
 (0)