This commit is contained in:
Jamie Hardt
2024-07-01 22:56:48 -07:00
parent 17bbfccb7e
commit 3bcff0b2c8
2 changed files with 29 additions and 31 deletions

View File

@@ -55,7 +55,7 @@ def create_batch_list(command_file: str, recursive=True):
keys = list(metadatums.keys()) keys = list(metadatums.keys())
for key in keys: for key in keys:
if key not in this_file_metadata.keys(): if key not in this_file_metadata:
f.write(f":unset {key}\n") f.write(f":unset {key}\n")
del metadatums[key] del metadatums[key]

View File

@@ -9,10 +9,10 @@ import shutil
import re import re
import os.path import os.path
import mfbatch.metaflac as flac
from typing import Dict, Tuple, Optional from typing import Dict, Tuple, Optional
import mfbatch.metaflac as flac
class UnrecognizedCommandError(Exception): class UnrecognizedCommandError(Exception):
"A command in the batchfile was not recognized" "A command in the batchfile was not recognized"
@@ -75,8 +75,7 @@ class CommandEnv:
Evaluate all patterns, this must run once and exactly once before Evaluate all patterns, this must run once and exactly once before
writing file metadata. writing file metadata.
""" """
for to_key in self.patterns.keys(): for to_key, (from_key, pattern, replacement) in self.patterns.items():
from_key, pattern, replacement = self.patterns[to_key]
from_value = self.metadatums[from_key] from_value = self.metadatums[from_key]
self.metadatums[to_key] = re.sub(pattern, replacement, from_value) self.metadatums[to_key] = re.sub(pattern, replacement, from_value)
@@ -111,7 +110,7 @@ class CommandEnv:
keys = list(self.onces) keys = list(self.onces)
for key in keys: for key in keys:
del self.metadatums[key] del self.metadatums[key]
if self.onces[key] != None: if self.onces[key] is not None:
self.metadatums[key] = self.onces[key] or '' self.metadatums[key] = self.onces[key] or ''
del self.onces[key] del self.onces[key]
@@ -120,8 +119,8 @@ class CommandEnv:
""" """
Increment all increment keys. Increment all increment keys.
""" """
for k in self.incr.keys(): for k, v in self.incr.items():
v = int(self.metadatums[k]) v = int(v)
self.metadatums[k] = self.incr[k] % (v + 1) self.metadatums[k] = self.incr[k] % (v + 1)
@@ -167,7 +166,7 @@ they appear in the batchfile.
if args[0] in actions: if args[0] in actions:
try: try:
self.__getattribute__(args[0])(args[1:]) getattr(self, args[0])(args[1:])
except KeyError as exc: except KeyError as exc:
raise CommandArgumentError(command=args[0], raise CommandArgumentError(command=args[0],
line=lineno) from exc line=lineno) from exc
@@ -177,9 +176,7 @@ they appear in the batchfile.
def _handle_comment(self, _): def _handle_comment(self, _):
pass pass
def _handle_file(self, line, interactive): def _write_metadata_impl(self, line):
def write_metadata_impl():
if self.dry_run: if self.dry_run:
print("DRY RUN would write metadata here.") print("DRY RUN would write metadata here.")
else: else:
@@ -191,6 +188,7 @@ they appear in the batchfile.
self.env.revert_onces() self.env.revert_onces()
self.env.clear_file_keys() self.env.clear_file_keys()
def _handle_file(self, line, interactive):
while True: while True:
self.env.set_file_keys(line) self.env.set_file_keys(line)
@@ -206,9 +204,9 @@ they appear in the batchfile.
if key.startswith('_'): if key.startswith('_'):
continue continue
LINE_LEN = int(shutil.get_terminal_size()[0]) - 32 line_len = int(shutil.get_terminal_size()[0]) - 32
value_lines = [value[i:i+LINE_LEN] for i in value_lines = [value[i:i+line_len] for i in
range(0, len(value), LINE_LEN)] range(0, len(value), line_len)]
for l in value_lines: for l in value_lines:
if key: if key:
@@ -219,18 +217,18 @@ they appear in the batchfile.
if interactive: if interactive:
val = input('Write? [Y/n/a/:] > ') val = input('Write? [Y/n/a/:] > ')
if val == '' or val.startswith('Y') or val.startswith('y'): if val == '' or val[0].upper() == 'Y':
write_metadata_impl() self._write_metadata_impl(line)
break break
elif val.startswith(self.COMMAND_LEADER): if val.startswith(self.COMMAND_LEADER):
self._handle_command(val.lstrip(self.COMMAND_LEADER), self._handle_command(val.lstrip(self.COMMAND_LEADER),
lineno=-1) lineno=-1)
continue
elif val == 'a': elif val == 'a':
print("Aborting write session...", file=sys.stdout) print("Aborting write session...", file=sys.stdout)
break break
else:
write_metadata_impl() self._write_metadata_impl(line)
break
def set(self, args): def set(self, args):
""" """