raghavNCI commited on
Commit
601d9f9
·
1 Parent(s): 35f2d8a
Files changed (3) hide show
  1. app.py +2 -0
  2. nuse_modules/fetchHeadlines.py +26 -0
  3. routes/headlines.py +10 -0
app.py CHANGED
@@ -1,6 +1,7 @@
1
  from fastapi import FastAPI
2
  from routes.category import router # routes.py must be in same folder
3
  from routes.question import askMe
 
4
  from dotenv import load_dotenv
5
  from cache_init import fetch_and_cache_articles
6
  from fastapi.middleware.cors import CORSMiddleware
@@ -11,6 +12,7 @@ load_dotenv()
11
  app = FastAPI()
12
  app.include_router(router)
13
  app.include_router(askMe)
 
14
 
15
  app.add_middleware(
16
  CORSMiddleware,
 
1
  from fastapi import FastAPI
2
  from routes.category import router # routes.py must be in same folder
3
  from routes.question import askMe
4
+ from routes.headlines import headlines
5
  from dotenv import load_dotenv
6
  from cache_init import fetch_and_cache_articles
7
  from fastapi.middleware.cors import CORSMiddleware
 
12
  app = FastAPI()
13
  app.include_router(router)
14
  app.include_router(askMe)
15
+ app.include_router(headlines)
16
 
17
  app.add_middleware(
18
  CORSMiddleware,
nuse_modules/fetchHeadlines.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from nuse_modules.google_search import search_google_news
2
+ from models_initialization.mistral_registry import mistral_generate
3
+
4
+ def summarize_headlines_with_mistral(headlines: list[dict]) -> str:
5
+ prompt = (
6
+ "Summarize the following news headlines into a short 3-sentence digest. "
7
+ "Be factual and neutral. Mention the sources.\n\n"
8
+ )
9
+ for item in headlines:
10
+ prompt += f"- {item['title']} – {item.get('link', '')}\n"
11
+
12
+ return mistral_generate(prompt, max_new_tokens=200, temperature=0.5)
13
+
14
+
15
+ def generate_headline_digest(keywords: list[str], num_results: int = 5):
16
+ articles = search_google_news(keywords, num_results=num_results)
17
+
18
+ if isinstance(articles, dict) and "error" in articles:
19
+ return {"error": articles["error"]}
20
+
21
+ summary = summarize_headlines_with_mistral(articles)
22
+ return {
23
+ "summary": summary,
24
+ "sources": list({article["link"] for article in articles}),
25
+ "headlines": [article["title"] for article in articles]
26
+ }
routes/headlines.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, Query
2
+ from nuse_modules.fetchHeadlines import generate_headline_digest
3
+
4
+ headlines = APIRouter()
5
+
6
+ @headlines.get("/headlines")
7
+ def get_headlines(q: str = Query("India", description="Comma-separated keywords to search")):
8
+ keywords = [kw.strip() for kw in q.split(",")]
9
+ result = generate_headline_digest(keywords)
10
+ return result