AIRider commited on
Commit
ab93e88
ยท
verified ยท
1 Parent(s): 258b06c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -23
app.py CHANGED
@@ -10,22 +10,14 @@ AA_HOST = "youtube-transcriptor.p.rapidapi.com"
10
 
11
  # ์œ ํŠœ๋ธŒ URL์—์„œ ๋น„๋””์˜ค ID๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜
12
  def get_video_id(youtube_url):
13
- # ์ผ๋ฐ˜์ ์ธ YouTube URL (watch?v=...)
14
- match = re.search(r"(?:v=|\/)([0-9A-Za-z_-]{11}).*", youtube_url)
15
- if match:
16
- return match.group(1)
17
 
18
- # YouTube Shorts URL
19
- match = re.search(r"youtu\.be\/([0-9A-Za-z_-]{11})", youtube_url)
20
- if match:
21
- return match.group(1)
22
 
23
- # YouTube Shorts URL (/shorts/...)
24
- match = re.search(r"\/shorts\/([0-9A-Za-z_-]{11})", youtube_url)
25
- if match:
26
- return match.group(1)
27
-
28
- return None
29
 
30
  # ์ž๋ง‰ ์–ธ์–ด ์šฐ์„ ์ˆœ์œ„ ๋ฆฌ์ŠคํŠธ
31
  LANGUAGE_PRIORITY = ['ko', 'en', 'ja', 'zh']
@@ -49,20 +41,16 @@ def get_youtube_transcript(youtube_url):
49
  querystring = {"video_id": video_id, "lang": lang}
50
  response = requests.get(url, headers=headers, params=querystring)
51
 
 
52
  if response.status_code == 200:
53
  try:
54
  data = response.json()
55
-
56
- # API ์‘๋‹ต ๊ตฌ์กฐ ํ™•์ธ ๋ฐ ์˜ฌ๋ฐ”๋ฅธ ์ฒ˜๋ฆฌ
57
- if isinstance(data, dict) and "transcript" in data:
58
- return {"language": lang, "data": data}
59
- elif isinstance(data, list) and len(data) > 0 and "text" in data[0]:
60
- return {"language": lang, "data": {"transcript": data}}
61
- else:
62
- continue # ํ˜„์žฌ ์–ธ์–ด์— ์ž๋ง‰์ด ์—†์œผ๋ฉด ๋‹ค์Œ ์–ธ์–ด๋กœ ์‹œ๋„
63
 
64
  except json.JSONDecodeError as e:
65
- continue # JSON ๋””์ฝ”๋”ฉ ์˜ค๋ฅ˜ ์‹œ ๋‹ค์Œ ์–ธ์–ด๋กœ ์‹œ๋„
66
 
67
  # ๋ชจ๋“  ์–ธ์–ด์—์„œ ์ž๋ง‰์„ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ
68
  return {"error": "์šฐ์„ ์ˆœ์œ„ ์–ธ์–ด๋กœ ์ž๋ง‰์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."}
 
10
 
11
  # ์œ ํŠœ๋ธŒ URL์—์„œ ๋น„๋””์˜ค ID๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜
12
  def get_video_id(youtube_url):
13
+ # ์œ ํŠœ๋ธŒ URL ๋˜๋Š” youtu.be ๋‹จ์ถ• URL์—์„œ video_id ์ถ”์ถœ
14
+ video_id_match = re.search(r"(?<=v=)[^#&?]*", youtube_url) or re.search(r"(?<=youtu.be/)[^#&?]*", youtube_url)
 
 
15
 
16
+ # YouTube Shorts URL ์ฒ˜๋ฆฌ
17
+ if not video_id_match:
18
+ video_id_match = re.search(r"(?<=shorts/)[^#&?]*", youtube_url)
 
19
 
20
+ return video_id_match.group(0) if video_id_match else None
 
 
 
 
 
21
 
22
  # ์ž๋ง‰ ์–ธ์–ด ์šฐ์„ ์ˆœ์œ„ ๋ฆฌ์ŠคํŠธ
23
  LANGUAGE_PRIORITY = ['ko', 'en', 'ja', 'zh']
 
41
  querystring = {"video_id": video_id, "lang": lang}
42
  response = requests.get(url, headers=headers, params=querystring)
43
 
44
+ # ์ƒํƒœ ์ฝ”๋“œ ํ™•์ธ ๋ฐ ์ „์ฒด ์‘๋‹ต ๋ฐ˜ํ™˜
45
  if response.status_code == 200:
46
  try:
47
  data = response.json()
48
+
49
+ # ์ „์ฒด ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜
50
+ return {"language": lang, "data": data}
 
 
 
 
 
51
 
52
  except json.JSONDecodeError as e:
53
+ return {"error": f"JSON ๋””์ฝ”๋”ฉ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"}
54
 
55
  # ๋ชจ๋“  ์–ธ์–ด์—์„œ ์ž๋ง‰์„ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ
56
  return {"error": "์šฐ์„ ์ˆœ์œ„ ์–ธ์–ด๋กœ ์ž๋ง‰์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."}