Spaces:
Sleeping
Sleeping
import gradio as gr | |
from deep_translator import GoogleTranslator | |
import re | |
# β Extract video ID from any YouTube URL format | |
def extract_video_id(url): | |
match = re.search(r"(?:v=|\/)([0-9A-Za-z_-]{11})", url) | |
return match.group(1) if match else url.strip() | |
# β Agent 1: Simulated YouTube Summary | |
def summarize_youtube(video_url): | |
try: | |
video_id = extract_video_id(video_url) | |
saved_transcripts = { | |
"dQw4w9WgXcQ": "This video explains advanced AI concepts using example 1.", | |
"F9cTlfD7ZGM": "This video explains advanced AI concepts using example 2.", | |
"HMcFwjWVprs": "This video explains advanced AI concepts using example 3.", | |
"xvFZjo5PgG0": "This video explains advanced AI concepts using example 4.", | |
"tVZxRHrhgW8": "This video explains advanced AI concepts using example 5.", | |
... | |
# Total 100 entries! | |
} | |
if video_id not in saved_transcripts: | |
return "β Transcript not available for this video.", "", "", "" | |
summary = saved_transcripts[video_id] | |
translation = GoogleTranslator(source='auto', target='es').translate(summary) | |
video_embed_link = f"https://www.youtube.com/embed/{video_id}" | |
steps = simulate_video_steps(summary) | |
return summary, translation, video_embed_link, steps | |
except Exception as e: | |
return f"β Error: {str(e)}", "", "", "" | |
# β Agent 2: Simulated Key Moments / Scene Steps | |
def simulate_video_steps(summary): | |
if not summary or summary.startswith("β"): | |
return "No steps available." | |
return "\n".join([ | |
"π Step 1: Introduction of topic", | |
"π Step 2: Main discussion about agents", | |
"β Step 3: Final conclusion & translation" | |
]) | |
# β Master Agent Workflow | |
def run_agents(url): | |
summary, translation, embed, steps_text = summarize_youtube(url) | |
if embed: | |
video_html = f''' | |
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;"> | |
<iframe src="{embed}" style="position:absolute;top:0;left:0;width:100%;height:100%;" | |
frameborder="0" allowfullscreen></iframe> | |
</div> | |
''' | |
else: | |
video_html = "" | |
return summary, translation, video_html, steps_text | |
# β Gradio App | |
with gr.Blocks() as demo: | |
gr.Markdown("## π€ Lead With AI Agents: YouTube Video Analyzer") | |
gr.Markdown("Paste any **YouTube video link** to get AI-powered insights.") | |
input_url = gr.Textbox(label="π Paste YouTube Link") | |
summary_output = gr.Textbox(label="π§ English Summary") | |
translation_output = gr.Textbox(label="π Spanish Translation") | |
video_output = gr.HTML() | |
steps_output = gr.Textbox(label="π¬ AI Scene Steps / Key Moments") | |
run_btn = gr.Button("βΆοΈ Run Agents") | |
run_btn.click(fn=run_agents, inputs=input_url, | |
outputs=[summary_output, translation_output, video_output, steps_output]) | |
demo.launch() | |