From 66eb5282c2a7ed0510e717ffe57e9abeee02ffc7 Mon Sep 17 00:00:00 2001 From: justumen Date: Mon, 28 Oct 2024 11:32:37 +0100 Subject: [PATCH] 0.50 --- README.md | 60 +++- __init__.py | 9 + audio_video_sync.py | 494 +++++++++++++++++--------- combine_video_audio.py | 161 +++++++++ concat_videos.py | 91 +++++ images_to_video_path.py | 80 ++++- loop_lines_sequential.py | 111 ++++++ pyproject.toml | 2 +- random_line_from_input.py | 2 +- save_text.py | 40 +-- screenshots/audio_sync_video_new.png | Bin 0 -> 80772 bytes screenshots/combine_images_1.png | Bin 324601 -> 325120 bytes screenshots/combine_images_2.png | Bin 306398 -> 306931 bytes screenshots/combine_video_audio.png | Bin 0 -> 535811 bytes screenshots/concat_video.png | Bin 0 -> 198851 bytes screenshots/loop_sequential_lines.png | Bin 0 -> 113414 bytes text_to_speech.py | 2 +- web/js/loop_lines_sequential.js | 111 ++++++ 18 files changed, 950 insertions(+), 213 deletions(-) create mode 100644 combine_video_audio.py create mode 100644 concat_videos.py create mode 100644 loop_lines_sequential.py create mode 100644 screenshots/audio_sync_video_new.png create mode 100644 screenshots/combine_video_audio.png create mode 100644 screenshots/concat_video.png create mode 100644 screenshots/loop_sequential_lines.png create mode 100644 web/js/loop_lines_sequential.js diff --git a/README.md b/README.md index dab49ec..237672b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# ๐Ÿ”— Comfyui : Bjornulf_custom_nodes v0.49 ๐Ÿ”— +# ๐Ÿ”— Comfyui : Bjornulf_custom_nodes v0.50 ๐Ÿ”— -A list of 56 custom nodes for Comfyui : Display, manipulate, and edit text, images, videos, loras and more. +A list of 59 custom nodes for Comfyui : Display, manipulate, and edit text, images, videos, loras and more. You can manage looping operations, generate randomized content, trigger logical conditions, pause and manually control your workflows and even work with external AI tools, like Ollama or Text To Speech. # Coffee : โ˜•โ˜•โ˜•โ˜•โ˜• 5/5 @@ -45,6 +45,7 @@ You can manage looping operations, generate randomized content, trigger logical `53.` [โ™ป Loop Load checkpoint (Model Selector)](#53----loop-load-checkpoint-model-selector) `54.` [โ™ป Loop Lora Selector](#54----loop-lora-selector) `56.` [โ™ป๐Ÿ“ Loop Sequential (Integer)](#56----loop-sequential-integer) +`57.` [โ™ป๐Ÿ“ Loop Sequential (input Lines)](#57) ## ๐ŸŽฒ Randomization ๐ŸŽฒ `3.` [โœ’๐Ÿ—” Advanced Write Text (+ ๐ŸŽฒ random selection and ๐Ÿ…ฐ๏ธ variables)](#3----advanced-write-text---random-selection-and-๐Ÿ…ฐ%EF%B8%8F-variables) @@ -98,7 +99,10 @@ You can manage looping operations, generate randomized content, trigger logical `49.` [๐Ÿ“น๐Ÿ‘ Video Preview](#49----video-preview) `50.` [๐Ÿ–ผโžœ๐Ÿ“น Images to Video path (tmp video)](#50----images-to-video-path-tmp-video) `51.` [๐Ÿ“นโžœ๐Ÿ–ผ Video Path to Images](#51----video-path-to-images) -`52.` [๐Ÿ”Š๐Ÿ“น Audio Video Sync](#52----audio-video-sync) +`52.` [๐Ÿ”Š๐Ÿ“น Audio Video Sync](#52----audio-video-sync) +`58.` [๐Ÿ“น๐Ÿ”— Concat Videos](#58) +`59.` [๐Ÿ“น๐Ÿ”Š Combine Video + Audio](#59) + ## ๐Ÿค– AI ๐Ÿค– `19.` [๐Ÿฆ™ Ollama](#19----ollama) @@ -107,6 +111,7 @@ You can manage looping operations, generate randomized content, trigger logical ## ๐Ÿ”Š Audio ๐Ÿ”Š `31.` [๐Ÿ”Š TTS - Text to Speech](#31----tts---text-to-speech-100-local-any-voice-you-want-any-language) `52.` [๐Ÿ”Š๐Ÿ“น Audio Video Sync](#52----audio-video-sync) +`59.` [๐Ÿ“น๐Ÿ”Š Combine Video + Audio](#59) ## ๐Ÿ’ป System ๐Ÿ’ป `34.` [๐Ÿงน Free VRAM hack](#34----free-vram-hack) @@ -251,6 +256,7 @@ cd /where/you/installed/ComfyUI && python main.py - **v0.47**: New node : Loop Load checkpoint (Model Selector). - **v0.48**: Two new nodes for loras : Random Lora Selector and Loop Lora Selector. - **v0.49**: New node : Loop Sequential (Integer) - Loop through a range of integer values. (But once per workflow run), audio sync is smarter and adapt the video duration to the audio duration. add requirements.txt +- **v0.50**: allow audio in Images to Video path (tmp video). Add three new nodes : Concat Videos, combine video/audio and Loop Sequential (input Lines). save text changes to write inside COmfyui folder. Fix random line from input outputing LIST. โ— Breaking change to audio/video sync node, allowing different types as input. # ๐Ÿ“ Nodes descriptions @@ -392,7 +398,8 @@ Resize an image to exact dimensions. The other node will save the image to the e ## 15 - ๐Ÿ’พ Save Text **Description:** -Save the given text input to a file. Useful for logging and storing text data. +Save the given text input to a file. Useful for logging and storing text data. +If the file already exist, it will add the text at the end of the file. ![Save Text](screenshots/save_text.png) @@ -721,6 +728,8 @@ Details : Check node number 40 before deciding which one to use. Node 53 is the loop version of this node. +NOTE : If you want to load a single checkpoint but want to extract its folder name (To use the checkpoint name as a folder name for example, or with if/else node), you can use my node 41 with only one checkpoint. (It will take one at random, so... always the same one.) + ### 42 - โ™ป Loop (Model+Clip+Vae) - aka Checkpoint / Model ![pick input](screenshots/loop_checkpoint.png) @@ -819,7 +828,7 @@ Combine multiple images (A single image or a list of images.) There are two types of logic to "combine images". With "all_in_one" enabled, it will combine all the images into one tensor. Otherwise it will send the images one by one. (check examples below) : -This is an example of the "all_in_one" option disabled : +This is an example of the "all_in_one" option disabled (Note that there are 2 images, these are NOT side by side, they are combined in a list.) : ![combine images](screenshots/combine_images_1.png) @@ -856,6 +865,7 @@ This node takes a video path as input and displays the video. **Description:** This node will take a list of images and convert them to a temporary video file. +โ— Update 0.50 : You can now send audio to the video. (audio_path OR audio TYPE) ![image to video path](screenshots/image_to_video_path.png) @@ -880,8 +890,8 @@ You can then chain up several video and they will transition smoothly. Some details, this node will : - If video slightly too long : add silence to the audio file. -- If video way too long : will slow down the video up to 0.50x the speed + add silence to the audio. -- If audio slightly too long : will speed up video up to 1.5x the speed. +- If video way too long : will slow down the video up to 0.50x the speed + add silence to the audio. (now editable) +- If audio slightly too long : will speed up video up to 1.5x the speed. (now editable) - If video way too long : will speed up video up to 1.5x the speed + add silence to the audio. It is good like for example with MuseTalk @@ -890,6 +900,13 @@ Here is an example of the `Audio Video Sync` node, notice that it is also conven ![audio sync video](screenshots/audio_sync_video.png) +โ— Update 0.50 : audio_duration is now optional, if not connected it will take it from the audio. +โ— Update 0.50 : You can now send the video with a list of images OR a video_path, same for audio : AUDIO or audio_path. + +New v0.50 layout, same logic : + +![audio sync video](screenshots/audio_sync_video_new.png) + ### 53 - โ™ป Loop Load checkpoint (Model Selector) **Description:** @@ -933,3 +950,32 @@ Under the hood it is using the file `counter_integer.txt` in the `ComfyUI/Bjornu ![loop sequential integer](screenshots/loop_sequential_integer_2.png) ![loop sequential integer](screenshots/loop_sequential_integer_3.png) ![loop sequential integer](screenshots/loop_sequential_integer_4.png) + +### 57 - โ™ป๐Ÿ“ Loop Sequential (input Lines) + +**Description:** +This loop works like a normal loop, BUT it is sequential : It will run only once for each workflow run !!! +The first time it will output the first line, the second time the second line, etc... +You also have control of the line with +1 / -1 buttons. +When the last is reached, the node will STOP the workflow, preventing anything else to run after it. +Under the hood it is using the file `counter_lines.txt` in the `ComfyUI/Bjornulf` folder. + +Here is an example of usage with my TTS node : when I have a list of sentences to process, if i don't like a version, I can just click on the -1 button, tick "overwrite" on TTS node and it will generate the same sentence again, repeat until good. + +![loop sequential line](screenshots/loop_sequential_lines.png) + +### 58 - ๐Ÿ“น๐Ÿ”— Concat Videos + +**Description:** +Take two videos and concatenate them. (One after the other in the same video.) + +![concat video](screenshots/concat_video.png) + +### 59 - ๐Ÿ“น๐Ÿ”Š Combine Video + Audio + +**Description:** +Simply combine video and audio together. +Video : Use list of images or video path. +Audio : Use audio path or audio type. + +![combine video audio](screenshots/combine_video_audio.png) diff --git a/__init__.py b/__init__.py index b1f068b..193d4a2 100644 --- a/__init__.py +++ b/__init__.py @@ -59,9 +59,15 @@ from .loop_model_selector import LoopModelSelector from .random_lora_selector import RandomLoraSelector from .loop_lora_selector import LoopLoraSelector from .loop_sequential_integer import LoopIntegerSequential +from .loop_lines_sequential import LoopLinesSequential +from .concat_videos import ConcatVideos +from .combine_video_audio import CombineVideoAudio NODE_CLASS_MAPPINGS = { "Bjornulf_ollamaLoader": ollamaLoader, + "Bjornulf_CombineVideoAudio": CombineVideoAudio, + "Bjornulf_ConcatVideos": ConcatVideos, + "Bjornulf_LoopLinesSequential": LoopLinesSequential, "Bjornulf_LoopIntegerSequential": LoopIntegerSequential, "Bjornulf_LoopLoraSelector": LoopLoraSelector, "Bjornulf_RandomLoraSelector": RandomLoraSelector, @@ -122,6 +128,9 @@ NODE_CLASS_MAPPINGS = { NODE_DISPLAY_NAME_MAPPINGS = { "Bjornulf_WriteText": "โœ’ Write Text", + "Bjornulf_CombineVideoAudio": "๐Ÿ“น๐Ÿ”Š Combine Video + Audio", + "Bjornulf_ConcatVideos": "๐Ÿ“น๐Ÿ”— Concat Videos", + "Bjornulf_LoopLinesSequential": "โ™ป๐Ÿ“ Loop Sequential (input Lines)", "Bjornulf_LoopIntegerSequential": "โ™ป๐Ÿ“ Loop Sequential (Integer)", "Bjornulf_LoopLoraSelector": "โ™ป Loop Lora Selector", "Bjornulf_RandomLoraSelector": "๐ŸŽฒ Random Lora Selector", diff --git a/audio_video_sync.py b/audio_video_sync.py index 5eeab11..e12a205 100644 --- a/audio_video_sync.py +++ b/audio_video_sync.py @@ -4,211 +4,371 @@ import os import subprocess from datetime import datetime import math +from PIL import Image +import logging +import torchvision.transforms as transforms class AudioVideoSync: + """ + ComfyUI custom node for synchronizing audio and video with configurable speed adjustments. + Supports both video files and image sequences as input, as well as audio files or AUDIO objects. + """ + def __init__(self): - pass + """Initialize the AudioVideoSync node.""" + self.base_dir = "Bjornulf" + self.temp_dir = os.path.join(self.base_dir, "temp_frames") + self.sync_video_dir = os.path.join(self.base_dir, "sync_video") + self.sync_audio_dir = os.path.join(self.base_dir, "sync_audio") + + # Create necessary directories + for directory in [self.temp_dir, self.sync_video_dir, self.sync_audio_dir]: + os.makedirs(directory, exist_ok=True) @classmethod def INPUT_TYPES(cls): + """Define input parameters for the node.""" return { "required": { - "audio": ("AUDIO",), - "video_path": ("STRING", {"default": ""}), - "audio_duration": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 3600.0, "step": 0.001}), + "max_speedup": ("FLOAT", { + "default": 1.5, + "min": 1.0, + "max": 10.0, + "step": 0.1 + }), + "max_slowdown": ("FLOAT", { + "default": 0.5, + "min": 0.1, + "max": 1.0, + "step": 0.1 + }), }, + "optional": { + "IMAGES": ("IMAGE",), + "AUDIO": ("AUDIO",), + "audio_path": ("STRING", {"default": "", "forceInput": True}), + "audio_duration": ("FLOAT", { + "default": 0.0, + "min": 0.0, + "max": 3600.0, + "step": 0.001 + }), + "video_path": ("STRING", { + "default": "", + "forceInput": True + }), + "output_fps": ("FLOAT", { + "default": 30.0, + "min": 1.0, + "max": 120.0, + "step": 0.1 + }), + } } - RETURN_TYPES = ("AUDIO", "STRING", "STRING", "FLOAT", "FLOAT", "INT", "FLOAT", "FLOAT") - RETURN_NAMES = ("sync_audio", "sync_audio_path", "sync_video_path", "video_fps", "video_duration", "sync_video_frame_count", "sync_audio_duration", "sync_video_duration") + RETURN_TYPES = ("IMAGE", "AUDIO", "STRING", "STRING", "FLOAT", "FLOAT", "FLOAT", "FLOAT", "INT") + RETURN_NAMES = ("sync_IMAGES", "sync_AUDIO", "sync_audio_path", "sync_video_path", + "input_video_duration", "sync_video_duration", "input_audio_duration", "sync_audio_duration", + "sync_video_frame_count") FUNCTION = "sync_audio_video" CATEGORY = "Bjornulf" - def sync_audio_video(self, audio, video_path, audio_duration): + def generate_timestamp(self): + """Generate a unique timestamp for file naming.""" + return datetime.now().strftime("%Y%m%d_%H%M%S") + + def validate_audio_input(self, audio): + """Validate the audio input format.""" if not isinstance(audio, dict) or 'waveform' not in audio or 'sample_rate' not in audio: raise ValueError("Expected audio input to be a dictionary with 'waveform' and 'sample_rate' keys") - audio_data = audio['waveform'] - sample_rate = audio['sample_rate'] - - # Get original video properties - original_duration = self.get_video_duration(video_path) - video_fps = self.get_video_fps(video_path) - original_frame_count = self.get_frame_count(video_path) - - print(f"Original video duration: {original_duration}") - print(f"Target audio duration: {audio_duration}") - print(f"Video FPS: {video_fps}") - print(f"Original frame count: {original_frame_count}") - - # Create synchronized versions of video and audio - sync_video_path = self.create_sync_video(video_path, original_duration, audio_duration) - sync_audio_path = self.save_audio(audio_data, sample_rate, audio_duration, original_duration) - - # Get properties of synchronized files - sync_video_duration = self.get_video_duration(sync_video_path) - sync_frame_count = self.get_frame_count(sync_video_path) - sync_audio_duration = torchaudio.info(sync_audio_path).num_frames / sample_rate - - print(f"Sync video duration: {sync_video_duration}") - print(f"Sync video frame count: {sync_frame_count}") - print(f"Sync audio duration: {sync_audio_duration}") - - return ( - audio, # Return original audio dictionary - sync_audio_path, - sync_video_path, - video_fps, - original_duration, - sync_frame_count, - sync_audio_duration, - sync_video_duration - ) - - def get_video_duration(self, video_path): - cmd = ['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', video_path] - result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) - return float(result.stdout) - - def get_video_fps(self, video_path): - cmd = ['ffprobe', '-v', 'error', '-select_streams', 'v:0', '-count_packets', '-show_entries', 'stream=r_frame_rate', '-of', 'csv=p=0', video_path] - result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) - fps = result.stdout.strip() - if '/' in fps: - num, den = map(float, fps.split('/')) - return num / den - return float(fps) - - def get_frame_count(self, video_path): - cmd = ['ffprobe', '-v', 'error', '-count_packets', '-select_streams', 'v:0', '-show_entries', 'stream=nb_read_packets', '-of', 'csv=p=0', video_path] - result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) - return int(result.stdout.strip()) - - def create_sync_video(self, video_path, original_duration, target_duration): - os.makedirs("Bjornulf/sync_video", exist_ok=True) - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - final_output_path = f"Bjornulf/sync_video/sync_video_{timestamp}.mp4" - - # Calculate the relative difference between durations - duration_difference = abs(target_duration - original_duration) / original_duration - - # If target duration is longer but within 50% difference, use speed adjustment instead of repeating - if target_duration > original_duration and duration_difference <= 0.5: - # Calculate slowdown ratio - speed_ratio = original_duration / target_duration - pts_speed = 1/speed_ratio - - speed_adjust_cmd = [ - 'ffmpeg', - '-i', video_path, - '-filter:v', f'setpts={pts_speed}*PTS', - '-an', - '-c:v', 'libx264', - '-preset', 'medium', - '-crf', '23', - final_output_path - ] - subprocess.run(speed_adjust_cmd, check=True) - print(f"Speed-adjusted video (slowdown ratio: {speed_ratio}) saved to: {final_output_path}") - - elif target_duration > original_duration: - # Use the original repeating logic for larger differences - repeat_count = math.ceil(target_duration / original_duration) - concat_file = f"Bjornulf/sync_video/concat_{timestamp}.txt" - with open(concat_file, 'w') as f: - for _ in range(repeat_count): - f.write(f"file '{os.path.abspath(video_path)}'\n") - - concat_cmd = [ - 'ffmpeg', - '-f', 'concat', - '-safe', '0', - '-i', concat_file, - '-c', 'copy', - final_output_path - ] - subprocess.run(concat_cmd, check=True) - os.remove(concat_file) - print(f"Duplicated video {repeat_count} times, saved to: {final_output_path}") + def validate_speed_limits(self, max_speedup, max_slowdown): + """Validate the speed limit parameters.""" + if max_speedup < 1.0: + raise ValueError("max_speedup must be greater than or equal to 1.0") + if max_slowdown > 1.0: + raise ValueError("max_slowdown must be less than or equal to 1.0") + def get_audio_duration(self, audio): + """Calculate audio duration from audio input.""" + if isinstance(audio, dict) and 'waveform' in audio and 'sample_rate' in audio: + return audio['waveform'].shape[-1] / audio['sample_rate'] else: - # Original speed-up logic remains the same - speed_ratio = original_duration / target_duration + raise ValueError("Invalid audio input format") + + def ffprobe_run(self, cmd): + """Run ffprobe command and return the output.""" + result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) + return result.stdout.strip() + + def get_video_info(self, video_path): + """Get video duration, fps, and frame count.""" + duration = float(self.ffprobe_run([ + 'ffprobe', '-v', 'error', + '-show_entries', 'format=duration', + '-of', 'default=noprint_wrappers=1:nokey=1', + video_path + ])) + + fps_str = self.ffprobe_run([ + 'ffprobe', '-v', 'error', + '-select_streams', 'v:0', + '-show_entries', 'stream=r_frame_rate', + '-of', 'csv=p=0', + video_path + ]) + fps = float(eval(fps_str)) if '/' in fps_str else float(fps_str) + + frame_count = int(self.ffprobe_run([ + 'ffprobe', '-v', 'error', + '-count_packets', + '-select_streams', 'v:0', + '-show_entries', 'stream=nb_read_packets', + '-of', 'csv=p=0', + video_path + ])) + + return duration, fps, frame_count + + def process_images_to_video(self, IMAGES, fps): + """Convert image sequence to video.""" + timestamp = self.generate_timestamp() + temp_dir = os.path.join(self.temp_dir, f"frames_{timestamp}") + os.makedirs(temp_dir, exist_ok=True) + + # Save frames + frame_paths = [] + for i, img in enumerate(IMAGES): + if isinstance(img, torch.Tensor): + if img.dim() == 4: + img = img.squeeze(0) + img = (img * 255).byte().cpu().numpy() + img = Image.fromarray(img) - if abs(speed_ratio - 1.0) <= 0.1: # If the difference is less than 10% - copy_cmd = [ - 'ffmpeg', '-i', video_path, '-c', 'copy', final_output_path - ] - subprocess.run(copy_cmd, check=True) - print(f"Video copied without speed adjustment to: {final_output_path}") + frame_path = os.path.join(temp_dir, f"frame_{i:05d}.png") + img.save(frame_path) + frame_paths.append(frame_path) + + # Create video + output_path = os.path.join(self.temp_dir, f"video_{timestamp}.mp4") + subprocess.run([ + 'ffmpeg', '-y', + '-framerate', str(fps), + '-i', os.path.join(temp_dir, 'frame_%05d.png'), + '-c:v', 'libx264', + '-pix_fmt', 'yuv420p', + '-preset', 'medium', + '-crf', '19', + output_path + ], check=True) + + # Cleanup + for path in frame_paths: + os.remove(path) + os.rmdir(temp_dir) + + return output_path + + def adjust_video_speed(self, video_path, speed_factor, output_path): + """Adjust video speed using ffmpeg.""" + pts_speed = 1 / speed_factor + subprocess.run([ + 'ffmpeg', '-y', + '-i', video_path, + '-filter:v', f'setpts={pts_speed}*PTS', + '-an', + '-c:v', 'libx264', + '-preset', 'medium', + '-crf', '19', + output_path + ], check=True) + + def create_sync_video(self, video_path, original_duration, target_duration, max_speedup, max_slowdown): + """Create synchronized version of the video.""" + timestamp = self.generate_timestamp() + output_path = os.path.join(self.sync_video_dir, f"sync_video_{timestamp}.mp4") + + if target_duration > original_duration: + speed_ratio = original_duration / target_duration + if speed_ratio >= max_slowdown: + # Slow down video within limits + self.adjust_video_speed(video_path, speed_ratio, output_path) else: - speed = min(speed_ratio, 1.5) - pts_speed = 1/speed + # Repeat video if slowdown would exceed limit + repeat_count = math.ceil(target_duration / original_duration) + concat_file = os.path.join(self.sync_video_dir, f"concat_{timestamp}.txt") - speed_adjust_cmd = [ - 'ffmpeg', + with open(concat_file, 'w') as f: + for _ in range(repeat_count): + f.write(f"file '{os.path.abspath(video_path)}'\n") + + subprocess.run([ + 'ffmpeg', '-y', + '-f', 'concat', + '-safe', '0', + '-i', concat_file, + '-c', 'copy', + output_path + ], check=True) + os.remove(concat_file) + else: + speed_ratio = original_duration / target_duration + if abs(speed_ratio - 1.0) <= 0.1: + # Copy video if speed change is minimal + subprocess.run([ + 'ffmpeg', '-y', '-i', video_path, - '-filter:v', f'setpts={pts_speed}*PTS', - '-an', - '-c:v', 'libx264', - '-preset', 'medium', - '-crf', '23', - final_output_path - ] - subprocess.run(speed_adjust_cmd, check=True) - print(f"Speed-adjusted video (ratio: {speed}) saved to: {final_output_path}") + '-c', 'copy', + output_path + ], check=True) + else: + # Speed up video within limits + speed = min(speed_ratio, max_speedup) + self.adjust_video_speed(video_path, speed, output_path) - return os.path.abspath(final_output_path) - - def save_audio(self, audio_tensor, sample_rate, target_duration, original_video_duration): - os.makedirs("Bjornulf/sync_audio", exist_ok=True) - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - filename = f"Bjornulf/sync_audio/sync_audio_{timestamp}.wav" + return os.path.abspath(output_path) + def process_audio(self, audio_tensor, sample_rate, target_duration, original_duration, + max_speedup, max_slowdown): + """Process audio to match video duration.""" if audio_tensor.dim() == 3: audio_tensor = audio_tensor.squeeze(0) elif audio_tensor.dim() == 1: audio_tensor = audio_tensor.unsqueeze(0) current_duration = audio_tensor.shape[1] / sample_rate - - # Calculate the relative difference between durations - duration_difference = abs(target_duration - original_video_duration) / original_video_duration - # Calculate the final duration based on the same logic as create_sync_video - if target_duration > original_video_duration: - if duration_difference <= 0.5: - # For small differences, we'll keep the original audio duration - sync_video_duration = target_duration + # Calculate synchronized video duration + if target_duration > original_duration: + speed_ratio = original_duration / target_duration + if speed_ratio >= max_slowdown: + sync_duration = target_duration else: - # For larger differences, we'll repeat the video - sync_video_duration = math.ceil(target_duration / original_video_duration) * original_video_duration + sync_duration = math.ceil(target_duration / original_duration) * original_duration else: - # Handle speed-up cases - speed_ratio = original_video_duration / target_duration + speed_ratio = original_duration / target_duration if abs(speed_ratio - 1.0) <= 0.1: - sync_video_duration = original_video_duration + sync_duration = original_duration else: - speed = min(speed_ratio, 1.5) - sync_video_duration = original_video_duration / speed + speed = min(speed_ratio, max_speedup) + sync_duration = original_duration / speed - # Adjust audio to match sync video duration - if current_duration < sync_video_duration: - # Pad with silence - silence_samples = int((sync_video_duration - current_duration) * sample_rate) + # Adjust audio length + if current_duration < sync_duration: + silence_samples = int((sync_duration - current_duration) * sample_rate) silence = torch.zeros(audio_tensor.shape[0], silence_samples) - padded_audio = torch.cat([audio_tensor, silence], dim=1) + processed_audio = torch.cat([audio_tensor, silence], dim=1) else: - # Trim audio to match sync video duration - required_samples = int(sync_video_duration * sample_rate) - padded_audio = audio_tensor[:, :required_samples] + required_samples = int(sync_duration * sample_rate) + processed_audio = audio_tensor[:, :required_samples] - torchaudio.save(filename, padded_audio, sample_rate) - print(f"target_duration: {target_duration}") - print(f"original_video_duration: {original_video_duration}") - print(f"sync_video_duration: {sync_video_duration}") - print(f"current_audio_duration: {current_duration}") - print(f"final_audio_duration: {padded_audio.shape[1] / sample_rate}") + return processed_audio, sync_duration + + def save_audio(self, audio_tensor, sample_rate, target_duration, original_duration, + max_speedup, max_slowdown): + """Save processed audio to file.""" + timestamp = self.generate_timestamp() + output_path = os.path.join(self.sync_audio_dir, f"sync_audio_{timestamp}.wav") + + processed_audio, sync_duration = self.process_audio( + audio_tensor, sample_rate, target_duration, original_duration, + max_speedup, max_slowdown + ) + + torchaudio.save(output_path, processed_audio, sample_rate) + return os.path.abspath(output_path) + + def load_audio_from_path(self, audio_path): + """Load audio from file path.""" + waveform, sample_rate = torchaudio.load(audio_path) + return {'waveform': waveform, 'sample_rate': sample_rate} + + def extract_frames(self, video_path): + """Extract all frames of the video as a tensor.""" + temp_dir = os.path.join(self.temp_dir, "temp_frames") + os.makedirs(temp_dir, exist_ok=True) + + # Extract frames using ffmpeg + subprocess.run([ + 'ffmpeg', '-i', video_path, + os.path.join(temp_dir, 'frame_%05d.png') + ], check=True) + + # Load frames and convert to tensor + frames = [] + frame_files = sorted(os.listdir(temp_dir)) + transform = transforms.Compose([transforms.ToTensor()]) + + for frame_file in frame_files: + image = Image.open(os.path.join(temp_dir, frame_file)) + frame_tensor = transform(image) + frames.append(frame_tensor) + + # Stack frames into a single tensor + frames_tensor = torch.stack(frames) + + # Clean up temporary directory + for frame_file in frame_files: + os.remove(os.path.join(temp_dir, frame_file)) + os.rmdir(temp_dir) + + return frames_tensor + + def sync_audio_video(self, max_speedup=1.5, max_slowdown=0.5, + AUDIO=None, audio_path="", audio_duration=None, + video_path="", IMAGES=None, output_fps=30.0): + """Main function to synchronize audio and video.""" + self.validate_speed_limits(max_speedup, max_slowdown) + + # Handle audio input + if AUDIO is None and not audio_path: + raise ValueError("Either AUDIO or audio_path must be provided") - print(f"sync audio saved to: {filename}") - return os.path.abspath(filename) \ No newline at end of file + if audio_path: + AUDIO = self.load_audio_from_path(audio_path) + + self.validate_audio_input(AUDIO) + + # Calculate audio duration if not provided + if audio_duration is None or audio_duration == 0.0: + audio_duration = self.get_audio_duration(AUDIO) + + logging.info(f"Audio duration: {audio_duration}") + + # Process input source + if IMAGES is not None and len(IMAGES) > 0: + video_path = self.process_images_to_video(IMAGES, output_fps) + original_duration = len(IMAGES) / output_fps + video_fps = output_fps + original_frame_count = len(IMAGES) + elif video_path: + original_duration, video_fps, original_frame_count = self.get_video_info(video_path) + else: + raise ValueError("Either video_path or IMAGES must be provided") + + # Create synchronized versions + sync_video_path = self.create_sync_video( + video_path, original_duration, audio_duration, max_speedup, max_slowdown + ) + sync_audio_path = self.save_audio( + AUDIO['waveform'], AUDIO['sample_rate'], audio_duration, + original_duration, max_speedup, max_slowdown + ) + + # Get final properties + sync_video_duration, _, sync_frame_count = self.get_video_info(sync_video_path) + sync_audio_duration = torchaudio.info(sync_audio_path).num_frames / AUDIO['sample_rate'] + + video_frames = self.extract_frames(sync_video_path) + + return ( + video_frames, + AUDIO, + sync_audio_path, + sync_video_path, + original_duration, # input_video_duration + sync_video_duration, + audio_duration, # input_audio_duration + sync_audio_duration, + sync_frame_count + ) \ No newline at end of file diff --git a/combine_video_audio.py b/combine_video_audio.py new file mode 100644 index 0000000..5230b66 --- /dev/null +++ b/combine_video_audio.py @@ -0,0 +1,161 @@ +import os +import subprocess +import tempfile +from PIL import Image +import numpy as np +import torch +import torchaudio +import time +import shutil + +class CombineVideoAudio: + def __init__(self): + self.base_dir = "Bjornulf" + self.temp_dir = os.path.join(self.base_dir, "temp_frames") + self.output_dir = os.path.join(self.base_dir, "combined_output") + os.makedirs(self.temp_dir, exist_ok=True) + os.makedirs(self.output_dir, exist_ok=True) + + @classmethod + def INPUT_TYPES(s): + return { + "required": {}, + "optional": { + "IMAGES": ("IMAGE", {"forceInput": True}), + "AUDIO": ("AUDIO", {"forceInput": True}), + "audio_path": ("STRING", {"default": "", "multiline": False, "forceInput": True}), + "video_path": ("STRING", {"default": "", "multiline": False, "forceInput": True}), + "fps": ("FLOAT", {"default": 30.0, "min": 1.0, "max": 120.0, "step": 0.1}), + } + } + + RETURN_TYPES = ("STRING", "FLOAT", "FLOAT", "INT") + RETURN_NAMES = ("video_path", "video_duration", "fps", "number_of_frames") + FUNCTION = "combine_audio_video" + CATEGORY = "video" + + def get_video_frame_count(self, video_path): + try: + result = subprocess.run([ + "ffprobe", "-v", "error", "-count_packets", + "-select_streams", "v:0", "-show_entries", "stream=nb_read_packets", + "-of", "csv=p=0", video_path + ], capture_output=True, text=True, check=True) + + frame_count = result.stdout.strip() + if not frame_count: + raise ValueError("ffprobe returned empty frame count") + + return int(frame_count) + except subprocess.CalledProcessError as e: + print(f"Error running ffprobe: {e}") + print(f"ffprobe stderr: {e.stderr}") + raise + except ValueError as e: + print(f"Error parsing ffprobe output: {e}") + raise + except Exception as e: + print(f"Unexpected error getting frame count: {e}") + raise + + def get_video_duration(self, video_path): + try: + result = subprocess.run([ + "ffprobe", "-v", "error", "-show_entries", "format=duration", + "-of", "default=noprint_wrappers=1:nokey=1", video_path + ], capture_output=True, text=True, check=True) + + duration = result.stdout.strip() + if not duration: + raise ValueError("ffprobe returned empty duration") + + return float(duration) + except subprocess.CalledProcessError as e: + print(f"Error running ffprobe: {e}") + print(f"ffprobe stderr: {e.stderr}") + raise + except ValueError as e: + print(f"Error parsing ffprobe output: {e}") + raise + except Exception as e: + print(f"Unexpected error getting video duration: {e}") + raise + + def combine_audio_video(self, IMAGES=None, AUDIO=None, audio_path="", video_path="", fps=30.0): + temp_dir = tempfile.mkdtemp(dir=self.temp_dir) + try: + # Handle audio input + if audio_path and os.path.exists(audio_path): + final_audio_path = audio_path + elif AUDIO is not None: + final_audio_path = os.path.join(temp_dir, "temp_audio.wav") + waveform = AUDIO['waveform'] + sample_rate = AUDIO['sample_rate'] + + # Ensure waveform is 2D + if waveform.dim() == 3: + waveform = waveform.squeeze(0) + elif waveform.dim() == 1: + waveform = waveform.unsqueeze(0) + + # Ensure waveform is float and in the range [-1, 1] + if waveform.dtype != torch.float32: + waveform = waveform.float() + waveform = waveform.clamp(-1, 1) + + torchaudio.save(final_audio_path, waveform, sample_rate) + else: + raise ValueError("No valid audio input provided") + + + # Handle video input + if video_path and os.path.exists(video_path): + final_video_path = video_path + elif IMAGES is not None: + frames_path = os.path.join(temp_dir, "frame_%04d.png") + for i, frame in enumerate(IMAGES): + if isinstance(frame, torch.Tensor): + frame = frame.cpu().numpy() + + if frame.ndim == 4: + frame = frame.squeeze(0) # Remove batch dimension if present + if frame.shape[0] == 3: + frame = frame.transpose(1, 2, 0) # CHW to HWC + + if frame.dtype != np.uint8: + frame = (frame * 255).astype(np.uint8) + + Image.fromarray(frame).save(frames_path % (i + 1)) + + final_video_path = os.path.join(temp_dir, "temp_video.mp4") + subprocess.run([ + "ffmpeg", "-y", "-framerate", str(fps), + "-i", frames_path, "-c:v", "libx264", "-pix_fmt", "yuv420p", + final_video_path + ], check=True) + else: + raise ValueError("No valid video input provided") + + # Get video duration + duration = self.get_video_duration(final_video_path) + + # Generate a unique filename for the output + output_filename = f"combined_output_{int(time.time())}.mp4" + output_path = os.path.join(self.output_dir, output_filename) + + # Combine audio and video + subprocess.run([ + "ffmpeg", "-y", "-i", final_video_path, "-i", final_audio_path, + "-t", str(duration), "-c:v", "copy", "-c:a", "aac", + output_path + ], check=True) + + # Get the number of frames + number_of_frames = self.get_video_frame_count(output_path) + + return (output_path, duration, fps, number_of_frames) + + finally: + # Clean up temporary directory + shutil.rmtree(temp_dir, ignore_errors=True) + diff --git a/concat_videos.py b/concat_videos.py new file mode 100644 index 0000000..0c08c9a --- /dev/null +++ b/concat_videos.py @@ -0,0 +1,91 @@ +import subprocess +from pathlib import Path +import os + +class ConcatVideos: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "video_path_1": ("STRING", {"default": ""}), + "video_path_2": ("STRING", {"default": ""}), + "output_filename": ("STRING", {"default": "concatenated.mp4"}) + } + } + + RETURN_TYPES = ("STRING",) + RETURN_NAMES = ("concat_path",) + FUNCTION = "concat_videos" + OUTPUT_NODE = True + CATEGORY = "Bjornulf" + + def __init__(self): + # Get absolute paths for working directories + self.work_dir = Path(os.path.abspath("temp_concat")) + self.output_dir = Path(os.path.abspath("Bjornulf/concat_videos")) + os.makedirs(self.work_dir, exist_ok=True) + os.makedirs(self.output_dir, exist_ok=True) + + def concat_videos(self, video_path_1: str, video_path_2: str, output_filename: str): + """ + Concatenate two videos using ffmpeg with high-quality settings. + Returns the absolute path of the output file. + """ + # Convert to absolute paths + video_path_1 = os.path.abspath(video_path_1) + video_path_2 = os.path.abspath(video_path_2) + + # Validate inputs + if not (Path(video_path_1).exists() and Path(video_path_2).exists()): + raise ValueError(f"Both video paths must exist.\nPath 1: {video_path_1}\nPath 2: {video_path_2}") + + # Create concat file with absolute paths + concat_file = self.work_dir / "concat.txt" + with open(concat_file, 'w') as f: + f.write(f"file '{video_path_1}'\n") + f.write(f"file '{video_path_2}'\n") + + # Set output path (absolute) + output_path = self.output_dir / output_filename + output_path = output_path.absolute() + + # Concatenate videos using ffmpeg with high quality settings + cmd = [ + 'ffmpeg', '-y', + '-f', 'concat', + '-safe', '0', + '-i', str(concat_file), + # Video settings for maximum quality + '-c:v', 'libx264', + '-preset', 'veryslow', # Slowest preset for best compression + '-crf', '17', # Lower CRF for higher quality (range: 0-51, 0 is lossless) + '-x264-params', 'ref=6:me=umh:subme=7:trellis=2:direct-pred=auto:b-adapt=2', + # Audio settings + '-c:a', 'aac', + '-b:a', '320k', # High audio bitrate + # Additional quality settings + '-movflags', '+faststart', # Enables streaming + '-pix_fmt', 'yuv420p', # Ensures compatibility + str(output_path) + ] + + try: + # Run FFmpeg command + process = subprocess.run( + cmd, + check=True, + capture_output=True, + text=True + ) + + # Return absolute path as string + return (str(output_path),) + + except subprocess.CalledProcessError as e: + raise RuntimeError(f"FFmpeg error: {e.stderr}") + except Exception as e: + raise RuntimeError(f"Error during video concatenation: {str(e)}") + + @classmethod + def IS_CHANGED(cls, **kwargs): + return float("NaN") \ No newline at end of file diff --git a/images_to_video_path.py b/images_to_video_path.py index 8159f3c..9a56c14 100644 --- a/images_to_video_path.py +++ b/images_to_video_path.py @@ -5,6 +5,7 @@ import tempfile import torch import numpy as np from PIL import Image +import wave class ImagesListToVideo: @classmethod @@ -13,6 +14,10 @@ class ImagesListToVideo: "required": { "images": ("IMAGE",), "frames_per_second": ("FLOAT", {"default": 30, "min": 1, "max": 120, "step": 1}), + }, + "optional": { + "audio_path": ("STRING", {"default": "", "multiline": False}), + "audio": ("AUDIO", {"default": None}), } } @@ -21,7 +26,7 @@ class ImagesListToVideo: FUNCTION = "images_to_video" CATEGORY = "Bjornulf" - def images_to_video(self, images, frames_per_second=30): + def images_to_video(self, images, frames_per_second=30, audio_path="", audio=None): # Create the output directory if it doesn't exist output_dir = os.path.join("Bjornulf", "images_to_video") os.makedirs(output_dir, exist_ok=True) @@ -30,42 +35,85 @@ class ImagesListToVideo: video_filename = f"video_{uuid.uuid4().hex}.mp4" video_path = os.path.join(output_dir, video_filename) - # Create a temporary directory to store image files + # Create a temporary directory to store image files and audio with tempfile.TemporaryDirectory() as temp_dir: # Save each image as a PNG file in the temporary directory for i, img in enumerate(images): - # Convert the image to the correct format img_np = self.convert_to_numpy(img) - - # Ensure the image is in RGB format if img_np.shape[-1] != 3: img_np = self.convert_to_rgb(img_np) - - # Convert to PIL Image img_pil = Image.fromarray(img_np) img_path = os.path.join(temp_dir, f"frame_{i:05d}.png") img_pil.save(img_path) - # Use FFmpeg to create a video from the image sequence + # Prepare FFmpeg command ffmpeg_cmd = [ "ffmpeg", "-framerate", str(frames_per_second), "-i", os.path.join(temp_dir, "frame_%05d.png"), "-c:v", "libx264", "-pix_fmt", "yuv420p", - "-crf", "23", - "-y", # Overwrite output file if it exists - video_path + "-crf", "19" ] - try: - subprocess.run(ffmpeg_cmd, check=True, capture_output=True, text=True) - except subprocess.CalledProcessError as e: - print(f"FFmpeg error: {e.stderr}") - return ("",) # Return empty string if video creation fails + # Handle audio + temp_audio_path = None + if audio is not None and isinstance(audio, dict): + waveform = audio['waveform'].numpy().squeeze() + sample_rate = audio['sample_rate'] + temp_audio_path = os.path.join(temp_dir, "temp_audio.wav") + self.write_wav(temp_audio_path, waveform, sample_rate) + elif audio_path and os.path.isfile(audio_path): + temp_audio_path = audio_path + + if temp_audio_path: + # Create temporary video without audio first + temp_video = os.path.join(temp_dir, "temp_video.mp4") + temp_cmd = ffmpeg_cmd + ["-y", temp_video] + + try: + # Create video without audio + subprocess.run(temp_cmd, check=True, capture_output=True, text=True) + + # Add audio to the video + audio_cmd = [ + "ffmpeg", + "-i", temp_video, + "-i", temp_audio_path, + "-c:v", "copy", + "-c:a", "aac", + "-shortest", + "-y", + video_path + ] + subprocess.run(audio_cmd, check=True, capture_output=True, text=True) + except subprocess.CalledProcessError as e: + print(f"FFmpeg error: {e.stderr}") + return ("",) + else: + # No audio, just create the video directly + ffmpeg_cmd.append("-y") + ffmpeg_cmd.append(video_path) + try: + subprocess.run(ffmpeg_cmd, check=True, capture_output=True, text=True) + except subprocess.CalledProcessError as e: + print(f"FFmpeg error: {e.stderr}") + return ("",) return (video_path,) + def write_wav(self, file_path, audio_data, sample_rate): + with wave.open(file_path, 'wb') as wav_file: + wav_file.setnchannels(1) # Mono + wav_file.setsampwidth(2) # 2 bytes per sample + wav_file.setframerate(sample_rate) + + # Normalize and convert to 16-bit PCM + audio_data = np.int16(audio_data * 32767) + + # Write audio data + wav_file.writeframes(audio_data.tobytes()) + def convert_to_numpy(self, img): if isinstance(img, torch.Tensor): img = img.cpu().numpy() diff --git a/loop_lines_sequential.py b/loop_lines_sequential.py new file mode 100644 index 0000000..550be74 --- /dev/null +++ b/loop_lines_sequential.py @@ -0,0 +1,111 @@ +import os +from aiohttp import web +from server import PromptServer +import logging + +class LoopLinesSequential: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "text": ("STRING", {"forceInput": True}), + "jump": ("INT", {"default": 1, "min": 1, "max": 100, "step": 1}), + }, + } + + RETURN_TYPES = ("STRING", "INT", "INT") # Added INT for line number + RETURN_NAMES = ("current_line", "remaining_cycles", "current_line_number") + FUNCTION = "get_next_line" + CATEGORY = "Bjornulf" + + @classmethod + def IS_CHANGED(cls, **kwargs): + return float("NaN") + + def get_next_line(self, text, jump): + lines = [line.strip() for line in text.split('\n') if line.strip()] + + if not lines: + raise ValueError("No valid lines found in input text") + + counter_file = os.path.join("Bjornulf", "counter_lines.txt") + os.makedirs(os.path.dirname(counter_file), exist_ok=True) + + try: + with open(counter_file, 'r') as f: + current_index = int(f.read().strip()) + except (FileNotFoundError, ValueError): + current_index = -jump + + next_index = current_index + jump + + if next_index >= len(lines): + raise ValueError(f"Counter has reached the last line (total lines: {len(lines)}). Reset Counter to continue.") + + with open(counter_file, 'w') as f: + f.write(str(next_index)) + + remaining_cycles = max(0, (len(lines) - next_index - 1) // jump + 1) + + return (lines[next_index], remaining_cycles - 1, next_index + 1) # Added line number (1-based) + +# Server routes +@PromptServer.instance.routes.post("/reset_lines_counter") +async def reset_lines_counter(request): + logging.info("Reset lines counter called") + counter_file = os.path.join("Bjornulf", "counter_lines.txt") + try: + os.remove(counter_file) + return web.json_response({"success": True}, status=200) + except FileNotFoundError: + return web.json_response({"success": True}, status=200) + except Exception as e: + return web.json_response({"success": False, "error": str(e)}, status=500) + +@PromptServer.instance.routes.post("/increment_lines_counter") +async def increment_lines_counter(request): + counter_file = os.path.join("Bjornulf", "counter_lines.txt") + try: + current_index = 0 + try: + with open(counter_file, 'r') as f: + current_index = int(f.read().strip()) + except (FileNotFoundError, ValueError): + pass + + with open(counter_file, 'w') as f: + f.write(str(current_index + 1)) + return web.json_response({"success": True}, status=200) + except Exception as e: + return web.json_response({"success": False, "error": str(e)}, status=500) + +@PromptServer.instance.routes.post("/decrement_lines_counter") +async def decrement_lines_counter(request): + counter_file = os.path.join("Bjornulf", "counter_lines.txt") + try: + current_index = 0 + try: + with open(counter_file, 'r') as f: + current_index = int(f.read().strip()) + except (FileNotFoundError, ValueError): + pass + + # Prevent negative values + new_index = max(-1, current_index - 1) + with open(counter_file, 'w') as f: + f.write(str(new_index)) + return web.json_response({"success": True}, status=200) + except Exception as e: + return web.json_response({"success": False, "error": str(e)}, status=500) + +@PromptServer.instance.routes.get("/get_current_line") +async def get_current_line(request): + counter_file = os.path.join("Bjornulf", "counter_lines.txt") + try: + with open(counter_file, 'r') as f: + current_index = int(f.read().strip()) + return web.json_response({"success": True, "value": current_index + 1}, status=200) + except (FileNotFoundError, ValueError): + return web.json_response({"success": True, "value": 0}, status=200) + except Exception as e: + return web.json_response({"success": False, "error": str(e)}, status=500) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index b1722aa..54330c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "bjornulf_custom_nodes" description = "Nodes: Ollama, Text to Speech, Combine Texts, Random Texts, Save image for Bjornulf LobeChat, Text with random Seed, Random line from input, Combine images, Image to grayscale (black & white), Remove image Transparency (alpha), Resize Image, ..." -version = "0.49" +version = "0.50" license = {file = "LICENSE"} [project.urls] diff --git a/random_line_from_input.py b/random_line_from_input.py index 46710dd..9577409 100644 --- a/random_line_from_input.py +++ b/random_line_from_input.py @@ -31,4 +31,4 @@ class RandomLineFromInput: chosen_line = random.choice(lines) # Return as a list with one element - return ([chosen_line],) \ No newline at end of file + return (chosen_line,) \ No newline at end of file diff --git a/save_text.py b/save_text.py index 4e4d23f..a9af4e2 100644 --- a/save_text.py +++ b/save_text.py @@ -6,32 +6,32 @@ class SaveText: return { "required": { "text": ("STRING", {"multiline": True, "forceInput": True}), - "filename": ("STRING", {"default": "001.txt"}) + "filepath": ("STRING", {"default": "output/this_test.txt"}), } } - # INPUT_IS_LIST = True RETURN_TYPES = ("STRING",) RETURN_NAMES = ("text",) FUNCTION = "save_text" OUTPUT_NODE = True CATEGORY = "Bjornulf" - # OUTPUT_IS_LIST = (True,) - def save_text(self, text, filename): - directory = "custom_nodes/Bjornulf_custom_nodes/SaveText/" - if not os.path.exists(directory): - os.makedirs(directory) - - base, ext = os.path.splitext(filename) - counter = 1 - new_filename = os.path.join(directory, filename) - - while os.path.exists(new_filename): - new_filename = os.path.join(directory, f"{base}_{counter:03d}{ext}") - counter += 1 - - with open(new_filename, 'w') as file: - file.write(text) - - return {"ui": {"text": text}, "result": (text,)} \ No newline at end of file + def save_text(self, text, filepath): + # Validate file extension + if not filepath.lower().endswith('.txt'): + raise ValueError("Output file must be a .txt file") + + try: + # Create directory if it doesn't exist + directory = os.path.dirname(filepath) + if directory and not os.path.exists(directory): + os.makedirs(directory) + + # Append text to file with a newline + with open(filepath, 'a', encoding='utf-8') as file: + file.write(text + '\n') + + return {"ui": {"text": text}, "result": (text,)} + + except (OSError, IOError) as e: + raise ValueError(f"Error saving file: {str(e)}") \ No newline at end of file diff --git a/screenshots/audio_sync_video_new.png b/screenshots/audio_sync_video_new.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a6d7d25d6d92384fed48fe7e716809f10b3dda GIT binary patch literal 80772 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≤`Tbgke(qZ` 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