Tratando de encontrar alguna emisión como la gente por el canal de cable, hace unos meses me dediqué a hacer funcionar la información en pantalla de tvtime. Básicamente, tvtime obtiene la información de programación a partir de un archivo con formato estándar XMLTV, por lo que del lado del software de visualización está todo hecho, lo que falta es conseguir una fuente desde la cual obtener la información y entregársela de la forma adecuada (es decir, generar el archivo XML).
De eso se encargan los scripts del paquete xmltv-util. En particular, el script tv_grab_ar toma la información de mi proveedor de cable en argentina, amasa los datos y escupe un xml que se puede pasar directo a tvtime. Lamentablemente no logré hacer funcionar la versión 1.6 de tv_grab_ar tal cual viene en el paquete, y tras varios minutos haciendo debugging sobre las líneas decidí dejar de descifrar perl y comenzar a escribir un nuevo script en python.
Las primeras versiones fueron bastante sencillas, la librería BeautifulSoup facilita mucho nadar en el HTML del sitio web de MC. En versiones siguientes añadí la posibilidad de descargar la reseña de cada programa de TV, una funcionalidad que según creo no estaba en el paquete original.
Básicamente los pasos son: obtener la grilla de programación de la semana actual para cada canal, y luego para cada programa obtener el título, horario, descripción, género, etc. Como la descarga de descripciones es muy tediosa y lenta (es como mínimo una petición HTTP por programa) y como muchas veces los programas se repiten (en la misma semana o entre semanas) aproveché el módulo pickle para almacenar el diccionario de emisiones entre invocaciones al script, agilizando de esta manera la actualización de los datos.
Finalmente terminé con este script que dejo en el blog por si a alguien le sirve. Las capturas de pantalla son un indicio de como tvtime presenta la información. Como siempre, cualquier consulta, sugerencia, crítica o mejora es bienvenida.
Descarga: tv_grab_ar.py [ver. 2009.09.21-1]


Instalación:
- Descargar tv_grab_ar.txt y mover el archivo al directorio de tvtime:
mv tv_grab_ar.txt ~/.tvtime/tv_grab_ar.py - Instalar la librería beautifulsoup:
apt-get install python-beautifulsoup - Ejecutar:
./tv_grab_ar.py --configure
e indicar los canales para los cuales se desea obtener la información. - Ejecutar:
./tv_grab_ar.py --verbose --output=programacion.xml
para obtener la programación y las descripciones de los programas. - Iniciar tvtime e indicar que obtenga la programación desde el archivo:
tvtime --xmltv=programacion.xml
Usage: tv_grab_ar.py [options]
Get Argentinian television listings in XMLTV format
Options:
--version show program's version number and exit
-h, --help show this help message and exit
--days=N Grab N days. The default is 3. [not implemented]
--offset=N Start N days in the future. The default is to start
from today. [not implemented]
--skip-descriptions Do not download program descriptions.
--output=FILE Write to FILE rather than standard output.
--fix-stationlist Fill the channel names into the station list file.
--station-file=FILE Set the name of the station list file, the default is
<~/.tvtime/stationlist.xml>
--configure Prompt for which channels and write the configuration
file.
--config-file=FILE Set the name of the configuration file, the default is
<~/.xmltv/tv_grab_ar.conf>. This is the
file written by --configure and read when grabbing.
--quiet Suppress the progress messages normally written to
standard error.
--verbose Display additional information.
--list-channels Display only the channel listing.
















