Lector de RSS/Atom desde línea de comandos inspirado en Taskwarrior, sincronizado con Git
Un lenguaje de programación basado en línea de comandos con funciones de lectura de feeds y sincronización en Git.
Introducción
En el mundo del desarrollo de software, la gestión eficiente de información es crucial. Las fuentes de noticias como RSS y Atom feeds son herramientas valiosas para mantenerse actualizado con las últimas noticias y actualizaciones en diversos campos. Sin embargo, la gestión manual de estos feeds puede ser tediosa y poco eficiente. En este artículo, exploraremos un proyecto llamado blogtato, una CLI (Interfaz de Línea de Comandos) para leer feeds RSS/Atom inspirada en Taskwarrior y sincronizada usando Git.
¿Qué es blogtato?
blogtato es una herramienta de línea de comandos diseñada para leer feeds RSS y Atom. Su inspiración proviene de Taskwarrior, una herramienta de gestión de tareas altamente personalizable y potente. La principal ventaja de blogtato es que permite la sincronización de feeds entre múltiples dispositivos utilizando Git, lo que facilita la gestión de información en entornos multiplataforma.
Instalación y Configuración
Requisitos
Antes de instalar blogtato, asegúrate de tener los siguientes requisitos cumplidos:
- Python 3.8+: blogtato está escrito en Python y requiere una versión reciente.
- Git: Para la sincronización de feeds.
- feedparser: Una biblioteca Python para analizar feeds RSS y Atom.
- requests: Una biblioteca Python para realizar solicitudes HTTP.
Instalación
Puedes instalar blogtato utilizando pip:
pip install blogtato
Si prefieres instalar desde el repositorio de GitHub, puedes hacerlo de la siguiente manera:
git clone https://github.com/kantord/blogtato.git
cd blogtato
pip install .
Configuración Inicial
Después de instalar blogtato, debes configurarlo para que pueda acceder a tus feeds y sincronizarlos con Git.
-
Crear el archivo de configuración:
blogtato initEsto creará un directorio
.blogtatoen tu directorio home con un archivoconfig.yamly un directoriofeeds. -
Configurar feeds: Edita el archivo
config.yamlpara agregar tus feeds. Por ejemplo:feeds: - url: https://example.com/rss.xml name: Example Feed - url: https://another-example.com/atom.xml name: Another Example Feed -
Inicializar el repositorio Git:
cd ~/.blogtato git init git add . git commit -m "Initial commit" git remote add origin <your-git-repo-url> git push -u origin main
Uso Básico
Leer Feeds
Para leer los feeds configurados, simplemente ejecuta:
blogtato read
Esto mostrará una lista de los artículos más recientes de todos los feeds configurados. Puedes navegar por los artículos y marcarlos como leídos.
Marcar Artículos como Leídos
Para marcar un artículo como leído, usa el comando mark seguido del ID del artículo:
blogtato mark <article_id>
Sincronización con Git
La sincronización con Git es automática cada vez que realizas cambios en los feeds o marcas artículos como leídos. Sin embargo, puedes forzar la sincronización manualmente con:
blogtato sync
Características Avanzadas
Personalización de la Interfaz
blogtato permite personalizar la interfaz de línea de comandos. Puedes modificar el archivo config.yaml para cambiar el formato de salida, el número de artículos mostrados, y otros ajustes.
Por ejemplo, para cambiar el formato de salida de los artículos:
output_format: "{title} - {author} ({published})"
Integración con Otros Servicios
blogtato puede integrarse con otros servicios mediante la extensión de su funcionalidad. Por ejemplo, puedes escribir scripts personalizados para enviar notificaciones a Slack cuando se publique un nuevo artículo en un feed específico.
Ejemplo de Script de Notificación
import requests
from blogtato import FeedManager
def send_slack_notification(article):
url = "https://slack.com/api/chat.postMessage"
headers = {
"Authorization": f"Bearer {SLACK_BOT_TOKEN}",
"Content-Type": "application/json"
}
data = {
"channel": "#news",
"text": f"New article: {article.title} - {article.author} ({article.published})"
}
response = requests.post(url, headers=headers, json=data)
if response.status_code != 200:
raise ValueError(f"Request to Slack returned an error {response.status_code}, the response is:\n{response.text}")
if __name__ == "__main__":
manager = FeedManager()
new_articles = manager.get_new_articles()
for article in new_articles:
send_slack_notification(article)
Desarrollo y Contribución
blogtato es un proyecto de código abierto y acepta contribuciones de la comunidad. Si deseas contribuir, sigue estos pasos:
-
Clona el repositorio:
git clone https://github.com/kantord/blogtato.git cd blogtato -
Crea una rama para tu función o corrección:
git checkout -b feature/your-feature -
Realiza tus cambios y prueba:
pytest -
Envía un pull request:
git add . git commit -m "Add your feature" git push origin feature/your-feature
Conclusión
blogtato es una herramienta poderosa y flexible para la gestión de feeds RSS y Atom. Su integración con Git facilita la sincronización entre múltiples dispositivos, y su diseño inspirado en Taskwarrior ofrece una experiencia de usuario familiar y eficiente. Ya sea para mantenerse al día con las últimas noticias o para gestionar feeds específicos de tu industria, blogtato es una opción sólida y altamente recomendable.
Si necesitas asistencia técnica o consultoría para implementar soluciones similares en tu organización, no dudes en visitar https://www.mgatc.com para servicios de consultoría especializados.
Escrito por Mariano Gobea Alcoba