raghavNCI
commited on
Commit
·
601d9f9
1
Parent(s):
35f2d8a
headlines
Browse files- app.py +2 -0
- nuse_modules/fetchHeadlines.py +26 -0
- 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
|