Delirios de un Informático

«¡No me digas lo que no puedo hacer!»

Conversor de Wikipedia a ePub: la Wikipedia offline

Archivado en Software con fecha 28/abr/2011
Etiquetado con: , , , ,

Para viajar la Wikipedia es de lo mas útil, bien leída desde cualquier dispositivo o bien en forma de audioguía con aplicaciones como Toozla para Android. El problema es que requiere conexión a internet y en el extranjero no suele ser una opción económica. Por eso me puse a curiosear cómo meter la Wikipedia (o partes de ella) en mi Kindle para así poder leer tranquilamente en cualquier lugar, y me topé con wikipedia4epub, un programa escrito en Haskell que dada una entrada de la Wikipedia, la descarga y procesa para convertirla en un archivo ePub estándar, legible por casi cualquier aparato (excepto el Kindle, pero para eso se recurre a Calibre).

El proceso de instalación es el siguiente:

sudo apt-get install cabal-install zlib1-dev libsqlite3-dev
cabal update
cabal install wikipedia4epub

Importante que los dos últimos comandos se ejecuten como usuario normal, ya que se descargarán e instalarán los paquetes en el directorio $HOME. Luego, para descargar un artículo basta ejecutar:

$HOME/.cabal/bin/wiki4e-mkepub-subtree http://en.wikipedia.org/wiki/Belgium

El proceso es lento, ya que descarga y empaqueta el artículo indicado con sus fotografías e imágenes, así como todos los artículos enlazados. Y es ahí donde está lo interesante, en que obtienes un libro electrónico con la posibilidad de hacer click en los artículos enlazados no quedando limitado a la información de ese artículo, si no a toda su información relacionada. En mi caso, el artículo Belgium se convierte en cientos de secciones (visibles en la tabla de contenido) y 160MB de peso.

El problema principal es el idioma: el script está pensado para la Wikipedia en inglés y aunque se indique un artículo en español u otro idioma, los artículos asociados no se descargarán correctamente. Además, un pequeño bug provoca el error openBinaryFile: > inappropriate type (Is a directory). Para solucionar esto, pueden seguirse los pasos que me dió el propio autor tras comunicarle el bug:

sudo apt-get install 
cd /tmp
darcs get --lazy http://darcsden.com/dixie/wikipedia4epub
darcs get --lazy http://patch-tag.com/r/dixiecko/epub

Con esto habremos descargado el código fuente de la última versión. Para habilitar la descarga de los artículos en castellano habrá que editar el archivo /tmp/wikipedia4epub/src/Network/Wikipedia.hs y sustituir todas las apariciones de en.wikipedia.org por es.wikipedia.org. Luego, hay que recompilar y reinstalar:

cd epub
cabal install
cd ../wikipedia4epub
cabal install

Una vez realizados estos pasos, se podrá usar para generar archivos ePub en español :)

NOTA: si se quiere desinstalar por completo todo lo que se ha descargado y compilado, es necesario borrar a mano ciertas cosas ya que al ser datos de usuario no se eliminan al desinstalar los paquetes:

sudo apt-get remove --purge cabal-install zlib1-dev libsqlite3-dev
sudo apt-get autoremove --purge
cd $HOME
rm -rf .cabal
rm -rf .ghc
rm -rf .wiki4e

Comentarios

Diana dijo el 27/09/2011 a las 10:36:

Buenas,

He estado probando el programa y realizado las modificaciones que se indican para que se puedan leer las páginas de la wikipedia en español, sin embargo cuando se encuentra con enlaces en idioma distinto al indicado el programa devuelve el error igual que sucede cuando se le pasaban páginas en español y el idioma indicado era inglés. El error es el siguiente:
/home/usuario/.wiki4e/wiki4e_fetch: openBinaryFile: inappropriate type (Is a directory)

Me gustaría saber si existe alguna manera para solucionar el problema.

Muchas gracias de antemano.

David Martínez dijo el 27/09/2011 a las 11:13:

¿Podrías poner un ejemplo de página que falle?

José María dijo el 6/11/2011 a las 14:31:

Si utilizas el navegador Chrome, puedes instalar la extensión “dotEPUB”, que transforma en formato epub cualquier página abierta en ese momento. Por lo que a Wikipedia se refiere, una vez que has dado una entrada, la extensión te la baja en formato epub

donmatas dijo el 27/12/2011 a las 15:52:

pero dotepub no baja los vínculos.

donmatas dijo el 27/12/2011 a las 15:59:

Traté de instalarlo en Ubuntu 10.04 pero me señaló que faltaban algunas librerías (ver abajo). ¿Hay alguna solución? Me interesa mucho el programa, ya que las alternativas que hay no descargan los artículos enlazados.

gracias
DM

sudo apt-get install cabal-install zlib1-dev libsqlite3-dev
[sudo] password for matas:
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
El paquete zlib1-dev no está disponible, pero algún otro paquete hace referencia
a él. Esto puede significar que el paquete falta, está obsoleto o sólo se
encuentra disponible desde alguna otra fuente
E: El paquete zlib1-dev no tiene candidato para su instalación

David Martínez dijo el 27/12/2011 a las 20:42:

Parece que el paquete que necesitas instalar en Ubuntu 10.04 es zlib1g-dev. Este tipo de dependencias cambia con cierta frecuencia debido a que nombran los paquetes con la versión, en vez de actualizarlas.

donmatas dijo el 28/12/2011 a las 2:47:

Gracias David! En principio funcionó (todavía no hago la magia para wikipedia en español). Mi problema es que no se donde quedó el archivo .epub creado. ¡que ñoño!

salud
DM

David Martínez dijo el 28/12/2011 a las 9:54:

En principio el archivo .epub se queda en el directorio de ejecución. Si no, haz un find . -name *.epub y listo.

donmatas dijo el 28/12/2011 a las 18:36:

Gracias David. La verdad es que hubo un “bug” como puedes apreciar:
.cabal/bin/wiki4e-mkepub-subtree http://en.wikipedia.org/wiki/Karl_Marx
….
[692/692] Already cached. Skipping download. /home/matas/.wiki4e/wiki4e_fetch/Main_Page
# STAGE 3/4 – Sanitize articles
wiki4e-mkepub-subtree: Invalid article relative path: http://www.dictionaryofeconomics.com/article?id=pde2008_M000403&q=monetary%20business%
matas@el-bolido:~$

Veré si se resuelve con tu tutorial.

salud
DM

David Martínez dijo el 29/12/2011 a las 13:51:

Intuyo que es porque detecta “article” y lo toma como un artículo de la Wikipedia. Ahí ya es más complicado arreglar sin trastear en el código…

Alberto dijo el 13/03/2013 a las 19:18:

¿Y no es más fácil esto?

- Uso firefox y el artículo de Agatha Christie como ejemplo
- una vez en el artículo de Wikipedia que nos interese, hacer un simple Archivo>Guardar como> Agatha Christie – Wikipedia, la enciclopedia libre.html?
- nos vamos a nuestro Calibre, cargamos ese fichero «Agatha Christie – Wikipedia, la enciclopedia libre.html» y, una vez cargado
- usamos la opción “Convertir libros” (lo reconocerá como un .zip, pero eso como veremos, da igual) Formato de entrada ZIP >> Formato de salida MOBI (dará igual si elegimos EPUB, comprobado)

Haciendolo así, encontraremos esos archivos .EPUB o .MOBI en:
Biblioteca de calibre/Wikipedia, la enciclopedia libre

David Martínez dijo el 13/03/2013 a las 19:20:

Gracias Alberto, este artículo tiene años y de aquella no existía esa opción en la Wikipedia. Ahora es muy fácil generar ebooks :)

Delirios de un Informático  §  Gestionado con WordPress  §  Licenciado bajo Creative Commons