lastgenre: Plugin tuning log (-vvv) (#6007)

This commit is contained in:
J0J0 Todos 2025-10-25 17:38:42 +02:00 committed by GitHub
commit 201677ae62
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 20 additions and 15 deletions

View file

@ -106,7 +106,6 @@ class LastGenrePlugin(plugins.BeetsPlugin):
"separator": ", ", "separator": ", ",
"prefer_specific": False, "prefer_specific": False,
"title_case": True, "title_case": True,
"extended_debug": False,
"pretend": False, "pretend": False,
} }
) )
@ -162,6 +161,11 @@ class LastGenrePlugin(plugins.BeetsPlugin):
flatten_tree(genres_tree, [], c14n_branches) flatten_tree(genres_tree, [], c14n_branches)
return c14n_branches, canonicalize return c14n_branches, canonicalize
def _tunelog(self, msg, *args, **kwargs):
"""Log tuning messages at DEBUG level when verbosity level is high enough."""
if config["verbose"].as_number() >= 3:
self._log.debug(msg, *args, **kwargs)
@property @property
def sources(self) -> tuple[str, ...]: def sources(self) -> tuple[str, ...]:
"""A tuple of allowed genre sources. May contain 'track', """A tuple of allowed genre sources. May contain 'track',
@ -293,8 +297,7 @@ class LastGenrePlugin(plugins.BeetsPlugin):
self._genre_cache[key] = self.fetch_genre(method(*args)) self._genre_cache[key] = self.fetch_genre(method(*args))
genre = self._genre_cache[key] genre = self._genre_cache[key]
if self.config["extended_debug"]: self._tunelog("last.fm (unfiltered) {} tags: {}", entity, genre)
self._log.debug("last.fm (unfiltered) {} tags: {}", entity, genre)
return genre return genre
def fetch_album_genre(self, obj): def fetch_album_genre(self, obj):
@ -554,13 +557,6 @@ class LastGenrePlugin(plugins.BeetsPlugin):
dest="album", dest="album",
help="match albums instead of items (default)", help="match albums instead of items (default)",
) )
lastgenre_cmd.parser.add_option(
"-d",
"--debug",
action="store_true",
dest="extended_debug",
help="extended last.fm debug logging",
)
lastgenre_cmd.parser.set_defaults(album=True) lastgenre_cmd.parser.set_defaults(album=True)
def lastgenre_func(lib, opts, args): def lastgenre_func(lib, opts, args):

View file

@ -14,6 +14,10 @@ New features:
album artist are the same in ftintitle. album artist are the same in ftintitle.
- :doc:`plugins/play`: Added `$playlist` marker to precisely edit the playlist - :doc:`plugins/play`: Added `$playlist` marker to precisely edit the playlist
filepath into the command calling the player program. filepath into the command calling the player program.
- :doc:`plugins/lastgenre`: For tuning plugin settings ``-vvv`` can be passed
to receive extra verbose logging around last.fm results and how they are
resolved. The ``extended_debug`` config setting and ``--debug`` option
have been removed.
Bug fixes: Bug fixes:

View file

@ -197,11 +197,6 @@ file. The available options are:
internal whitelist, or ``no`` to consider all genres valid. Default: ``yes``. internal whitelist, or ``no`` to consider all genres valid. Default: ``yes``.
- **title_case**: Convert the new tags to TitleCase before saving. Default: - **title_case**: Convert the new tags to TitleCase before saving. Default:
``yes``. ``yes``.
- **extended_debug**: Add additional debug logging messages that show what
last.fm tags were fetched for tracks, albums and artists. This is done before
any canonicalization and whitelist filtering is applied. It's useful for
tuning the plugin's settings and understanding how it works, but it can be
quite verbose. Default: ``no``.
Running Manually Running Manually
---------------- ----------------
@ -219,3 +214,13 @@ or store any changes.
To disable automatic genre fetching on import, set the ``auto`` config option to To disable automatic genre fetching on import, set the ``auto`` config option to
false. false.
Tuning Logs
-----------
To enable tuning logs, run ``beet -vvv lastgenre ...`` or ``beet -vvv import
...``. This enables additional messages at the ``DEBUG`` log level, showing for
example what data was received from last.fm at each stage of genre fetching
(artist, album, and track levels) before any canonicalization or whitelist
filtering is applied. Tuning logs are useful for adjusting the plugins settings
and understanding its behavior, though they can be quite verbose.