Compartir

Compartir en GNU Social Compartir en Diaspora*

Cambiando el formato de libros electronicos

Cuando uno tiene en casa una gran devoradora de libros, empieza a plantearse que los libros electrónicos no deben estar tan mal. Si además dispone de un mp5 que le permite leer ficheros de texto sencillos (los txt de toda la vida), entonces uno se pregunta ¿y por qué no lo aprovechamos, al menos hasta que se le compre un ereader en condiciones?.

Claro que los libros electrónicos normalmente suelen estar en formatos epub, o fb2 o mobi o ... pero no es normal que estén en txt, por lo que se hace necesaria una conversión de formato.

Para convertir libros electrónicos hay bastante software, y uno bastante potente, que por supuesto es software libre, es calibre.
calibre

Desde esta aplicación a golpe de ratón podemos cambiar el libro al formato que nos interese; sin embargo para mí tiene el problema que me resulta muy pesada para lo que yo busco. Con la interfaz gráfica de calibre tenemos que añadir los ficheros a la biblioteca de la aplicación (que supone que internamente los copia a otra carpeta), y una vez añadidos podemos seleccionarlos para convertirlos.

Sin embargo, como ocurre con la mayor parte de herramientas hechas para GNU/Linux, calibre no es simplemente una agradable interfaz gráfica, sino que comprende también una serie de comandos, uno de los cuales es el encargado de la conversión de formato (ebook-convert). Este comando además me permite, en el caso de convertir a un txt, definir que el salto de línea sea el utilizado por windows y que la codificación de caracteres no sea utf-8 sino la iso8859-15, que es la que necesita el mp5.

Alguno dirá, ya está aquí con sus comandos extraños y todo eso que no entiende nadie; pues sí y no, porque preparando un sencillo script para nautilus lo único que tendré que hacer es navegar por el explorador de archivos (nautilus en gnome) hasta el directorio donde tenga mis ebooks, seleccionar los que quiero convertir (en principio en formato epub, fb2 y pdb que son los que he probado) y pinchar sobre mi script, que para no confundirme lo he llamado Ebook a txt, y esperar a que termine de convertir todos los ficheros (que se llamarán igual que el original pero con la extensión txt.
Ebook a txt

El script en cuestión es el siguiente:

#!/bin/bash

formatos="pdb epub fb2"
formato() {
  i=0
  extension=$1
  aformatos=(${formatos})
  while [ $i -lt ${#aformatos[@]} ]; do
     if [ ${extension} = "${aformatos[$i]}" ]; then
        echo 1
        return
     fi
     i=$(($i+1))
  done
  echo 0
  return
}

while [ $# -gt 0 ]; do
  origen=$1
  nombre=${origen%.*}
  extension=$(echo ${origen##*.} | tr A-Z a-z)
  formatoOK=$(formato ${extension})
  if [ ${formatoOK} -eq 1 ]; then
     destino=${nombre}.txt
     ebook-convert "${origen}" "${destino}" --output-encoding=ISO-8859_15 --newline=windows | zenity --progress --text="Convirtiendo\n${origen}\n" --pulsate --auto-close
  else
     zenity --error --text="El fichero:\n${origen}\ndebe ser de los tipos:\n${formatos}\nSin embargo su extension es ${extension}" --no-wrap
  fi
  shift
done

Convirtiendo un epub