diff --git a/requirements.txt b/requirements.txt index 6770bb5..0a5de77 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,5 @@ aiohttp==3.9.1 feedparser==6.0.10 websockets==12.0 trafilatura==1.6.2 +vaderSentiment + diff --git a/routers.py b/routers.py index f17f1c4..671af48 100644 --- a/routers.py +++ b/routers.py @@ -4,6 +4,7 @@ from fastapi.templating import Jinja2Templates import dataset import json import aiohttp +import sentiment import feedparser import asyncio from datetime import datetime @@ -356,15 +357,17 @@ async def websocket_sync(websocket: WebSocket): 'last_synchronized': datetime.now().isoformat() } + existing = articles_table.find_one(guid=article_data['guid']) if not existing: new_articles.append(article_data) articles_count += 1 - + article_data['sentiment'] = json.dumps(sentiment.analyze(entry.get('description', '') or entry.get('summary', ''))) articles_table.upsert(article_data, ['guid']) # Index the article to ChromaDB doc_content = f"{article_data.get('title', '')}\n{article_data.get('description', '')}" + metadata = {key: str(value) for key, value in article_data.items() if key != 'content'} # Exclude large content from metadata chroma_collection.upsert( documents=[doc_content], @@ -490,8 +493,9 @@ async def search_articles( for i, doc_id in enumerate(results['ids'][0]): res = results['metadatas'][0][i] res['distance'] = results['distances'][0][i] + res['sentiment'] = sentiment.analyze(res.get('description', '') or res.get('content', '') or res.get('title', '')) formatted_results.append(res) - + return JSONResponse(content={"results": formatted_results}) else: @@ -565,6 +569,8 @@ async def newspaper_latest(request: Request): for article in articles: for key, value in article.items(): article[key] = str(value).strip().replace(' ', '') + + article['sentiment'] = sentiment.analyze(article.get('description', '') or article.get('content', '') or res.get('title', '')) return templates.TemplateResponse("newspaper_view.html", { "request": request, "newspaper": first_newspaper, diff --git a/templates/newspaper_view.html b/templates/newspaper_view.html index f0d7c28..a0e9cde 100644 --- a/templates/newspaper_view.html +++ b/templates/newspaper_view.html @@ -164,6 +164,7 @@