Un proyecto web desarrollado con Python y FastAPI que filtra, analiza y te presenta únicamente las buenas noticias del día procedentes de los periódicos más relevantes del país (El País, El Mundo, La Vanguardia, ABC).
Olvídate de política, tragedias o deportes. Este algoritmo selecciona inteligentemente avances científicos, logros culturales y buenas historias utilizando herramientas de Procesamiento de Lenguaje Natural e Inteligencia Artificial (Sentiment Analysis).
- 100% Python y Server-Side Rendering (SSR): No depende de bibliotecas complejas de JavaScript (React/Vue). La interfaz es construida de manera asíncrona directamente desde el servidor usando
Jinja2para máxima velocidad. - Web scraping concurrente: Lee múltiples feeds RSS simultáneamente y sin bloquear hilos gracias a
asyncio. - Análisis de Sentimientos IA: Evalúa la positividad matemática del titular y el sumario gracias a
sentiment-analysis-spanish. - Filtro estricto propio: Incluye listas personalizadas de palabras vetadas y palabras clave altamente positivas.
- Diseño estético y clásico: La interfaz (UI) simula un hermoso y relajante periódico vintage animado por CSS.
- Clona el repositorio y entra en el directorio.
- Crea un entorno virtual e instala los requerimientos (se recomiendan Python 3.9 o superior).
python -m venv venv
# Activa el entorno
venv\Scripts\activate # Windows
source venv/bin/activate # Mac/Linux
pip install fastapi uvicorn feedparser sentiment-analysis-spanish jinja2- Modifica a tu gusto las listas de palabras clave si así lo deseas (
positive_words.txt,negative_words.txt).
Inicia el servidor local de desarrollo utilizando Uvicorn:
uvicorn main:app --reloadAbre tu navegador de internet y dirígete a http://localhost:8000/. ¡Disfruta leyendo!
El núcleo de la aplicación descansa en main.py. Este archivo:
- Inicializa FastAPI y monta las rutas.
- Lee los RSS configurados.
- Filtra la basura con el cruce de los diccionarios (Filtro 1).
- Somete el texto restante a la función de sentimiento numérico IA (Filtro 2).
- Se balancean las métricas para evitar que un solo periódico sature la portada.
- Jinja2 recibe el paquete final de noticias puras y las injerta dinámicamente sobre la plantilla de
index.html. - En el frontend, el archivo
style.cssse ocupa de toda la animación de entrada progresiva.
