enchufado
   RSS
#
Naufrago!, un lector offline simple de RSS (Programación) 2010-07-12 23:10:02

El punto de partida

Empecemos la historia diciendo que yo era un feliz usuario del estupendo cliente de RSS Liferea hasta que mi tiempo en desplazamientos por vía férrea sin conexión (o con conexión con muchas interrupciones) se incrementó sustancialmente.

Cuando no consigo encontrar -tras buscar y posteriormente preguntar por la lista de Badopi- ningún software para la lectura de feeds que me permita realizar no sólo la lectura, sino la visualización de las imágenes que incorpora cada artículo offline, es cuando verdaderamente empieza la historia de este "script gráfico". O bueno, en realidad debería decir que la historia empieza con un cutre-script + Squid + Liferea que dejaba que desear, pero sería dilatar mucho el post.

El camino

Siendo usuario ocasional de Python y habiendo hecho un intento en el pasado con Gtk en C, le eché un vistazo al asequible pygtk, y luego a pywebkit, y una cosa llevó a otra hasta que me puse manos en la masa.

Comentar que no usé Glade no sólo para ver cómo funciona la contrucción de la GUI por dentro (empaquetado de widgets, herencia entre ellos, observación en general de la API), sino por comodidad personal (sí, las herramientas para RAD gráfico acostumbran a ponerme de los nervios).

Otro tema importante es el de los threads/hilos Gtk, que no lo tengo muy por la mano (y supongo no supe encontrar documentación que me ayudara en demasía), así que actualmente sólo hay un hilo extra en el proceso más importante de la aplicacion: la obtención de entradas de los feeds (y sus imagenes, si así se desea). Un cable en este aspecto (p.ej. para el proceso de importación) no estaría de más.

Cuando la cosa estaba más o menos terminada, me lié con el empaquetado del script a .deb, a cuyo cometido me ayudó este magnífico enlace de la UV (aquí en local) que me ayudó a simplificar este tema tan aparatoso. En realidad también estuve husmeando por las tripas de algunos paquetes para ver cómo se organizaba por dentro. Vale, seguramente el paquete deb que he generado deje que desear (a pesar de estar chequeado y limpio según lintian), pero para eso estáis vosotros, Debian Developers y demás gruñones del ramo (siempre con cariño, por supuesto) :)

Llegados al momento de probar el tema de las dependencias, fue cuando surgió la mini-historia de python-elementtree, cuyo paquete parecía haber desaparecido en Debian Testing (la que uso) en el tiempo que yo estuve desarrollando. Tras escribir a los mantenedores, su pronta respuesta me dejó relativamente tranquilo al decirme que el paquete no estaba dejado de la mano de Diós como a mi me había parecido, sino que se trataba de un estado transicional al ser incorporado al core de Python en algún punto a partir de la versión 2.6. A día de hoy, esto ya es así en y a partir de Squeeze/Testing.

En este punto tenía pensado liberarlo para que aquellos que estuvieran interesados, lo pudieran probar, pero me lié con gettext, es decir, con el tema de la internacionalización, así que de momento, la aplicación está disponible en Catalan, Castellano e Inglés, que son las lenguas con las que más o menos me defiendo (otras traducciones son bienvenidas y seran incorporadas).

El script dista mucho de ser perfecto, pero de momento cumple su cometido. Algunos engorros conocidos son, como he comentado más arriba, que la importación de feeds parece que deje colgada la aplicación (pero la realidad es que el proceso tarda -una cantidad de tiempo directamente proporcional al número de feeds- a importar sin actualizar convenientemente la GUI), y que puntualmente he tenido un casque no identificado. Respecto al primer tema, de momento parece que ponerlo en un hilo separado es un problema de cara a la estabilidad, y respecto al segundo tema, son bienvenidos los consejos. Todo esto está en la documentación de la aplicación, bien en el README (ca|es|en), bien en la ayuda online (FAQ/PUF) de la misma.

La llegada

Para ir terminando, e aquí las características destacables:

  • Categorización de feeds de un único nivel en árbol.
  • Organización de feeds por categorías mediante drag & drop.
  • Lectura online/offline de feeds (incluyendo imágenes).
  • Modo pantalla completa para la lectura de feeds.
  • Marcación de entradas de feeds como importantes/permanentes (grabación).
  • Inclusión de los favicons de los feeds.
  • Iconización de la aplicación en la Tray.
  • Importación/exportación de feeds en formato OPML.
  • Multiidioma (de momento Catalan, Castellano e Inglés).

Y como una imagen vale más que mil palabras...

Finalmente, ahí van los paquetes para quien guste. El tarball es para usar desde cualquier distro, aunque el modo de distribución _recomendado_ es el empaquetado deb para los usuarios de la maravillosa Debian GNU/Linux. Eso sí, para usar el tarball, cada uno se va a tener que espavilar y mirar en su distro si tiene esas librerias en su repositorio, o conseguirlas como bien pueda. Y si alguien se anima a empaquetarlo para otra/s distro/s, yo encantado :)

  • Tarball de Náufrago! [local - sourceforge] (sha1sum: 288e26c2f80ba5e80733182f9dd57002734d5b65)
  • Paquete deb de Náufrago! [local - sourceforge] (sha1sum: dfd44b0f17f9e24439e89605a66e88bbd9bd5820)

PD. Nótese que para usar el paquete deb (opción recomendada), y lo digo por si pasó desapercibido, la aplicación sólo está disponible (por la propia disponibilidad de las librerías que la componen) para Debian Squeeze/Testing y superiores (probado en Squeeze/Testing y Sid). Así que quien lo quiera para Stable, siempre puede esperar a que Squeeze lo sea :P

PD2. A partir de ahora, he decidido que mi feed pasa a ser de contenido completo (es algo de lo que me convencieron por Badopi, especialmente el señor Masdeu).


Comentarios (17)


Volver al indice

login, admin, form, register