diff --git a/plugins/RenameFile/renamefile.py b/plugins/RenameFile/renamefile.py index 3dfd3571..139855f0 100644 --- a/plugins/RenameFile/renamefile.py +++ b/plugins/RenameFile/renamefile.py @@ -388,12 +388,12 @@ def rename_scene(scene_id): original_file_name = Path(original_file_path).name new_filename = form_filename(original_file_stem, scene_details) max_filename_length = int(config["max_filename_length"]) - if len(new_filename) > max_filename_length: - extension_length = len(Path(original_file_path).suffix) - max_base_filename_length = max_filename_length - extension_length - truncated_filename = new_filename[:max_base_filename_length] + extension_length = len(Path(original_file_path).suffix) + if len(new_filename) + extension_length > max_filename_length: hash_suffix = hashlib.md5(new_filename.encode()).hexdigest() - new_filename = truncated_filename + '_' + hash_suffix + Path(original_file_path).suffix + max_base_filename_length = max_filename_length - extension_length - len(hash_suffix) - 1 + truncated_filename = new_filename[:max_base_filename_length] + new_filename = truncated_filename + '_' + hash_suffix newFilenameWithExt = new_filename + Path(original_file_path).suffix new_file_path = f"{original_parent_directory}{os.sep}{new_filename}{Path(original_file_name).suffix}" org_file_root_stem = f"{original_parent_directory}{os.sep}{original_file_stem}" @@ -444,15 +444,15 @@ def rename_scene(scene_id): stash.Trace(f"Calling [metadata_scan] for path {original_parent_directory.resolve().as_posix()}") stash.metadata_scan(paths=[original_parent_directory.resolve().as_posix()]) if targetDidExist: - raise + return None if os.path.isfile(new_file_path): if os.path.isfile(original_file_path): os.remove(original_file_path) pass else: # ToDo: Add delay rename here - raise - + return None + if dry_run: stash.Log("Dry-Run, so skipping DB renaming") elif stash.renameFileNameInDB(scene_details['files'][0]['id'], original_file_name, newFilenameWithExt): diff --git a/plugins/RenameFile/renamefile.yml b/plugins/RenameFile/renamefile.yml index e9420ad5..a022257c 100644 --- a/plugins/RenameFile/renamefile.yml +++ b/plugins/RenameFile/renamefile.yml @@ -1,6 +1,6 @@ name: RenameFile description: Renames video (scene) file names when the user edits the [Title] field located in the scene [Edit] tab. -version: 1.0.2 +version: 1.0.3 url: https://discourse.stashapp.cc/t/renamefile/1334 ui: css: diff --git a/plugins/RenameFile/version_history/README.md b/plugins/RenameFile/version_history/README.md index ab2bb205..5f72ff98 100644 --- a/plugins/RenameFile/version_history/README.md +++ b/plugins/RenameFile/version_history/README.md @@ -16,3 +16,8 @@ - Fixed Dry-Run bug, which changed the file name in the database when Dry-Run was enabled. ### 1.0.1 - +### 1.0.2 +- +### 1.0.3 +- Fixed OSError "File name too long" (macOS) caused by the long-filename truncation logic appending the file extension twice and not reserving space for the hash suffix. +- Rename/move failures now log a single clear error message instead of also dumping a raw Python traceback to the log.