debug
This commit is contained in:
2
app.py
2
app.py
@@ -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=[
|
||||||
|
|||||||
@@ -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}, ...]
|
||||||
|
|||||||
Reference in New Issue
Block a user