| """ |
| V8 Autonomous Viral Engine |
| -------------------------- |
| Fully automated pipeline for viral video generation. |
| """ |
|
|
| import os |
| from utils.transcription import transcribe_video |
| from utils.highlights import detect_highlights |
| from utils.clipper import create_clips |
| from utils.srt import generate_srt |
| from utils.render import render_subtitles |
| from utils.variations import generate_hooks |
| from utils.pacing import pacing_engine |
| from utils.viral_scorer import score_clip |
|
|
|
|
| |
| |
| |
|
|
| def run_autonomous_engine(video_path): |
| """ |
| One-call system → full viral pipeline |
| """ |
|
|
| print("[V8 ENGINE] Starting autonomous pipeline...") |
|
|
| |
| words = transcribe_video(video_path) |
|
|
| |
| highlights = detect_highlights(words) |
|
|
| if not highlights: |
| return { |
| "status": "failed", |
| "reason": "No highlights detected" |
| } |
|
|
| |
| clips = create_clips(video_path, highlights) |
|
|
| if not clips: |
| return { |
| "status": "failed", |
| "reason": "Clip generation failed" |
| } |
|
|
| outputs = [] |
|
|
| |
| for i, clip in enumerate(clips): |
|
|
| try: |
| clip_words = transcribe_video(clip) |
|
|
| |
| srt = generate_srt(clip_words) |
|
|
| |
| paced_clip = pacing_engine(clip, clip_words) |
|
|
| |
| hooks = generate_hooks(clip_words) |
|
|
| |
| output_path = clip.replace(".mp4", f"_v8_{i}.mp4") |
|
|
| final_video = render_subtitles( |
| paced_clip, |
| srt, |
| output_path |
| ) |
|
|
| |
| score = score_clip(clip_words) |
|
|
| outputs.append({ |
| "clip": final_video, |
| "score": score, |
| "hooks": hooks[:3], |
| "index": i |
| }) |
|
|
| except Exception as e: |
| print(f"[V8 ENGINE] Clip {i} failed:", str(e)) |
| continue |
|
|
| |
| outputs = sorted(outputs, key=lambda x: x["score"], reverse=True) |
|
|
| return { |
| "status": "completed", |
| "best_clip": outputs[0] if outputs else None, |
| "all_variants": outputs |
| } |