Spaces:
Sleeping
Sleeping
| import asyncio | |
| import logging | |
| import core.script_gen as script_gen | |
| import core.story_script as story_script | |
| import core.image_generator as image_gen | |
| # import core.video_gen as video_gen | |
| # import core.music_gen as music_gen | |
| # import core.assemble as assemble | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format="%(asctime)s [%(levelname)s] %(message)s" | |
| ) | |
| async def run_pipeline(task: dict, confirmation_event: asyncio.Event): | |
| """ | |
| Executes the full workflow: | |
| 1. Script generation | |
| 2. Wait for user confirmation | |
| 3. Story generation | |
| 4. Image generation | |
| Video/music/assemble placeholders for now | |
| """ | |
| task_id = task["id"] | |
| idea = task["idea"] | |
| logging.info(f"[Pipeline] Starting script generation for task {task_id}") | |
| script = await script_gen.generate_script(idea) | |
| task["result"]["script"] = script | |
| task["status"] = "waiting_for_confirmation" | |
| task["confirmation_required"] = True | |
| logging.info(f"[Pipeline] Script ready for task {task_id}, waiting confirmation...") | |
| # Wait for user confirmation | |
| await confirmation_event.wait() | |
| task["status"] = "confirmed" | |
| task["confirmation_required"] = False | |
| logging.info(f"[Pipeline] Task {task_id} confirmed. Continuing pipeline...") | |
| # Story generation | |
| logging.info(f"[Pipeline] Generating story for task {task_id}") | |
| story = await story_script.generate_story(script) | |
| task["result"]["story_script"] = story | |
| # Image generation | |
| logging.info(f"[Pipeline] Generating images for task {task_id}") | |
| images = await image_gen.generate_images(story) | |
| task["result"]["images"] = images | |
| # Placeholder for future stages | |
| # logging.info(f"[Pipeline] Generating video/music/assembling for task {task_id}") | |
| # task["result"]["video"] = None | |
| # task["result"]["music"] = None | |
| # task["result"]["final_output"] = None | |
| task["status"] = "completed" | |
| logging.info(f"[Pipeline] Task {task_id} completed. Output: {images}") | |
| return task["result"] | |