This commit is contained in:
salvacybersec
2025-11-13 06:37:40 +03:00
parent 327beae747
commit dfa68ba665
2 changed files with 38 additions and 2 deletions

2
app.py
View File

@@ -8,7 +8,7 @@ from datetime import datetime
# Logging konfigürasyonu # Logging konfigürasyonu
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=logging.DEBUG, # DEBUG modu açıldı - detaylı loglama için
format='%(asctime)s | %(levelname)-8s | %(name)s | %(message)s', format='%(asctime)s | %(levelname)-8s | %(name)s | %(message)s',
datefmt='%Y-%m-%d %H:%M:%S', datefmt='%Y-%m-%d %H:%M:%S',
handlers=[ handlers=[

View File

@@ -141,6 +141,25 @@ class TranscriptExtractor:
return {} return {}
logger.info(f"[FLARESOLVERR] ✅ İstek başarılı: HTTP {status_code}, {len(html)} byte içerik") logger.info(f"[FLARESOLVERR] ✅ İstek başarılı: HTTP {status_code}, {len(html)} byte içerik")
# Debug: HTML içeriğinin ilk 500 karakterini logla
logger.debug(f"[FLARESOLVERR] HTML önizleme (ilk 500 karakter): {html[:500]}")
# Debug: HTML'de transcript ile ilgili pattern'leri kontrol et
import re
if 'ytInitialPlayerResponse' in html or 'ytInitialData' in html:
logger.debug(f"[FLARESOLVERR] ✅ YouTube player response bulundu HTML'de")
else:
logger.warning(f"[FLARESOLVERR] ⚠️ YouTube player response bulunamadı HTML'de")
# Debug: Transcript endpoint URL'lerini ara
transcript_urls = re.findall(r'https?://[^"\s]+timedtext[^"\s]*', html)
if transcript_urls:
logger.debug(f"[FLARESOLVERR] ✅ Transcript URL'leri bulundu: {len(transcript_urls)} adet")
logger.debug(f"[FLARESOLVERR] İlk transcript URL: {transcript_urls[0][:100]}...")
else:
logger.warning(f"[FLARESOLVERR] ⚠️ Transcript URL'leri bulunamadı HTML'de")
return FlareSolverrResponse(status_code, html, headers, url) return FlareSolverrResponse(status_code, html, headers, url)
else: else:
error = result.get('message', 'Unknown error') error = result.get('message', 'Unknown error')
@@ -192,8 +211,22 @@ class TranscriptExtractor:
def json(self): def json(self):
import json import json
try: try:
# Debug: JSON parse edilmeye çalışılan içeriği logla
logger.debug(f"[FLARESOLVERR] JSON parse deneniyor, içerik tipi: {type(self.text)}, uzunluk: {len(self.text)}")
logger.debug(f"[FLARESOLVERR] İçerik önizleme (ilk 200 karakter): {self.text[:200]}")
# Eğer HTML ise JSON parse etme
if self.text.strip().startswith('<') or 'html' in self.headers.get('content-type', '').lower():
logger.warning(f"[FLARESOLVERR] ⚠️ HTML içerik JSON olarak parse edilmeye çalışılıyor, boş dict döndürülüyor")
return {}
return json.loads(self.text) return json.loads(self.text)
except: except json.JSONDecodeError as e:
logger.error(f"[FLARESOLVERR] ❌ JSON parse hatası: {e}")
logger.error(f"[FLARESOLVERR] İçerik (ilk 500 karakter): {self.text[:500]}")
return {}
except Exception as e:
logger.error(f"[FLARESOLVERR] ❌ JSON parse beklenmeyen hata: {type(e).__name__} - {str(e)}")
return {} return {}
def raise_for_status(self): def raise_for_status(self):
@@ -345,11 +378,14 @@ class TranscriptExtractor:
self._check_rate_limit() self._check_rate_limit()
logger.debug(f"[TRANSCRIPT] YouTube Transcript API çağrısı yapılıyor: video_id={video_id} (Deneme: {attempt + 1}/{max_retries + 1})") logger.debug(f"[TRANSCRIPT] YouTube Transcript API çağrısı yapılıyor: video_id={video_id} (Deneme: {attempt + 1}/{max_retries + 1})")
logger.debug(f"[TRANSCRIPT] FlareSolverr durumu: use_flaresolverr={self.use_flaresolverr}, available={getattr(self, 'flaresolverr_available', False)}")
# YouTube Transcript API kullanımı (yeni versiyon) # YouTube Transcript API kullanımı (yeni versiyon)
# API instance oluştur ve fetch() metodunu kullan # API instance oluştur ve fetch() metodunu kullan
api = YouTubeTranscriptApi() api = YouTubeTranscriptApi()
logger.debug(f"[TRANSCRIPT] API instance oluşturuldu, fetch() çağrılıyor...")
fetched_transcript = api.fetch(video_id, languages=languages) fetched_transcript = api.fetch(video_id, languages=languages)
logger.debug(f"[TRANSCRIPT] fetch() başarılı, to_raw_data() çağrılıyor...")
# Eski formatı döndürmek için to_raw_data() kullan # Eski formatı döndürmek için to_raw_data() kullan
# Format: [{'text': '...', 'start': 1.36, 'duration': 1.68}, ...] # Format: [{'text': '...', 'start': 1.36, 'duration': 1.68}, ...]