import os, requests | |
from urllib.parse import urlparse, parse_qs | |
API_KEY = os.getenv("YOUTUBE_API_KEY") | |
def extract_video_id(url: str) -> str: | |
qs = parse_qs(urlparse(url).query) | |
return qs.get("v", [urlparse(url).path.split("/")[-1]])[0] | |
def get_youtube_info(url: str): | |
vid = extract_video_id(url) | |
resp = requests.get( | |
"https://www.googleapis.com/youtube/v3/videos", | |
params={"part":"snippet", "id":vid, "key":API_KEY} | |
) | |
resp.raise_for_status() | |
items = resp.json().get("items", []) | |
if not items: | |
return {"videoId":vid,"title":"N/A","description":"N/A"} | |
sn = items[0]["snippet"] | |
return {"videoId":vid,"title":sn.get("title",""),"description":sn.get("description","")} | |