Yt / app.py
Hydui's picture
Update app.py
223dc78 verified
Raw
History Blame Contribute Delete
3.92 kB
import gradio as gr
import requests
import os
from pytrends.request import TrendReq
YT_API_KEY = os.getenv("YT_API_KEY", "AIzaSyCy8ROvJzi5DrBV-7PbwWq7QQ4w0e_F8rU")
def get_video_id(url):
"""यह फंक्शन अब दोनों तरह के लिंक को सपोर्ट करेगा"""
if "v=" in url:
return url.split("v=")[1].split("&")[0]
elif "youtu.be/" in url:
return url.split("youtu.be/")[1].split("?")[0]
return None
def get_video_stats(video_id):
url = f"https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id={video_id}&key={YT_API_KEY}"
response = requests.get(url)
data = response.json()
if "items" in data and data["items"]:
return data["items"][0]
return None
def get_trending_trends(niche):
try:
pytrends = TrendReq(hl='en-US', tz=360)
pytrends.build_payload(kw_list=[niche], timeframe='now 7-d')
trends = pytrends.interest_over_time()
top_keywords = trends.sort_values(by=niche, ascending=False).head(3).index.tolist()
return top_keywords
except:
return ["AI Trends 2026", "Tech", "Gadgets"]
def boost_video(video_url):
if not video_url:
return "❌ कृपया वैलिड YouTube लिंक डालें!"
video_id = get_video_id(video_url)
if not video_id:
return "❌ अमान्य YouTube लिंक! (कृपया सही लिंक डालें)"
data = get_video_stats(video_id)
if not data:
return "❌ वीडियो नहीं मिला! वीडियो पब्लिक है और API Key सही है चेक करें।"
snippet = data["snippet"]
stats = data["statistics"]
title = snippet["title"]
channel = snippet["channelTitle"]
views = int(stats.get("viewCount", 0))
likes = int(stats.get("likeCount", 0))
comments = int(stats.get("commentCount", 0))
niche = title.split()[0] if title else "General"
trends = get_trending_trends(niche)
ctr_pred = round(len(title) * 0.5 + 5, 1)
report = f"""
🚀 **यूट्यूब बूस्ट रिपोर्ट**
📺 **टाइटल:** {title}
🎥 **चैनल:** {channel}
👁️ **व्यूज़:** {views:,}
👍 **लाइक्स:** {likes:,}
💬 **कमेंट्स:** {comments:,}
📈 **CTR प्रेडिक्शन:** {ctr_pred}%
🔥 **ट्रेंडिंग टॉपिक्स:** {", ".join(trends)}
🛠️ **बूस्ट प्लान:**
1. टाइटल में "{trends[0] if trends else 'Trending'}" जोड़ें
2. थंबनेल को लाल/हाइ-कंट्रास्ट बनाएँ
3. रिटेंशन बढ़ाने के लिए बीच में प्रश्न डालें
4. रात 8:30–10:00 PM (IST) पर अपलोड करें
5. पहले 2 घंटे में 5-6 रियल कमेंट करें
"""
return report
with gr.Blocks() as demo:
gr.Markdown("## 🚀 YouTube वीडियो बूस्ट टूल (Gradio)")
gr.Markdown("नीचे अपना YouTube लिंक डालें और 'बूस्ट करें' पर क्लिक करें।")
with gr.Row():
with gr.Column(scale=3):
video_url = gr.Textbox(label="YouTube लिंक", placeholder="https://www.youtube.com/watch?v=... या https://youtu.be/...")
with gr.Column(scale=1):
btn = gr.Button("🚀 बूस्ट करें", variant="primary")
output = gr.Markdown(label="बूस्ट रिपोर्ट")
btn.click(fn=boost_video, inputs=video_url, outputs=output)
if __name__ == "__main__":
demo.launch(theme=gr.themes.Soft())