import tkinter as tk
from tkinter import messagebox
import requests
import openai
from urllib.parse import urlparse, parse_qs

# — Function to extract video ID from URL —
def extract_video_id(url):
parsed_url = urlparse(url)
if parsed_url.hostname == ‘youtu.be’:
return parsed_url.path[1:]
if parsed_url.hostname in (‘www.youtube.com’, ‘youtube.com’):
if parsed_url.path == ‘/watch’:
return parse_qs(parsed_url.query)[‘v’][0]
return None

# — Function to fetch YouTube stats —
def get_youtube_stats(api_key, video_url):
video_id = extract_video_id(video_url)
if not video_id:
return None, “Invalid YouTube URL”

api_url = f”https://www.googleapis.com/youtube/v3/videos?part=statistics&id={video_id}&key={api_key}”
response = requests.get(api_url)
if response.status_code != 200:
return None, “Failed to fetch data”

data = response.json()
if not data[‘items’]:
return None, “Video not found”

stats = data[‘items’][0][‘statistics’]
return stats, None

# — Function to get analysis from ChatGPT —
def analyze_with_chatgpt(api_key, stats):
openai.api_key = api_key
prompt = f”””
This is a YouTube video statistics summary:
– Views: {stats.get(‘viewCount’, ‘N/A’)}
– Likes: {stats.get(‘likeCount’, ‘N/A’)}
– Comments: {stats.get(‘commentCount’, ‘N/A’)}

Based on this, what suggestions do you have to improve performance and get more views?
“””

try:
response = openai.ChatCompletion.create(
model=”gpt-4″,
messages=[
{“role”: “user”, “content”: prompt}
]
)
return response[‘choices’][0][‘message’][‘content’]
except Exception as e:
return str(e)

# — GUI Setup —
def run_gui():
def on_submit():
yt_key = yt_api_key_entry.get().strip()
openai_key = openai_key_entry.get().strip()
url = video_url_entry.get().strip()

if not yt_key or not openai_key or not url:
messagebox.showerror(“Error”, “All fields are required!”)
return

stats, error = get_youtube_stats(yt_key, url)
if error:
messagebox.showerror(“Error”, error)
return

result_text.set(f”Views: {stats.get(‘viewCount’, ‘N/A’)}\nLikes: {stats.get(‘likeCount’, ‘N/A’)}\nComments: {stats.get(‘commentCount’, ‘N/A’)}”)
analysis = analyze_with_chatgpt(openai_key, stats)
analysis_text.delete(“1.0”, tk.END)
analysis_text.insert(tk.END, analysis)

window = tk.Tk()
window.title(“YouTube Real-Time Viewer + ChatGPT Analysis”)

tk.Label(window, text=”YouTube API Key”).pack()
yt_api_key_entry = tk.Entry(window, width=50)
yt_api_key_entry.pack()

tk.Label(window, text=”OpenAI API Key”).pack()
openai_key_entry = tk.Entry(window, width=50)
openai_key_entry.pack()

tk.Label(window, text=”YouTube Video URL”).pack()
video_url_entry = tk.Entry(window, width=50)
video_url_entry.pack()

tk.Button(window, text=”Get Stats & Analyze”, command=on_submit).pack(pady=10)

result_text = tk.StringVar()
tk.Label(window, textvariable=result_text, justify=”left”, fg=”blue”).pack()

tk.Label(window, text=”ChatGPT Analysis:”).pack()
analysis_text = tk.Text(window, height=15, width=70)
analysis_text.pack()

window.mainloop()

if __name__ == “__main__”:
run_gui()