miércoles, febrero 03, 2010

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 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:
  1. Descargar tv_grab_ar.txt y mover el archivo al directorio de tvtime:
    mv tv_grab_ar.txt ~/.tvtime/tv_grab_ar.py

  2. Instalar la librería beautifulsoup:
    apt-get install python-beautifulsoup

  3. Ejecutar:
    ./tv_grab_ar.py --configure
    e indicar los canales para los cuales se desea obtener la información.

  4. Ejecutar:
    ./tv_grab_ar.py --verbose --output=programacion.xml
    para obtener la programación y las descripciones de los programas.

  5. 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 [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.

martes, diciembre 29, 2009

Son los pequeños detalles...

Por ejemplo, que el reproductor VLC nos reciba con gorro navideño en las fiestas.


O la pantalla de inicio de ReactOS, en honor en su versión 0.3.11 "for Workgroups".


Son pequeños detalles, guiños hacia el usuario común, los que nos hacen recordar que detrás de cada software hay gente como uno.

Felices Fiestas!!

jueves, diciembre 10, 2009

All in the name of liberty

Y otra vez se fue noviembre como por un tubo, y aprovecho ahora, diez de diciembre, para publicar algunas fotos de lo que fue uno de los mejores shows que he tenido la suerte de ver.

Sí, estuve en el recital del viernes en River, viendo los viejitos de AC/DC demostrar lo jóvenes que son desplegando un tremendo repertorio ante una audiencia hambrienta de rock.

Para qué les voy a contar como estuvo, ya varios [1] se [2] encargaron [3] de [4] eso [5] y mucho mejor de lo que yo podría detallarlo. Les dejo, sí, algunas fotos fuleras tomadas con el celular (SE K800) y algunos videos de Youtube con buena calidad.

AC/DC Highway to Hell - Live in Buenos Aires Argentina 04-12-09

Ver en alta definición (HD)

viernes 4/12 AC/DC -hells bells river plate

Ver en alta definición (HD)

AC/DC Buenos Aires Dec. 2nd '09 You Shook Me All Night Long

Ver en alta definición (HD)


Fotos










Meh... escucho las campanadas de Hell Bells y todavía se me pone la piel de gallina...

sábado, octubre 24, 2009

ExciteBike à la Robot Chicken

Para los que nos hemos criado frente al Family Game, esta hilarante parodia de ExciteBike hecha por los muchachos de Robot Chicken les traerá una infinidad de recuerdos.

viernes, octubre 16, 2009

Cero planificacion

Por si quedaban dudas de que estamos en un país bananero, el gobierno ahora no sabe si va a cambiar la hora este domingo 18 de octubre de 2009, pasando de GMT-3 a GMT-2. Y hoy es viernes 16. Ya el año pasado los que mantenemos sistemas informáticos aquí en Argentina tuvimos bastantes dolores de cabeza con la indecisión gubernamental, lo que llevó a una gran discusión respecto de la falta de certezas en el cambio horario. Se ve que fueron, por decirlo así, al cuete.

Pero... ¡a ver si se dejan de joder de una buena vez y ponen las cosas en claro!

Yo creo que las opciones ser dos: o mantener siempre GMT-3, o bien usar GMT-3 y pasar a GMT-4 en el otoño.

Si toca mantener un Debian/Ubuntu/loquesea, y si el gobierno decide que SI habrá cambio de huso horario, las opciones son variadas:
  • En Debian 4.0 Etch (que ya no debiera estar en producción), hasta la versión 2008e-1etch3 del paquete tzdata, no está contemplado el cambio de huso horario el domingo. El paquete del repositorio volatile, versión 2009g-0etch1, sí contempla el cambio horario a GMT-2 del domingo 18 de octubre.
  • En Debian 5.0 Lenny, hasta la versión 2009l-0lenny1, sí contempla el cambio horario el domingo.
  • En Debian Squeeze (que tampoco debiera estar en producción), hasta la versión 2009n-1, sí contempla el cambio horario el domingo.
Por otro lado, si el gobierno decide que NO habrá cambio, lo más sencillo es establecer en el servidor, mediante dpkg-reconfigure tzdata, un huso horario fijo tal como ETC/GMT+3 (sí, es +3), que corresponde al huso horario fijo constante GMT-3.

En cuanto se sepa alguna decisión coherente, actualizo el post.

Update 1: ahora me dicen que quizá el cambio se postergue... incompetencia não tem fim.

Update 2: Vuelta atrás. Ahora no hay cambio de huso horario.

Mil gracias a Marga que se encargó de corregir los paquetes tzdata para las releases etch (2009g-0etch1), lenny (2009g-0lenny1), y la rama inestable (2009n-2) de Debian.

Los improperios, como corresponde, diríjanlos a nuestros gobernantes.

miércoles, agosto 12, 2009

X -configure

Lo olvido constantemente:
X -configure
porque tener un xorg.conf en blanco no siempre facilita las cosas.

Especialmente cuando la intención es usar una resolución específica en openbox sin depender de xrandr.

jueves, agosto 06, 2009

Implementación de Servidores Linux 2009

Leo en Kriptópolis que ya está disponible para descarga desde el sitio de Alcance Libre la edición de agosto septiembre del libro "Implementación de Servidores Linux 2009" de Joel Barrios Dueñas, compartido bajo licencia Creative Commons Reconocimiento - NoComercial - CompartirIgual 2.1.

El contenido del libro está basado en CentOS 4 y 5 y en sus 600 páginas comprende:
  • ¿Que es GNU/Linux?
  • Estándar de Jerarquía de Sistema de Ficheros
  • Instalación en modo texto de CentOS
  • Instalación en modo gráfico de CentOS
  • Cómo iniciar el modo de rescate en CentOS
  • Iniciando el sistema en nivel de ejecución 1 (nivel mono-usuario)
  • Cómo compilar el núcleo (kernel) de GNU/Linux en CentOS
  • Cómo gestionar espacio de memoria de intercambio (swap) en GNU/Linux
  • Procedimientos de emergencia
  • Cómo optimizar el sistema de archivos ext3
  • Cómo configurar y utilizar Sudo
  • Cómo crear cuentas de usuario
  • Breve lección de mandatos básicos
  • Funciones básicas de vi
  • Introducción a sed
  • Introducción a AWK
  • Permisos del Sistema de Ficheros
  • Cómo utilizar el mandato chattr
  • Creando depósitos yum
  • Uso de yum para instalar y desinstalar paquetería y actualizar sistema
  • Cómo utilizar RPM
  • Cómo crear paquetería con rpmbuild
  • Cómo asignar cuotas de disco
  • Introducción a TCP/IP
  • Introducción a IP versión 4
  • Cómo configurar correctamente los parámetros de red
  • Cómo configurar acoplamiento de tarjetas de red (bonding)
  • Cómo conectarse a una red Wifi desde la terminal
  • Cómo utilizar lsof
  • Cómo utilizar Netcat (nc)
  • Como utilizar Netstat
  • Cómo utilizar ARP
  • Introducción a IPTABLES
  • Cómo utilizar CBQ
  • Introducción a SELinux en CentOS 5 y Fedora
  • Cómo configurar un servidor DHCP en una LAN
  • Cómo configurar vsftpd (Very Secure FTP Daemon)
  • Cómo configurar pure-ftpd
  • Cómo configurar OpenSSH.
  • Cómo utilizar OpenSSH con autenticación a través de clave pública
  • Cómo configurar OpenSSH con Chroot
  • Cómo configurar NTP
  • Cómo configurar Clamd.
  • Cómo configurar el sistema para sesiones gráficas remotas
  • Cómo configurar un servidor NFS
  • Cómo configurar Samba básico
  • Cómo configurar Samba denegando acceso a ciertos ficheros
  • Cómo configurar Samba con Papelera de Reciclaje
  • Cómo instalar y configurar Samba-Vscan en CentOS 5
  • Cómo configurar Samba como cliente o servidor WINS
  • La ingeniería social y los [incorrectos] hábitos del usuario
  • Configuración básica de Sendmail
  • Opciones avanzadas de seguridad para Sendmail
  • Cómo configurar Sendmail y Dovecot con soporte SSL/TLS
  • Cómo configurar Cyrus IMAP
  • Instalación y configuración de SquirrelMail (correo a través de interfaz HTTP )
  • Cómo instalar GroupOffice en CentOS
  • Apéndice: Enviar correo a todos los usuarios del sistema
  • Cómo configurar clamav-milter
  • Cómo configurar spamass-milter
  • Cómo configurar un servidor NIS
  • Cómo configurar OpenLDAP como servidor de autenticación
  • Cómo configurar OpenLDAP como libreta de direcciones
  • Cómo configurar OpenLDAP con soporte SSL/TLS
  • Cómo instalar y configurar MySQL
  • Configuración básica de Apache
  • Cómo habilitar los ficheros .htaccess y SSI )Server Side Includes) en Apache
  • Cómo configurar Apache con soporte SSL/TLS
  • Cómo configurar un servidor de nombres de dominio (DNS)
  • Cómo configurar Squid: Parámetros básicos para Servidor Intermediario Proxy
  • Cómo configurar Squid: Acceso por autenticación
  • Cómo configurar Squid: Restricción de acceso a Sitios de Red
  • Cómo configurar Squid: Restricción de acceso a contenido por extensión
  • Cómo configurar Squid: Restricción de acceso por horarios
  • Cómo configurar squid con soporte para direcciones MAC
  • Apéndice: Listas y reglas de control de acceso para Squid
  • Cómo configurar un muro cortafuegos con Shorewall y tres interfaces de red
  • Cómo configurar un servidor de OpenVPN en CentOS 5
  • Cómo configurar SNMP
  • Cómo configurar MRTG
  • Cómo instalar Java 1.5 en CentOS 5
  • Cómo instalar la complemento (plug-in) Flash Player para Firefox y otros
  • Cómo configurar escáner en red
  • Usando Smartd para anticipar los desastres de disco duro
  • Cómo crear un disco con instalación personalizada de CentOS 5
  • Glosario de mandatos básicos
  • Ejercicios
En resumen: un libro más que completo.
Para quien lo desea en papel, se pueden adquirir copias impresas en Lulu.com.