jueves, 11 de diciembre de 2014

Script descarga de mangas-imágenes en submanga,mcanime y otros...

Bueno, hace tiempo lo hice y hoy creo que ya toca compartirlo, es un script hecho por mi(por lo cual quiero que quede claro, no será lo mejor del mundo, pero a mi me funciona) aprovechando que todas las paginas de imágenes tienen que tener ciertos patrones(sino imagínate que locura cambiar la ruta de al imagen para pasar a la siguiente imagen en vez de cambiar solamente la numeración).

De manera que aprovechando eso genere el siguiente .bash,su uso es tan simple como

bash script.bash urlEntera(hasta el .jpg,png...) dirAGuardar pagInicio pagFin extension offset

-urlEntera: para que coja toda al ruta con dirname
-dirAGuarda: lo que hace es crear el directorio y si existe no lo reescribe
-pagInicio: lo tipico..tenemos un 1.jpg o así pues ponemos el numero de inicio...0,1,...etc
-pagFin: como el anterior, lo normal es que acabe con una numeración
-extension: Los que veáis el bash vereis que por defecto si dais a ENTER cuando pregunte coge jpg, sino inicadlo

*podeis hacerlo ejecutable y tirar con ./script.bash y asi..pero eso ya queda a desición de cada uno

a continuación el código...(por supuesto para bash con linux)




#!/bin/bash
#@autor miniminiyo
#script para bajar imagenes

#echo 'Nueva estructura'
#echo 'url dir pagIni pagFin extension offset'
#echo "ej:http://omg.submanga.com/pages/1/232/2320043d7/1.jpg 232 1 31 pedira extension y #offset"
#echo "ej:http://omg.submanga.com/pages/1/232/2320043d7/1.jpg 232 1 31 jpg pedira offset"
#echo "ej:http://omg.submanga.com/pages/1/232/2320043d7/1.jpg 232 1 31 jpg fairytail-"


#LECTURA DE URL

if [ -z $1 ]; then

read -p "introduzca url " url #recibimos dato
url=$(dirname $url)
echo "La url es ${url}"

else

url=$(dirname $1) #si la hemos metido como primera entrada la cargamos de una desde ahi

fi


#NOMBRE DE CARPETA DONDE SE GUARDARA


if [ -z $2 ]; then

read -p "indique el nombre que quiere dar a la carpeta donde se guardaran los datos " nombre

else

nombre=$2

fi


#ESTA PARTE ES SIEMPRE IGUAL, ENTRAMOS EN EL DIRECTORIO

mkdir $nombre
cd $nombre


#INICIO DE DESCARGA DE PAGINAS

if [ -z $3 ] ; then

read -p "introduzca el inicio (default:0, pulse ENTER si acepta por defecto el inicio) " ini
#COMPROBAMOS ENTRADA DE INICIO
if [ -z "${ini}" ] ;then

ini=0 #¿0 o 1?

fi

#SEGUIMOS CON LA ENTRADA POR ARGUMENTO AL SCRIPT
else

ini=$3

fi


#FIN DE DESCARGA DE PAGINAS

if [ -z $4 ] ; then

read -p "introduzca el fin " fin
echo "se acabara en ${url}/${fin}.jpg"

else

fin=$4

fi

#LECTURA DE EXTENSION

if [ -z $5 ] ; then

read -p "introduzca la extension de la imagen(defaut:jpg, pulse ENTER si acepta por defecto la extension) " extension

#COMPROBAMOS QUE SE HA INTRODUCCIDO UNA EXTENSION
#si no se ha introducido la ponemos por defecto a jpg
if [ -z "${extension}" ] ;then

extension=jpg

fi

else #no esta vacio el $6

extension=$5

fi



#LECTURA DE OFFSET (like url/fairytail...etc..0.jpg) , el offset es hasta el numero
#solo se rompe en cosas como nombreNUMEROnombre.extension
#pero no he visto casos asi
if [ -z $6 ]; then

read -p "Introduzca la variacion hasta la parte numerica si existe, en caso contrario pulse ENTER" offset
#echo offset
if [ -z "${offset}"] ; then

offset=;

fi #fin de mira si hay offset o no

else

#¿calcularlo con cut -d0 sobre basename de url -s .jpg o algo asi?
offset=$6

fi

#fin si

echo "la extension indicada es ${extension}"



#creamos el fichero
touch urls.txt

#for i in $(seq $ini 1 $fin) #usar seq -w para indicar el numero de ceros a la izquierda de forma #'forzosa'

for i in {$ini..$fin} #esto ya coge siempre el mismo numero de zeros a la izquierda necesarios
do
echo "${url}/${offset}${i}.${extension}" >> urls.txt
echo
done

echo "fin operacion salida a texto"

#ahora descargamos
wget -c -i urls.txt
echo "fin de descarga de archivos"
echo "El nombre del directorio en que se guardo es ${nombre}"

#HASTA AQUI EL SCRIPT, CUALQUIER MEJORA COMENTADLA, pero antes probadla en #vuestro equipo ;)

No hay comentarios:

Publicar un comentario