mirror of
https://github.com/beetbox/beets.git
synced 2026-03-29 17:55:43 +02:00
Merge 9be0a64d97 into 72b4c77161
This commit is contained in:
commit
14f237c798
3 changed files with 65 additions and 0 deletions
|
|
@ -168,15 +168,72 @@ 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"{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 'checker found 0 errors or warnings' in error_line.lower():
|
||||
continue
|
||||
|
||||
if "warning" in error_line.lower():
|
||||
found_warning = True
|
||||
if "error" in error_line.lower():
|
||||
found_error = True
|
||||
|
||||
ui.print_(error_line)
|
||||
|
||||
# Check for and handle automatic actions.
|
||||
# Errors always take precedence over warnings.
|
||||
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?")
|
||||
|
||||
|
|
|
|||
|
|
@ -241,6 +241,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 warnings 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: https://sourceforge.net/projects/mp3val/
|
||||
|
|
|
|||
Loading…
Reference in a new issue