Nueva versión rc de tv_grab_ar.py

A comienzos de 2010 tiré las primeras lineas de código para un sencillo script que descarga la grilla de programación de un conocido proveedor de televisión por cable. Este script retorna la información en formato XMLTV lista para ser consumida por aplicaciones tales como TvTime y MythTV.

Hoy me toca publicar una versión extremadamente release candidate de este grabber tv_grab_ar.py, originada por una serie de cambios en el sitio web fuente de la información. La actualización ha implicado una reescritura de más de la mitad del código original, por lo cual lo considero una versión aún en pruebas.

Las novedades incluyen:

  • La reescritura completa por los cambios en el sitio web del proveedor.
  • Un nuevo método de descarga de grillas y fichas, algo mas eficiente que el anterior.
  • Arreglos para que el archivo de salida valide contra la definición xmltv.dtd.
  • Conversión del parsing de argumentos desde optparse a argparse.
  • Implementación de los argumentos days y offset.

Es REQUISITO volver a configurar el grabber ejecutando ./tv_grab_ar.py --configure

Esta versión no utiliza el almacenamiento temporal de las fichas de programas (fichas.db) y entre las cuestiones aún no resueltas está la definición de la localización y el tipo de señal de la que se dispone (analógica, digital o hd), que es sobre lo que necesito comentarios de ustedes.

Como siempre, please test & give feedback.

Link de descarga en el post original.

tvtime + xmltv + tv_grab_ar.py

En lo que ha sido del año pasado he dedicado poco tiempo a la TV, tras advertir como se viene abajo la calidad de la programación (o como cada vez uno se pone más exquisito), me da menos ímpetu. Veo la “caja boba” por la PC, como todo el que quiere ahorrar espacio, mediante una pequeña y económica placa sintonizadora (Encore ENLTV-FM) que funciona muy bien en Linux, incluso con control remoto.

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 lxml (BeautifulSoup ya no funciona correctamente) 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. 2015.03.02-1]

Últimos cambios: Fix sutil por problemas en la codificación de los títulos. Reincorporación del caché y de la descarga de descripciones de los shows. Sean pacientes pues la descarga ahora demora bastante más tiempo que antes. Si quieren la programación rápidamente, aunque no tenga las descripciones, usen –skip-descriptions. Como no tengo forma de probarlo localmente, Please Test & Give Feedback!

Instalación:

  1. Descargar tv_grab_ar.py y mover el archivo al directorio de tvtime:
    mv tv_grab_ar.py ~/.tvtime/tv_grab_ar.py
  2. Instalar la librería beautifulsoup:
    apt-get install python-beautifulsoup
  3. Instalar la librería python lxml:
    apt-get install python-lxml
  4. Ejecutar:./tv_grab_ar.py --configuree indicar la zona y los canales para los cuales se desea obtener la información. El valor de zone determina la grilla de canales según la localidad.
  5. Ejecutar:
    ./tv_grab_ar.py --verbose --output=programacion.xml

    para obtener la programación y las descripciones de los programas. Este proceso demora varios minutos, sean pacientes.

  6. Iniciar tvtime e indicar que obtenga la programación desde el archivo:
    tvtime --xmltv=programacion.xml

Para finalizar, lo ideal es colocar en el cron de usuario una entrada para ejecutar la actualización al menos una vez por semana.

usage: tv_grab_ar.py [-h] [--days N] [--offset N] [--skip-descriptions]
                     [--output FILE] [--configure] [--config-file FILE]
                     [--quiet] [--verbose] [--list-channels] [--zone N]
                     [--capabilities] [--describe] [--description]
                     [--cache FILE] [--version]

Get Argentinian television listings in XMLTV format

optional arguments:
  -h, --help           show this help message and exit
  --days N             Grab N days. The default is 3.
  --offset N           Start N days in the future. The default is to start
                       from today.
  --skip-descriptions  Do not download program descriptions.
  --output FILE        Write to FILE rather than standard output.
  --configure          Prompt for which channels and write the configuration
                       file.
  --config-file FILE   Set the name of the configuration file, the default is
                       </home/maurom/.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. [not implemented]
  --verbose            Display additional information.
  --list-channels      Display only the channel listing.
  --zone N             Override user location for retrieval of channels.
  --capabilities       Show which capabilities the grabber supports. For more
                       information, see
                       <http://wiki.xmltv.org/index.php/XmltvCapabilities>
  --describe           Show a brief description of the grabber.
  --description        Show a brief description of the grabber.
  --cache FILE         Cache description data in FILE. The default is 
                       </home/maurom/.xmltv/tv_grab_ar.db>.
  --version            show program's version number and exit

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress