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": "μš°μ„ μˆœμœ„ μ–Έμ–΄λ‘œ μžλ§‰μ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€."}