|
from scraper.milliyet import get_sondakika_links as milliyet_links, get_news_content as milliyet_parse
|
|
from scraper.haberler import scrape_haberler
|
|
from VektorDataBase.pinecone_client import upsert_article_chunks , get_id_from_url
|
|
from VektorDataBase.embedder import get_embedding
|
|
from datetime import datetime
|
|
|
|
|
|
processed_contents = set()
|
|
|
|
def is_duplicate_content(content: str) -> bool:
|
|
"""Aynı içerik daha önce işlendi mi? aynı içeriğin tekrar veritabanına eklenmesini engeller"""
|
|
return content.strip() in processed_contents
|
|
|
|
def process_news_item(source: str, url: str, parse_func):
|
|
try:
|
|
news = parse_func(url)
|
|
title = news.get("title", "").strip()
|
|
content = news.get("content", "").strip()
|
|
|
|
if not title or not content:
|
|
print(f"{source} boş içerik veya başlık atlandı → {url}")
|
|
return
|
|
|
|
if is_duplicate_content(content):
|
|
print(f"{source} aynı içerik atlandı (dupe) → {url}")
|
|
return
|
|
|
|
upsert_article_chunks(
|
|
article_id_base=get_id_from_url(url),
|
|
url=url,
|
|
title=title,
|
|
text=content,
|
|
timestamp=datetime.now().isoformat(),
|
|
embed_func=get_embedding
|
|
)
|
|
processed_contents.add(content)
|
|
|
|
except Exception as e:
|
|
print(f"Error processing {source} news item: {e}")
|
|
|
|
def run_pipeline():
|
|
print(f"\nPipeline çalışıyor... {datetime.now().isoformat()}")
|
|
|
|
|
|
print("\nMilliyet haberleri çekiliyor...")
|
|
for link in milliyet_links():
|
|
process_news_item("milliyet.com.tr", link, milliyet_parse)
|
|
|
|
|
|
print("\nHaberler.com içerikleri işleniyor...")
|
|
haberler_articles = scrape_haberler()
|
|
for article in haberler_articles:
|
|
title = article["title"].strip()
|
|
content = article["content"].strip()
|
|
|
|
if not title or not content:
|
|
print(f"haberler.com boş içerik atlandı → {article['url']}")
|
|
continue
|
|
|
|
if is_duplicate_content(content):
|
|
print(f"haberler.com aynı içerik atlandı (dupe) → {article['url']}")
|
|
continue
|
|
|
|
upsert_article_chunks(
|
|
article_id_base=article["id"],
|
|
url=article["url"],
|
|
title=title,
|
|
text=content,
|
|
timestamp=article["timestamp"],
|
|
embed_func=get_embedding
|
|
)
|
|
processed_contents.add(content)
|
|
|
|
print(f"\nPipeline tamamlandı: {datetime.utcnow().isoformat()}")
|
|
if __name__ == "__main__":
|
|
run_pipeline() |