diff --git a/beetsplug/lastgenre/__init__.py b/beetsplug/lastgenre/__init__.py index b67a4476f..49b208838 100644 --- a/beetsplug/lastgenre/__init__.py +++ b/beetsplug/lastgenre/__init__.py @@ -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: