mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-21 07:55:23 +00:00
PICARD-259: Execute tagger script when file gets moved to track
This allows using file specific metadata and variables (such as e.g. %_bitrate%) to be used in tagger script. Also fixes PICARD-23
This commit is contained in:
@@ -170,7 +170,12 @@ class Track(DataObject, Item):
|
||||
def update_file_metadata(self, file):
|
||||
if file not in self.linked_files:
|
||||
return
|
||||
file.copy_metadata(self.metadata)
|
||||
# Run the scripts for the file to allow usage of
|
||||
# file specific metadata and variables
|
||||
metadata = Metadata(file.metadata)
|
||||
metadata.update(self.orig_metadata)
|
||||
self.run_scripts(metadata)
|
||||
file.copy_metadata(metadata)
|
||||
file.metadata['~extension'] = file.orig_metadata['~extension']
|
||||
file.update(signal=False)
|
||||
self.update()
|
||||
@@ -189,6 +194,16 @@ class Track(DataObject, Item):
|
||||
if self.item.isSelected():
|
||||
self.tagger.window.refresh_metadatabox()
|
||||
|
||||
@staticmethod
|
||||
def run_scripts(metadata):
|
||||
for s_name, s_text in enabled_tagger_scripts_texts():
|
||||
parser = ScriptParser()
|
||||
try:
|
||||
parser.eval(s_text, metadata)
|
||||
except ScriptError:
|
||||
log.exception("Failed to run tagger script %s on track", s_name)
|
||||
metadata.strip_whitespace()
|
||||
|
||||
def update(self):
|
||||
if self.item:
|
||||
self.item.update()
|
||||
@@ -403,14 +418,7 @@ class NonAlbumTrack(Track):
|
||||
self.orig_metadata.copy(m)
|
||||
self._customize_metadata()
|
||||
run_track_metadata_processors(self.album, m, recording)
|
||||
for s_name, s_text in enabled_tagger_scripts_texts():
|
||||
parser = ScriptParser()
|
||||
try:
|
||||
parser.eval(s_text, m)
|
||||
except ScriptError:
|
||||
log.exception("Failed to run tagger script %s on track", s_name)
|
||||
m.strip_whitespace()
|
||||
|
||||
self.run_scripts(m)
|
||||
self.loaded = True
|
||||
self.status = None
|
||||
if self.callback:
|
||||
|
||||
Reference in New Issue
Block a user