debug
This commit is contained in:
2
app.py
2
app.py
@@ -8,7 +8,7 @@ from datetime import datetime
|
||||
|
||||
# Logging konfigürasyonu
|
||||
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',
|
||||
datefmt='%Y-%m-%d %H:%M:%S',
|
||||
handlers=[
|
||||
|
||||
@@ -141,6 +141,25 @@ class TranscriptExtractor:
|
||||
return {}
|
||||
|
||||
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)
|
||||
else:
|
||||
error = result.get('message', 'Unknown error')
|
||||
@@ -192,8 +211,22 @@ class TranscriptExtractor:
|
||||
def json(self):
|
||||
import json
|
||||
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)
|
||||
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 {}
|
||||
|
||||
def raise_for_status(self):
|
||||
@@ -345,11 +378,14 @@ class TranscriptExtractor:
|
||||
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] FlareSolverr durumu: use_flaresolverr={self.use_flaresolverr}, available={getattr(self, 'flaresolverr_available', False)}")
|
||||
|
||||
# YouTube Transcript API kullanımı (yeni versiyon)
|
||||
# API instance oluştur ve fetch() metodunu kullan
|
||||
api = YouTubeTranscriptApi()
|
||||
logger.debug(f"[TRANSCRIPT] API instance oluşturuldu, fetch() çağrılıyor...")
|
||||
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
|
||||
# Format: [{'text': '...', 'start': 1.36, 'duration': 1.68}, ...]
|
||||
|
||||
Reference in New Issue
Block a user