yunuseduran commited on
Commit
d7975b0
·
verified ·
1 Parent(s): c11fb9d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +3 -41
app.py CHANGED
@@ -8,21 +8,18 @@ from urllib.parse import urlparse, parse_qs
8
 
9
  # Video ID çıkarma fonksiyonu
10
  def extract_video_id(url):
11
- # YouTube URL formatları için regex
12
  youtube_regex = r'(https?://)?(www\.)?(youtube|youtu|youtube-nocookie)\.(com|be)/(watch\?v=|embed/|v/|.+\?v=)?([^&=%\?]{11})'
13
 
14
  match = re.match(youtube_regex, url)
15
  if match:
16
  return match.group(6)
17
 
18
- # URL parametrelerinden ID çıkarma
19
  parsed_url = urlparse(url)
20
  if parsed_url.netloc in ['youtube.com', 'www.youtube.com']:
21
  query_params = parse_qs(parsed_url.query)
22
  if 'v' in query_params:
23
  return query_params['v'][0]
24
 
25
- # youtu.be URL'leri için
26
  if parsed_url.netloc == 'youtu.be':
27
  return parsed_url.path.strip('/')
28
 
@@ -31,19 +28,14 @@ def extract_video_id(url):
31
  # RapidAPI üzerinden transkript alma fonksiyonu
32
  def get_transcript_via_rapidapi(video_url):
33
  try:
34
- # Video ID'yi çıkar
35
  video_id = extract_video_id(video_url)
36
  if not video_id:
37
  return "Geçersiz YouTube URL'si. Lütfen geçerli bir YouTube video URL'si girin."
38
 
39
- # Hugging Face'de ayarladığınız secret değeri al
40
  RAPID_API_KEY = os.environ.get("RAPID_API_KEY", "")
41
-
42
  if not RAPID_API_KEY:
43
  return "RapidAPI anahtarı bulunamadı. Lütfen Hugging Face Space ayarlarında RAPID_API_KEY adlı bir secret oluşturun."
44
 
45
- # ----- RapidAPI Endpoint Seçeneği 1: YouTube Transcriptor -----
46
- # API endpoint ve parametreleri
47
  url = "https://youtube-transcriptor.p.rapidapi.com/transcript"
48
  querystring = {"video_id": video_id, "lang": "tr"}
49
  headers = {
@@ -51,37 +43,14 @@ def get_transcript_via_rapidapi(video_url):
51
  "X-RapidAPI-Host": "youtube-transcriptor.p.rapidapi.com"
52
  }
53
 
54
- # API isteği gönder
55
  response = requests.get(url, headers=headers, params=querystring)
56
 
57
- # ----- VEYA -----
58
-
59
- # ----- RapidAPI Endpoint Seçeneği 2: Ultimate YouTube API -----
60
- # url = "https://ultimate-youtube-api.p.rapidapi.com/video/transcript"
61
- # querystring = {"id": video_id}
62
- # headers = {
63
- # "X-RapidAPI-Key": RAPID_API_KEY,
64
- # "X-RapidAPI-Host": "ultimate-youtube-api.p.rapidapi.com"
65
- # }
66
- # response = requests.get(url, headers=headers, params=querystring)
67
-
68
- # API yanıtını kontrol et
69
  if response.status_code == 200:
70
  try:
71
  data = response.json()
72
-
73
- # API'nin yanıt formatına göre ayarla - YouTube Transcriptor API için:
74
- if data and 'transcriptionAsText' in data[0]:
75
- transcript = data[0]['transcriptionAsText']
76
- return transcript
77
 
78
- # Ultimate YouTube API formatı için:
79
- # if data and isinstance(data, list):
80
- # transcript_parts = []
81
- # for item in data:
82
- # if 'text' in item:
83
- # transcript_parts.append(item['text'])
84
- # return " ".join(transcript_parts)
85
 
86
  return "Transkript verileri beklenen formatta değil. Manuel olarak girmeyi deneyin."
87
  except Exception as e:
@@ -95,9 +64,7 @@ def get_transcript_via_rapidapi(video_url):
95
  # Gemini API ile metni özetleme
96
  def fn_sum_text(transkript_text, word_count, model_sel, lang_sel, action_sel):
97
  try:
98
- # Hugging Face'de ayarladığınız secret değeri al
99
  GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY", "")
100
-
101
  if not GEMINI_API_KEY:
102
  return "Gemini API anahtarı bulunamadı. Lütfen Hugging Face Space ayarlarında GEMINI_API_KEY adlı bir secret oluşturun."
103
 
@@ -114,14 +81,11 @@ def fn_sum_text(transkript_text, word_count, model_sel, lang_sel, action_sel):
114
 
115
  # Her ikisini birleştiren fonksiyon
116
  def process_video(video_url, word_count, model_sel, lang_sel, action_sel):
117
- # Önce transkripti al
118
  transcript = get_transcript_via_rapidapi(video_url)
119
 
120
- # Hata kontrolü
121
  if transcript.startswith("Hata") or transcript.startswith("Geçersiz") or transcript.startswith("API"):
122
  return transcript, ""
123
 
124
- # Transkript başarıyla alındıysa, özetle
125
  summary = fn_sum_text(transcript, word_count, model_sel, lang_sel, action_sel)
126
  return transcript, summary
127
 
@@ -227,9 +191,7 @@ with gr.Blocks(title="YouTube Transcript Özetleyici") as demo:
227
  with gr.Accordion("Sorun Giderme", open=False):
228
  gr.Markdown("""
229
  ### Sık Karşılaşılan Sorunlar
230
-
231
-
232
-
233
  **"Transkript Bulunamadı" Hatası**
234
  - Videonun altyazıları bulunmuyor olabilir
235
  - Seçilen RapidAPI servisi bu video için altyazı sunmuyor olabilir
 
8
 
9
  # Video ID çıkarma fonksiyonu
10
  def extract_video_id(url):
 
11
  youtube_regex = r'(https?://)?(www\.)?(youtube|youtu|youtube-nocookie)\.(com|be)/(watch\?v=|embed/|v/|.+\?v=)?([^&=%\?]{11})'
12
 
13
  match = re.match(youtube_regex, url)
14
  if match:
15
  return match.group(6)
16
 
 
17
  parsed_url = urlparse(url)
18
  if parsed_url.netloc in ['youtube.com', 'www.youtube.com']:
19
  query_params = parse_qs(parsed_url.query)
20
  if 'v' in query_params:
21
  return query_params['v'][0]
22
 
 
23
  if parsed_url.netloc == 'youtu.be':
24
  return parsed_url.path.strip('/')
25
 
 
28
  # RapidAPI üzerinden transkript alma fonksiyonu
29
  def get_transcript_via_rapidapi(video_url):
30
  try:
 
31
  video_id = extract_video_id(video_url)
32
  if not video_id:
33
  return "Geçersiz YouTube URL'si. Lütfen geçerli bir YouTube video URL'si girin."
34
 
 
35
  RAPID_API_KEY = os.environ.get("RAPID_API_KEY", "")
 
36
  if not RAPID_API_KEY:
37
  return "RapidAPI anahtarı bulunamadı. Lütfen Hugging Face Space ayarlarında RAPID_API_KEY adlı bir secret oluşturun."
38
 
 
 
39
  url = "https://youtube-transcriptor.p.rapidapi.com/transcript"
40
  querystring = {"video_id": video_id, "lang": "tr"}
41
  headers = {
 
43
  "X-RapidAPI-Host": "youtube-transcriptor.p.rapidapi.com"
44
  }
45
 
 
46
  response = requests.get(url, headers=headers, params=querystring)
47
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  if response.status_code == 200:
49
  try:
50
  data = response.json()
 
 
 
 
 
51
 
52
+ if data and 'transcriptionAsText' in data[0]:
53
+ return data[0]['transcriptionAsText']
 
 
 
 
 
54
 
55
  return "Transkript verileri beklenen formatta değil. Manuel olarak girmeyi deneyin."
56
  except Exception as e:
 
64
  # Gemini API ile metni özetleme
65
  def fn_sum_text(transkript_text, word_count, model_sel, lang_sel, action_sel):
66
  try:
 
67
  GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY", "")
 
68
  if not GEMINI_API_KEY:
69
  return "Gemini API anahtarı bulunamadı. Lütfen Hugging Face Space ayarlarında GEMINI_API_KEY adlı bir secret oluşturun."
70
 
 
81
 
82
  # Her ikisini birleştiren fonksiyon
83
  def process_video(video_url, word_count, model_sel, lang_sel, action_sel):
 
84
  transcript = get_transcript_via_rapidapi(video_url)
85
 
 
86
  if transcript.startswith("Hata") or transcript.startswith("Geçersiz") or transcript.startswith("API"):
87
  return transcript, ""
88
 
 
89
  summary = fn_sum_text(transcript, word_count, model_sel, lang_sel, action_sel)
90
  return transcript, summary
91
 
 
191
  with gr.Accordion("Sorun Giderme", open=False):
192
  gr.Markdown("""
193
  ### Sık Karşılaşılan Sorunlar
194
+
 
 
195
  **"Transkript Bulunamadı" Hatası**
196
  - Videonun altyazıları bulunmuyor olabilir
197
  - Seçilen RapidAPI servisi bu video için altyazı sunmuyor olabilir