8 Commits

Author SHA1 Message Date
Jamie Hardt
4241d3a4e8 autopep 2025-05-26 12:11:24 -07:00
Jamie Hardt
33fd0597cd Rename tested and addressed bugs 2025-05-26 12:10:22 -07:00
Jamie Hardt
cb10eec36a implemented rename 2025-05-25 12:18:15 -07:00
Jamie Hardt
180adcbbe4 Nudge version number 2025-05-25 11:29:34 -07:00
Jamie Hardt
b315680bdd Merge pull request #2 from iluvcapra/iluvcapra-patch-1
Feature: Get file list from file
2025-05-25 11:28:32 -07:00
Jamie Hardt
ef1377a616 Update pyproject.toml
Nudge version to 0.5.2
2025-05-24 21:46:43 -07:00
Jamie Hardt
b7535618e6 Merge pull request #3 from iluvcapra/iluvcapra-patch-2
Update python-publish.yml
2025-05-24 21:46:06 -07:00
Jamie Hardt
dfa2a2a5ad Update python-publish.yml
Updated publish action
2025-05-24 21:41:21 -07:00
3 changed files with 42 additions and 6 deletions

View File

@@ -35,4 +35,4 @@ jobs:
- name: Build package - name: Build package
run: python -m build run: python -m build
- name: Publish package - name: Publish package
uses: pypa/gh-action-pypi-publish@v1.8.6 uses: pypa/gh-action-pypi-publish@v1.12.4

View File

@@ -115,6 +115,9 @@ class CommandEnv:
del self.metadatums['_FILENAME'] del self.metadatums['_FILENAME']
del self.metadatums['_FOLDER'] del self.metadatums['_FOLDER']
if '_NEW_BASENAME' in self.metadatums:
del self.metadatums['_NEW_BASENAME']
def revert_onces(self): def revert_onces(self):
""" """
Revert all set-once keys. Revert all set-once keys.
@@ -192,13 +195,29 @@ they appear in the batchfile.
def _handle_comment(self, _): def _handle_comment(self, _):
pass pass
def _write_metadata_impl(self, line): def _write_metadata_and_rename_impl(self, line):
if self.dry_run: if self.dry_run:
print("DRY RUN would write metadata here.", file=self.outstream) print("DRY RUN would write metadata here.", file=self.outstream)
if '_NEW_BASENAME' in self.env.metadatums:
self.outstream.write('DRY RUN would rename file here.\n')
else: else:
self.outstream.write("Writing metadata... ") self.outstream.write("Writing metadata... ")
self.write_metadata_f(line, self.env.metadatums) self.write_metadata_f(line, self.env.metadatums)
self.outstream.write("Complete!") self.outstream.write("Complete!\n")
if '_NEW_BASENAME' in self.env.metadatums:
self.outstream.write("Attempting to rename... ")
full_old_path = os.path.abspath(line)
new_name = os.path.join(os.path.dirname(full_old_path),
self.env.metadatums['_NEW_BASENAME'])
if not os.path.exists(new_name):
os.rename(line, new_name)
self.outstream.write('File renamed!\n')
else:
self.outstream.write('File by new name already exists, '
'rename was not performed.\n')
self.env.increment_all() self.env.increment_all()
self.env.revert_onces() self.env.revert_onces()
@@ -234,10 +253,16 @@ they appear in the batchfile.
self._print_kv_columnar(key, value) self._print_kv_columnar(key, value)
if '_NEW_BASENAME' in self.env.metadatums:
print("")
msg = "File will be renamed:"
print(
f"{msg:.<30} \033[4m{self.env.metadatums['_NEW_BASENAME']}\033[0m\n")
if interactive: if interactive:
val = input('Write? [Y/n/a/:] > ') val = input('Write? [Y/n/a/:] > ')
if val == '' or val[0].upper() == 'Y': if val == '' or val[0].upper() == 'Y':
self._write_metadata_impl(line) self._write_metadata_and_rename_impl(line)
break break
if 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),
@@ -246,7 +271,7 @@ they appear in the batchfile.
print("Aborting write session...", file=sys.stdout) print("Aborting write session...", file=sys.stdout)
break break
else: else:
self._write_metadata_impl(line) self._write_metadata_and_rename_impl(line)
break break
def set(self, args): def set(self, args):
@@ -322,6 +347,17 @@ they appear in the batchfile.
repl = args[3] repl = args[3]
self.env.set_pattern(key, inp, pattern, repl) self.env.set_pattern(key, inp, pattern, repl)
def rename(self, args):
"""
rename NEW-BASENAME
Renames the next file to NEW-BASENAME. The existing file is renamed
while keeping it in the same directory by appending the dirname and
NEW-BASENAME and performing an mv(1). Renaming occurs after metadata
writing. If a file with NEW-BASENAME already exists in the directory,
the action will not be performed.
"""
self.env.set_once('_NEW_BASENAME', args[0])
def d(self, args): def d(self, args):
""" """
d VALUE d VALUE

View File

@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "mfbatch" name = "mfbatch"
version = "0.5.1" version = "0.6.0"
description = "MetaFlac batch editor" description = "MetaFlac batch editor"
authors = ["Jamie Hardt <jamiehardt@me.com>"] authors = ["Jamie Hardt <jamiehardt@me.com>"]
readme = "README.md" readme = "README.md"