Create youtube_scraper.py
Browse files- youtube_scraper.py +21 -0
youtube_scraper.py
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os, requests
|
2 |
+
from urllib.parse import urlparse, parse_qs
|
3 |
+
|
4 |
+
API_KEY = os.getenv("YOUTUBE_API_KEY")
|
5 |
+
|
6 |
+
def extract_video_id(url: str) -> str:
|
7 |
+
qs = parse_qs(urlparse(url).query)
|
8 |
+
return qs.get("v", [urlparse(url).path.split("/")[-1]])[0]
|
9 |
+
|
10 |
+
def get_youtube_info(url: str):
|
11 |
+
vid = extract_video_id(url)
|
12 |
+
resp = requests.get(
|
13 |
+
"https://www.googleapis.com/youtube/v3/videos",
|
14 |
+
params={"part":"snippet", "id":vid, "key":API_KEY}
|
15 |
+
)
|
16 |
+
resp.raise_for_status()
|
17 |
+
items = resp.json().get("items", [])
|
18 |
+
if not items:
|
19 |
+
return {"videoId":vid,"title":"N/A","description":"N/A"}
|
20 |
+
sn = items[0]["snippet"]
|
21 |
+
return {"videoId":vid,"title":sn.get("title",""),"description":sn.get("description","")}
|