Este proyecto es parte del curso "Python Avanzado" en Platzi, impartido por @lcmartinezdev.
Platzi News es una aplicación de línea de comandos (CLI) desarrollada en Python que permite buscar noticias de diferentes fuentes y hacer preguntas inteligentes sobre ellas utilizando inteligencia artificial. El usuario puede elegir específicamente de qué fuente obtener las noticias.
La aplicación integra tres APIs principales:
- The Guardian API - Para noticias internacionales de calidad
- News API - Para acceder a múltiples fuentes de noticias globales
- OpenAI API - Para análisis inteligente y respuestas contextuales
✅ Búsqueda de Noticias: Consulta noticias en tiempo real desde The Guardian y News API con un solo comando
✅ Análisis con IA: Utiliza GPT-4 de OpenAI para analizar artículos y responder preguntas específicas sobre las noticias encontradas
✅ Interfaz Simple: Comandos intuitivos y fáciles de usar desde la terminal
✅ Selección de Fuente: Elige específicamente de qué fuente obtener las noticias (Guardian o NewsAPI)
✅ Configuración Flexible: Gestión de API keys mediante variables de entorno
Requisitos:
- Python 3.13 o superior
- Claves de API válidas para The Guardian, News API y OpenAI
platzi-news search "query" --source [guardian|newsapi]Ejemplos:
platzi-news search "tecnología" --source newsapi
platzi-news search "inteligencia artificial" --source guardian
platzi-news --log-level DEBUG search "tecnología" --source newsapiEste comando busca noticias relacionadas con el query en la fuente especificada y muestra una lista con títulos, descripciones y enlaces.
Parámetros:
query: El término o tema a buscar--source: La fuente de noticias (guardianonewsapi)
Opciones globales:
--log-level [DEBUG|INFO|WARNING|ERROR|CRITICAL]: Nivel de logging (opcional, por defecto no se muestran logs)
platzi-news ask "query" "pregunta sobre el tema" --source [guardian|newsapi]Ejemplos:
platzi-news ask "cambio climático" "¿Cuáles son las principales causas mencionadas?" --source guardian
platzi-news --log-level INFO ask "economía global" "¿Qué países se mencionan más?" --source newsapiEste comando:
- Busca noticias relacionadas con el query en la fuente especificada
- Envía los artículos a OpenAI
- Obtiene una respuesta inteligente basada en el contenido de las noticias
Parámetros:
query: El término o tema a buscarpregunta: La pregunta específica sobre el tema--source: La fuente de noticias (guardianonewsapi)
- Python 3.13+ - Lenguaje principal
- requests - Para consumir las APIs REST
- python-dotenv - Gestión de variables de entorno
- openai - Cliente oficial de OpenAI
- rich - Para una interfaz CLI atractiva y con colores
- pydantic - Validación de datos y configuración
- pydantic-settings - Gestión de configuración con Pydantic
uv venv
uv pip install -e .Para usar Platzi News necesitas configurar las claves de API. Crea un archivo .env en la raíz del proyecto con tus claves:
# Claves de API para Platzi News
GUARDIAN_API_KEY=tu_clave_de_guardian_aqui
NEWSAPI_API_KEY=tu_clave_de_newsapi_aqui
OPENAI_API_KEY=tu_clave_de_openai_aqui
# Configuraciones opcionales
MAX_ARTICLES=10
REQUEST_TIMEOUT=10
OPENAI_MODEL=gpt-4
OPENAI_MAX_TOKENS=500- The Guardian: Regístrate en https://open-platform.theguardian.com/
- News API: Regístrate en https://newsapi.org/
- OpenAI: Regístrate en https://platform.openai.com/
MAX_ARTICLES: Número máximo de artículos a obtener (por defecto: 10)REQUEST_TIMEOUT: Tiempo de espera para las solicitudes API en segundos (por defecto: 10)OPENAI_MODEL: Modelo de OpenAI a usar para el análisis (por defecto: gpt-4)OPENAI_MAX_TOKENS: Número máximo de tokens en la respuesta de OpenAI (por defecto: 500)
La aplicación incluye un sistema de logging configurable para monitorear operaciones y depurar problemas. Por defecto, no se muestran logs a menos que se especifique el nivel.
# Nivel INFO - operaciones principales
platzi-news --log-level INFO search "tecnología" --source guardian
# Nivel DEBUG - información detallada incluyendo requests HTTP
platzi-news --log-level DEBUG search "tecnología" --source guardian
# Nivel ERROR - solo errores
platzi-news --log-level ERROR ask "IA" "¿Qué avances hay?" --source newsapiNiveles disponibles:
DEBUG: Información detallada para desarrolladoresINFO: Operaciones principalesWARNING: AdvertenciasERROR: ErroresCRITICAL: Errores críticos
- 📊 Investigar temas de actualidad desde fuentes confiables
- 🎓 Recopilar información para tareas académicas eligiendo la fuente más apropiada
- 💼 Monitorear noticias sobre temas específicos de negocio
- 🔍 Obtener análisis resumidos de artículos de una fuente específica
- 📝 Generar insights a partir de noticias actuales
- 🌍 Comparar la cobertura del mismo tema entre diferentes fuentes
# 1. Buscar noticias sobre un tema en The Guardian
platzi-news search "tecnología blockchain" --source guardian
# 2. Hacer una pregunta específica sobre el tema
platzi-news ask "tecnología blockchain" "¿Cuáles son las aplicaciones más prometedoras?" --source guardian
# 3. Buscar el mismo tema en News API
platzi-news search "tecnología blockchain" --source newsapi
# 4. Obtener análisis de una fuente específica
platzi-news ask "energías renovables" "¿Cuáles son las tendencias principales?" --source newsapi- ⚡ Rápido: Obtén información en segundos
- 🎯 Preciso: Respuestas basadas en fuentes periodísticas reales
- 🔄 Actualizado: Acceso a noticias en tiempo real
- 🎚️ Flexible: Elige la fuente que prefieras según tus necesidades
- 🛠️ Extensible: Fácil de agregar nuevas fuentes de noticias
- 💡 Inteligente: Análisis contextual gracias a GPT-4
src/platzi_news/
├── __init__.py
├── config.py # Configuración y validación de API keys
├── main.py # Punto de entrada
├── analysis/ # Módulo de análisis con IA
│ ├── __init__.py
│ └── analyzer.py # Integración con OpenAI
├── core/ # Lógica central de la aplicación
│ ├── __init__.py
│ ├── exceptions.py # Excepciones personalizadas
│ ├── models.py # Modelos de datos (Article)
│ └── services.py # Servicios principales
├── io/ # Interfaz de entrada/salida
│ ├── __init__.py
│ ├── cli.py # Lógica de línea de comandos
│ └── display.py # Funciones de salida con Rich
└── sources/ # Fuentes de noticias
├── __init__.py
├── guardian.py # API de The Guardian
└── newsapi.py # API de NewsAPI
Este proyecto es de código abierto y está disponible bajo la licencia MIT.