Replace enabled_tagger_scripts_texts() with iter_active_tagging_scripts()

- it iterates over enabled and non-empty tagger scripts
- it yields TaggingScriptSetting objects
This commit is contained in:
Laurent Monin
2024-05-26 16:25:47 +02:00
parent 2207e9f034
commit 1f49e7809f
3 changed files with 18 additions and 16 deletions

View File

@@ -82,7 +82,7 @@ from picard.plugin import (
from picard.script import (
ScriptError,
ScriptParser,
enabled_tagger_scripts_texts,
iter_active_tagging_scripts,
)
from picard.track import Track
from picard.util import (
@@ -474,21 +474,21 @@ class Album(DataObject, MetadataItem):
track.metadata_images_changed.connect(self.update_metadata_images)
# Prepare parser for user's script
for s_name, s_text in enabled_tagger_scripts_texts():
for script in iter_active_tagging_scripts():
parser = ScriptParser()
for track in self._new_tracks:
# Run tagger script for each track
try:
parser.eval(s_text, track.metadata)
parser.eval(script.content, track.metadata)
except ScriptError:
log.exception("Failed to run tagger script %s on track", s_name)
log.exception("Failed to run tagger script %s on track", script.name)
track.metadata.strip_whitespace()
track.scripted_metadata.update(track.metadata)
# Run tagger script for the album itself
try:
parser.eval(s_text, self._new_metadata)
parser.eval(script.content, self._new_metadata)
except ScriptError:
log.exception("Failed to run tagger script %s on album", s_name)
log.exception("Failed to run tagger script %s on album", script.name)
self._new_metadata.strip_whitespace()
unmatched_files = [file for track in self.tracks for file in track.files]

View File

@@ -136,13 +136,15 @@ def script_function_documentation_all(fmt='markdown', pre='',
return "\n".join(doc_elements)
def enabled_tagger_scripts_texts():
"""Returns an iterator over the enabled tagger scripts.
For each script, you'll get a tuple consisting of the script name and text"""
config = get_config()
def iter_active_tagging_scripts(config=None):
"""Returns an iterator over the enabled and not empty tagging scripts."""
if config is None:
config = get_config()
if not config.setting['enable_tagger_scripts']:
return []
return [(s.name, s.content) for s in iter_tagging_scripts_from_config(config=config) if s.enabled and s.content]
return
for script in iter_tagging_scripts_from_config(config=config):
if script.enabled and script.content:
yield script
def get_file_naming_script(settings):

View File

@@ -71,7 +71,7 @@ from picard.metadata import (
from picard.script import (
ScriptError,
ScriptParser,
enabled_tagger_scripts_texts,
iter_active_tagging_scripts,
)
from picard.util import pattern_as_regex
from picard.util.imagelist import ImageList
@@ -201,12 +201,12 @@ class Track(DataObject, FileListItem):
@staticmethod
def run_scripts(metadata, strip_whitespace=False):
for s_name, s_text in enabled_tagger_scripts_texts():
for script in iter_active_tagging_scripts():
parser = ScriptParser()
try:
parser.eval(s_text, metadata)
parser.eval(script.content, metadata)
except ScriptError:
log.exception("Failed to run tagger script %s on track", s_name)
log.exception("Failed to run tagger script %s on track", script.name)
if strip_whitespace:
metadata.strip_whitespace()