"""Haber sayfasından tam makale metnini çıkarır.

RSS özetleri çoğu kaynakta ya boş ya tek cümle; sadece başlıkla tweet yazınca
"Italiano'dan Vlahovic sözleri!" gibi hiçbir şey anlatmayan metinler çıkıyordu.
Burada makalenin gövdesi çekilip LLM'e verilir; böylece tweet kendi başına
anlaşılır olur.
"""
import logging

import trafilatura
from curl_cffi import requests

log = logging.getLogger("news.article")

MAX_CHARS = 4000   # LLM'e gönderilecek üst sınır (maliyet + gereksiz uzunluk)


def fetch_full_text(url: str) -> str:
    """Makale gövdesini döner; çıkarılamazsa boş string."""
    if not url:
        return ""
    try:
        r = requests.get(url, impersonate="chrome", timeout=25)
        if r.status_code != 200:
            log.debug("Makale %s -> HTTP %s", url[:80], r.status_code)
            return ""
        text = trafilatura.extract(
            r.text,
            include_comments=False,
            include_tables=False,
            include_images=False,
            favor_precision=True,
        )
        if not text:
            return ""
        cleaned = " ".join(text.split())
        return cleaned[:MAX_CHARS]
    except Exception as e:
        log.debug("Makale %s -> hata: %s", url[:80], e)
        return ""
