Quick hack: rss2epub -- hace lo que dice
Por ejemplo, Aranduka está cerca de poder sincronizar mi colección de libros con my teléfono. Pero... que pasa si lo que quiero leer en el tren no es un libro sino un blog?
Bueno, los blogs te dan feeds. Y un feed es una colección de pedazos de HTML pegoteados en una estructura más unos datos como autor y cosas así.
Y hay un módulo excelente para parsearlos, qu se llama feedparser. Y yo no escribí uno, ni dos, ni tres, sino cuatro programas para leer RSS!
Entonces, porqué no convertir el feed en algo que mi teléfono pueda digerir? [#] Es difícil?
Bueno... no mucho. Fue cuestión de tomar un documento ePub chiquito de ejemplo (generado con Calibre), escribir algunos templates, darle los datos de feedparser, y zipear todo.
Por ejemplo, este archivo es este blog como ePub y así se ve FBReader leyéndolo.
Como siempre, el codigo es abierto, y está acá en el mercurial de aranduka.
No es código interesante, y requiere templite feedparser y quién sabe que mas.
El ePub producido no valida, y probablemente nunca lo haga, ya que tiene pedazos de los feeds originales adentro, por lo que la validación no depende de rss2epub.
Además no tenés imágenes. Eso implicaría parsear y arreglar todos los elementos img o algo así y no tengo ganas en este momento.
[#] Este feature lo ví por primera vez en plucker hace añares, y sé que Calibre lo tiene.
eBooks y PyQt: una linda pareja
Pero entonces pensé... será difícil leer ePub? Bueno, es re fácil!
Acá hay una explicación en stackoverflow.com <http://stackoverflow.com/questions/1388467/reading-epub-format>`_ pero la versión corta es... es un zip con XML adentro.
Uno de esos XML te dice adonde está cada cosa, otro es el índice, el resto es una colección de HTML/CSS/imágenes.
Entonces: estos son los ingredientes para cocinarte un lector casero de ePub en 150 líneas:
Usá el módulo zipfile para no expandir el zip (eso es berreta)
Usá Element Tree para parsear el XML.
Usá QtWebkit de PyQt para mostrar esa colección de XML/CSS/Images
Usá esta receta para que QtWebkit te avise que quiere algo del zip.
Enchufá una cosa con otra, sacudí, y terminás con esto:
Acá está el código (hasta ahora) <http://code.google.com/p/aranduka/source/browse/src/epubviewer.py?r=1d5df32bf717651e5ed5d1d22012666ee06d63a2>`_ y el archivo UI file que necesitás.
Que le falta:
No muestra la tapa.
Sólo muestra el primer nivel del índice.
Sólo lo probé en dos libros ;-)
Necesita refactorizar a morir.
Ninguna de esas cosas es terriblemente difícil de hacer!
THE DOPE on mars
Eastern Standard Tribe
Review:Not Doctorow's best book. |