lunes, 20 de mayo de 2013

Script bash para descargar números de la revista digital Linux Magazine

Hace tiempo que sigo esa revista, pero como los artículos están separados en ficheros pdf independientes, se volvía pesado descargar uno a uno y leerlos en algún dispositivo, tablet o ereader, debido a tener 20 ficheros distintos.

Por ello decidí crear el siguiente script, basado en el que nos ofrecen en la propia web de Linux Magazine, con el que podéis descargar los números que os interesen y unir todos los artículos en un solo fichero pdf.

----------

#!/bin/sh

# Alberto A. (Sink) 05/2013
# http://elmagodelosbits.blogspot.com.es/
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>


# Introduce los números que te interesan separados por un espacio o usa la siguiente expresión para descargar un rango de números.
# Ejemplos:

# Descargar el número 13 de la revista: for numero in 13; do
# Descargar los números 13 y 25 de la revista: for numero in 13 25; do
# Descargar todos los números entre el 13 y el 25, ambos incluidos: for numero in `seq 13 25`; do

# DEPENDENCIAS:

# 1. Es necesario instalar "pdftk"

# ADVERTENCIAS:
# 1. La descarga se realizará en la misma carpeta en la que se encuentre el script.
# 2. El orden de unión de los ficheros .pdf de los números 1 a 25 no será correcto, pues el nombre de los ficheros originales no están numerados.


for numero in `seq 1 82`; do



# Añade un "0" si el valor es menor o igual a 9
  if [ $numero -le 9 ]; then
    x="0"$numero
  fi
 
  # Crea una carpeta para la revista elegida
  mkdir
"Linux Magazine
$numero"
  cd "Linux Magazine
$numero"
  # Descarga todos los artículos del número de revista elegido
  wget --recursive --no-parent -A pdf http://www.linux-magazine.es/issue/
$numero/
  mv www.linux-magazine.es/issue/
$numero/*.pdf ../"Linux Magazine $numero"/
  # Añade todos los .pdf de un número de la revista en un solo fichero

  pdftk *.pdf output "Linux Magazine $numero.pdf" 
  # Elimina ficheros sobrantes de la descarga
  rm -r www.linux-magazine.es/
  cd ..

done

exit
0



----------

Es mejorable, pero por ahora lo dejo así. Espero que os sea útil.

No hay comentarios:

Publicar un comentario