diff --git a/beetsplug/lastgenre/__init__.py b/beetsplug/lastgenre/__init__.py index a340c1e19..a26b1fd82 100644 --- a/beetsplug/lastgenre/__init__.py +++ b/beetsplug/lastgenre/__init__.py @@ -380,34 +380,45 @@ class LastGenrePlugin(plugins.BeetsPlugin): u'-s', u'--source', dest='source', type='string', help=u'genre source: artist, album, or track' ) + lastgenre_cmd.parser.add_option( + u'-A', u'--tracks', action='store_true', default=False, + help=u'match tracks instead of albums' + ) + lastgenre_cmd.parser.add_option( + u'-a', u'--albums', action='store_true', default=True, + help=u'match albums instead of tracks' + ) def lastgenre_func(lib, opts, args): write = ui.should_write() self.config.set_args(opts) - for album in lib.albums(ui.decargs(args)): - album.genre, src = self._get_genre(album) - self._log.info(u'genre for album {0} ({1}): {0.genre}', - album, src) - album.store() + if opts.albums: + for album in lib.albums(ui.decargs(args)): + album.genre, src = self._get_genre(album) + self._log.info(u'genre for album {0} ({1}): {0.genre}', + album, src) + album.store() - for item in album.items(): - # If we're using track-level sources, also look up each - # track on the album. - if 'track' in self.sources: - item.genre, src = self._get_genre(item) - item.store() - self._log.info(u'genre for track {0} ({1}): {0.genre}', - item, src) + for item in album.items(): + # If we're using track-level sources, also look up each + # track on the album. + if 'track' in self.sources: + item.genre, src = self._get_genre(item) + item.store() + self._log.info(u'genre for track {0} ({1}): {0.genre}', + item, src) + + if write: + item.try_write() + + if opts.tracks: + for item in lib.items(ui.decargs(args)): + item.genre, src = self._get_genre(item) + self._log.debug(u'added last.fm item genre ({0}): {1}', src, + item.genre) + item.store() - if write: - item.try_write() - - for item in lib.items(ui.decargs(args)): - item.genre, src = self._get_genre(item) - self._log.debug(u'added last.fm item genre ({0}): {1}', src, - item.genre) - item.store() lastgenre_cmd.func = lastgenre_func return [lastgenre_cmd]