Added command line options to query explicit for albums and / or tracks.

This commit is contained in:
Rainer Hihn 2019-04-18 22:31:49 +02:00
parent fc95fb86a1
commit 0b2334f8e8

View file

@ -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]