mirror of
https://github.com/beetbox/beets.git
synced 2026-02-08 16:34:12 +01:00
badfiles: added config options to automatically take action on error/warning
This commit is contained in:
parent
4572a7dc8a
commit
7310532a9c
3 changed files with 60 additions and 0 deletions
|
|
@ -170,16 +170,68 @@ class BadFiles(BeetsPlugin):
|
|||
if checks_failed:
|
||||
task._badfiles_checks_failed = checks_failed
|
||||
|
||||
def handle_import_action(self, action, failure_type):
|
||||
if action == "abort":
|
||||
ui.print_(
|
||||
f"{ui.colorize('text_warning', 'Aborting')}"
|
||||
f" due to import_action_on_{failure_type} configuration"
|
||||
)
|
||||
raise importer.ImportAbortError()
|
||||
elif action == "skip":
|
||||
ui.print_(
|
||||
f"{ui.colorize('text_warning', 'Skipping')}"
|
||||
f" due to import_action_on_{failure_type} configuration"
|
||||
)
|
||||
return importer.Action.SKIP
|
||||
elif action == "continue":
|
||||
ui.print_(
|
||||
f"{ui.colorize('text_warning', 'Continuing')}"
|
||||
f" due to import_action_on_{failure_type} configuration"
|
||||
)
|
||||
return None
|
||||
else:
|
||||
ui.print_(
|
||||
ui.colorize(
|
||||
"text_warning",
|
||||
f"Got invalid import_action_on_{failure_type}"
|
||||
f" configuration: {action}",
|
||||
)
|
||||
)
|
||||
ui.print_(
|
||||
ui.colorize(
|
||||
"text_warning",
|
||||
f"import_action_on_{failure_type} should be one of:"
|
||||
f" ask abort skip continue",
|
||||
)
|
||||
)
|
||||
raise importer.ImportAbortError()
|
||||
|
||||
def on_import_task_before_choice(self, task, session):
|
||||
if hasattr(task, "_badfiles_checks_failed"):
|
||||
warning_action = self.config["import_action_on_warning"].get("ask")
|
||||
error_action = self.config["import_action_on_error"].get("ask")
|
||||
|
||||
ui.print_(
|
||||
f"{ui.colorize('text_warning', 'BAD')} one or more files failed"
|
||||
" checks:"
|
||||
)
|
||||
|
||||
found_warning = False
|
||||
found_error = False
|
||||
for error in task._badfiles_checks_failed:
|
||||
for error_line in error:
|
||||
if "warning" in error_line.lower():
|
||||
found_warning = True
|
||||
if "error" in error_line.lower():
|
||||
found_error = True
|
||||
|
||||
ui.print_(error_line)
|
||||
|
||||
if found_error and error_action != "ask":
|
||||
return self.handle_import_action(error_action, "error")
|
||||
elif found_warning and warning_action != "ask":
|
||||
return self.handle_import_action(warning_action, "warning")
|
||||
|
||||
ui.print_()
|
||||
ui.print_("What would you like to do?")
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ been dropped.
|
|||
|
||||
New features:
|
||||
|
||||
- :doc:`plugins/badfiles`: Added settings for auto error and warning actions.
|
||||
- :doc:`plugins/fetchart`: Added config setting for a fallback cover art image.
|
||||
- :doc:`plugins/ftintitle`: Added argument for custom feat. words in ftintitle.
|
||||
- :doc:`plugins/ftintitle`: Added album template value ``album_artist_no_feat``.
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ You can also add custom commands for a specific extension, like this:
|
|||
|
||||
badfiles:
|
||||
check_on_import: yes
|
||||
import_action_on_error: skip
|
||||
import_action_on_warning: continue
|
||||
commands:
|
||||
ogg: myoggchecker --opt1 --opt2
|
||||
flac: flac --test --warnings-as-errors --silent
|
||||
|
|
@ -32,6 +34,11 @@ You can run the checkers when importing files by using the ``check_on_import``
|
|||
option. When on, checkers will be run against every imported file and warnings
|
||||
and errors will be presented when selecting a tagging option.
|
||||
|
||||
`import_action_on_error` and `import_action_on_warning` can be used to take
|
||||
automatic action on warning and errors. Both options default to `ask`.
|
||||
Valid options for both `import_action_on_(warning|error)` are
|
||||
`ask skip abort continue`.
|
||||
|
||||
.. _flac: https://xiph.org/flac/
|
||||
|
||||
.. _mp3val: http://mp3val.sourceforge.net/
|
||||
|
|
|
|||
Loading…
Reference in a new issue