# Editing Framework Module Documentation The `editing_framework` module provides a set of classes and functions for editing videos and images. This module is part of the `shortGPT` project and is designed to be used with the `CoreEditingEngine` class to generate videos and images based on a specified editing schema. ## Module Files The `editing_framework` module consists of three files: 1. `rendering_logger.py`: This file contains the `MoviepyProgressLogger` class, which is used for logging the progress of the rendering process. 2. `editing_engine.py`: This file contains the `EditingStep` and `Flow` enums, as well as the `EditingEngine` class, which is the main class for managing the editing process. 3. `core_editing_engine.py`: This file contains the `CoreEditingEngine` class, which is responsible for generating videos and images based on the editing schema. ## `rendering_logger.py` This file defines the `MoviepyProgressLogger` class, which is a subclass of `ProgressBarLogger` from the `proglog` module. It provides a callback function for logging the progress of the rendering process. The `MoviepyProgressLogger` class has the following methods: ### `__init__(self, callBackFunction=None)` - Initializes a new instance of the `MoviepyProgressLogger` class. - Parameters: - `callBackFunction`: An optional callback function that will be called with the progress string. ### `bars_callback(self, bar, attr, value, old_value=None)` - This method is called every time the logger progress is updated. - It calculates the rendering progress and the estimated time left. - It calls the callback function with the progress string or prints the progress string if no callback function is provided. - Parameters: - `bar`: The progress bar name. - `attr`: The progress attribute name. - `value`: The current progress value. - `old_value`: The previous progress value. ### `format_time(self, seconds)` - Formats the given time in seconds to the format "mm:ss". - Parameters: - `seconds`: The time in seconds. - Returns: - The formatted time string. ## `editing_engine.py` This file defines the `EditingStep` and `Flow` enums, as well as the `EditingEngine` class, which is responsible for managing the editing process. The `EditingEngine` class has the following methods: ### `__init__(self)` - Initializes a new instance of the `EditingEngine` class. - It initializes the editing step tracker and the editing schema. ### `addEditingStep(self, editingStep: EditingStep, args: Dict[str, any] = {})` - Adds an editing step to the editing schema with the specified arguments. - Parameters: - `editingStep`: The editing step to add. - `args`: The arguments for the editing step. - Raises: - `Exception`: If a required argument is missing. ### `ingestFlow(self, flow: Flow, args)` - Ingests a flow into the editing schema with the specified arguments. - Parameters: - `flow`: The flow to ingest. - `args`: The arguments for the flow. - Raises: - `Exception`: If a required argument is missing. ### `dumpEditingSchema(self)` - Returns the current editing schema. ### `renderVideo(self, outputPath, logger=None)` - Renders the video based on the editing schema and saves it to the specified output path. - Parameters: - `outputPath`: The path to save the rendered video. - `logger`: An optional logger object for logging the rendering progress. ### `renderImage(self, outputPath)` - Renders the image based on the editing schema and saves it to the specified output path. - Parameters: - `outputPath`: The path to save the rendered image. ## `core_editing_engine.py` This file defines the `CoreEditingEngine` class, which is responsible for generating videos and images based on the editing schema. The `CoreEditingEngine` class has the following methods: ### `generate_image(self, schema:Dict[str, Any], output_file)` - Generates an image based on the editing schema and saves it to the specified output file. - Parameters: - `schema`: The editing schema. - `output_file`: The path to save the generated image. - Returns: - The path to the saved image. ### `generate_video(self, schema:Dict[str, Any], output_file, logger=None)` - Generates a video based on the editing schema and saves it to the specified output file. - Parameters: - `schema`: The editing schema. - `output_file`: The path to save the generated video. - `logger`: An optional logger object for logging the rendering progress. - Returns: - The path to the saved video. ### `process_common_actions(self, clip: Union[VideoFileClip, ImageClip, TextClip, AudioFileClip], actions: List[Dict[str, Any]])` - Processes common actions for the given clip. - Parameters: - `clip`: The clip to process. - `actions`: The list of actions to apply to the clip. - Returns: - The processed clip. ### `process_common_visual_actions(self, clip: Union[VideoFileClip, ImageClip, TextClip], actions: List[Dict[str, Any]])` - Processes common visual clip actions for the given clip. - Parameters: - `clip`: The clip to process. - `actions`: The list of actions to apply to the clip. - Returns: - The processed clip. ### `process_audio_actions(self, clip: AudioFileClip, actions: List[Dict[str, Any]])` - Processes audio actions for the given audio clip. - Parameters: - `clip`: The audio clip to process. - `actions`: The list of actions to apply to the audio clip. - Returns: - The processed audio clip. ### `process_video_asset(self, asset: Dict[str, Any])` - Processes a video asset based on the asset parameters and actions. - Parameters: - `asset`: The video asset to process. - Returns: - The processed video clip. ### `process_image_asset(self, asset: Dict[str, Any])` - Processes an image asset based on the asset parameters and actions. - Parameters: - `asset`: The image asset to process. - Returns: - The processed image clip. ### `process_text_asset(self, asset: Dict[str, Any])` - Processes a text asset based on the asset parameters and actions. - Parameters: - `asset`: The text asset to process. - Returns: - The processed text clip. ### `process_audio_asset(self, asset: Dict[str, Any])` - Processes an audio asset based on the asset parameters and actions. - Parameters: - `asset`: The audio asset to process. - Returns: - The processed audio clip. ### `__normalize_image(self, clip)` - Normalizes the image clip. - Parameters: - `clip`: The image clip to normalize. - Returns: - The normalized image clip. ### `__normalize_frame(self, frame)` - Normalizes the given frame. - Parameters: - `frame`: The frame to normalize. - Returns: - The normalized frame.