refactor(main.py): simplify filename generation logic and update user instructions

This commit is contained in:
2025-09-08 00:28:32 +02:00
parent 2961fe088d
commit 4651ba51f1

View File

@@ -266,33 +266,6 @@ class VideoEditor:
"""Check if file is a supported media format (video or image)"""
return self._is_video_file(file_path) or self._is_image_file(file_path)
def _get_next_edited_filename(self, video_path: Path) -> str:
"""Generate the next available _edited_%03d filename, or overwrite if already edited"""
directory = video_path.parent
base_name = video_path.stem
extension = video_path.suffix
# Check if the current video already contains "_edited_" in its name
if "_edited_" in base_name:
# If it's already an edited video, overwrite it instead of creating _edited_edited
return video_path.name
# Pattern to match existing edited files: basename_edited_001.ext, basename_edited_002.ext, etc.
pattern = re.compile(rf"^{re.escape(base_name)}_edited_(\d{{3}}){re.escape(extension)}$")
existing_numbers = set()
for file_path in directory.iterdir():
if file_path.is_file():
match = pattern.match(file_path.name)
if match:
existing_numbers.add(int(match.group(1)))
# Find the next available number starting from 1
next_number = 1
while next_number in existing_numbers:
next_number += 1
return f"{base_name}_edited_{next_number:03d}{extension}"
def _get_next_screenshot_filename(self, video_path: Path) -> str:
"""Generate the next available screenshot filename: video_frame_00001.jpg, video_frame_00002.jpg, etc."""
@@ -1832,7 +1805,7 @@ class VideoEditor:
print(" N: Next file")
print(" n: Previous file")
print(" Enter: Save image (overwrites if '_edited_' in name)")
print(" Shift+N: Save image as _edited_edited")
print(" n: Save image as _edited_edited")
print(" Q/ESC: Quit")
print()
else:
@@ -1864,7 +1837,7 @@ class VideoEditor:
print(" N: Next video")
print(" n: Previous video")
print(" Enter: Render video (overwrites if '_edited_' in name)")
print(" Shift+N: Render video as _edited_edited")
print(" n: Render video as _edited_edited")
print(" X: Cancel render")
print(" Q/ESC: Quit")
print()
@@ -2005,8 +1978,11 @@ class VideoEditor:
elif key == ord("N"):
if len(self.video_files) > 1:
self.previous_video()
elif key == ord("n"):
if len(self.video_files) > 1:
self.next_video()
else:
# Shift+N - Create _edited_edited file
# n - Create _edited_edited file
directory = self.video_path.parent
base_name = self.video_path.stem
extension = self.video_path.suffix
@@ -2021,9 +1997,6 @@ class VideoEditor:
output_path = str(directory / new_name)
success = self.render_video(output_path)
elif key == ord("n"):
if len(self.video_files) > 1:
self.next_video()
elif key == 13: # Enter
# Only overwrite if file already contains "_edited_" in name
if "_edited_" in self.video_path.stem:
@@ -2063,7 +2036,7 @@ class VideoEditor:
if os.path.exists(temp_path):
os.remove(temp_path)
else:
print("Enter key only overwrites files with '_edited_' in the name. Use Shift+N to create new files.")
print("Enter key only overwrites files with '_edited_' in the name. Use 'n' to create new files.")
elif key == ord("t"):
# Marker looping only for videos
if not self.is_image_mode: