Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions plugins/RenameFile/renamefile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand Down Expand Up @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion plugins/RenameFile/renamefile.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
5 changes: 5 additions & 0 deletions plugins/RenameFile/version_history/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Loading