Badro's picture
Update app.py
09cb6ce verified
import gradio as gr
import pytube
from transformers import pipeline
from textblob import TextBlob
# Initialize sentiment analysis pipeline
sentiment_analyzer = pipeline("sentiment-analysis")
def analyze_youtube_content(youtube_url, transcript_text=""):
"""Analyze YouTube content"""
results = {}
# Get video info
if youtube_url:
try:
yt = pytube.YouTube(youtube_url)
results["video_info"] = {
"title": yt.title,
"status": "success"
}
except Exception as e:
results["video_info"] = {
"status": "error",
"message": str(e)
}
# Analyze transcript
if transcript_text:
# TextBlob sentiment
blob = TextBlob(transcript_text)
sentiment = blob.sentiment
# Hugging Face sentiment
hf_result = sentiment_analyzer(transcript_text[:512])[0]
results["sentiment"] = {
"polarity": round(sentiment.polarity, 2),
"assessment": "positive" if sentiment.polarity > 0 else "negative" if sentiment.polarity < 0 else "neutral",
"huggingface": hf_result["label"]
}
return results
# Create Gradio interface
demo = gr.Interface(
fn=analyze_youtube_content,
inputs=[
gr.Textbox(label="YouTube URL"),
gr.Textbox(label="Transcript Text", lines=10)
],
outputs=gr.JSON(label="Analysis Results"),
title="YouTube Viral Moment Analyzer",
description="Analyze viral moments from YouTube videos using ML models"
)
# Launch with MCP server enabled
if __name__ == "__main__":
demo.launch(mcp_server=True)