RSS Feed de Mercurial (hg)

Se me ocurrió mantener la traducción del Tutorial de Python actualizada. Pero claro, para eso tengo que chequear periódicamente para ver si hubo algunos cambios en los originales. Entonces, el primer paso para cualquier cosa que sea periódica es un Google Calendar. El segundo: un script.

... luego de crear el evento de Google Calendar ...

Me puse a ver como funcionaba el repositorio de Python de Mercurial y veo que tiene una opción de RSS, entonces la cosa se empieza a simplificar. Ya que teniendo un RSS era más fácil informarse de los cambios. Lo siguiente que hice, fue buscar el RSS para una carpeta en particular, pero a eso no lo encontré. Entonces, me fui directamente a la documentación de Mercurial y encontré que tiene el RSS Global y el particular para un archivo, nada más :(

Bueno, "Me bajo el global y lo parseo buscando el nombre de la carpeta que estoy interesado" -me dije. Y... ¿Vos podés creer? El feed RSS solo tiene la fecha, el título, el autor y mail, el link y el mensaje del commit. ¡Son unos muertos! Ese feed no me sirve para nada.

Así que, ¿se te ocurre una forma de hacer ésto sin hacer "hg pull" y comparar eso contra mis archivos de traducciones?

Solución

Finalmente, usé el RSS de tags del repositorio de Mercurial. Ya que cada nueva versión, viene con su documentación correspondiente. El problema que tiene esto es que quizás entre una versión y otra la documentación varie lo suficiente como para que sea tedioso actualizarla (espero que esto no pase).

Utilicé este script para hacer el chequeo:

check_python_tags.py

# This script checks if there is a newer tag than the specified in CURRENT_TAG

import conf
import smtplib
import feedparser
from email.mime.text import MIMEText

TAGS_URL = 'http://hg.python.org/cpython/tags'
CURRENT_TAG = 'v3.4.0a2'
ATOM_URL = 'http://hg.python.org/cpython/atom-tags'

rss = feedparser.parse(ATOM_URL)
tag = rss['entries'][0].title

if tag != CURRENT_TAG:
    # Send an email to my account
    text = 'Please go to {} to check it out.'.format(TAGS_URL)
    msg = MIMEText(text)
    msg['From'] = conf.FROMADDR
    msg['To'] = conf.TOADDRS
    subject = '[Python HG] There is a new tag: {tag}'.format(tag=tag)
    msg['Subject'] = subject

    # Credentials
    username = conf.USERNAME
    password = conf.PASSWORD

    # The actual mail send
    server = smtplib.SMTP('smtp.gmail.com:587')
    server.starttls()
    server.login(username, password)
    server.send_message(msg)
    server.quit()

Finalmente configuré un cron para que lo ejecute una vez al mes.

0 11 1 * * /home/humitos/.virtualenvs/python-rss/bin/python3 /home/humitos/Source/scripts/check_python_tags.py

Comentarios

Comments powered by Disqus