Bash scripting
2 partecipanti
Pagina 1 di 1
Bash scripting
ecco qui la mia ultima creazione si tratta di uno script di bash che scarica capitoli da onemanga.com
- Spoiler:
- Codice:
#!/bin/bash
#getmanga.sh(0.1) batch dowloader che scarica capitoli da onemanga .net
# Copyright (C) 2008 Scioni Roberto
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License(version 2) as published by
# the Free Software Foundation;
#
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
wget $1 -nc #scarica la pagina di indice del capitolo ($1 è l'url di tale pagina passata come argomento dello script)
inizio=$((`grep -n Page -o index.html | head -n 1 |grep -E [0-9]+ -o`+2)) #individua l'inizio della prima lista delle pagine
fine=$((`grep -n button -o index.html | head -n 1 |grep -E [0-9]+ -o`-3)) #individua la fine della prima lista delle pagine
pagine=`head -n $fine index.html |tail -n $(($fine-$inizio)) - |grep -E ">[[:alnum:]]+-[[:alnum:]]+<|>[[:alnum:]]+<" -o|grep -E -e "[[:alnum:]]+-[[:alnum:]]+|[[:alnum:]]+" -o` #ricava la lista delle pagine
base=`grep -E "http://img34.onemanga.com/mangas/[[:digit:]]+/[[:digit:]]+/" index.html -o` #trova la directory delle immagini
estensione=` grep "mangas/" index.html | grep -E ".jpg|.png|.gif|.jpeg" -o` # individua l'estensione
for pagina in $pagine; do wget $base$pagina$estensione ; done #scarica i file
Troll- Messaggi : 16
Data di iscrizione : 29.02.08
Omanga dowloader in bash versione 1.0
GetManga.sh
questo script scarica tutti i capitoli disponibili di un dato manga dal sito onemanga.com
prende tre argomenti di cui il primo obbligatorio è attualmente sprovvisto del controllo sull'input il primo argomento deve essere l'url di una pagina di indice di un manga simile a questa: Highschool_of_the_Dead
il secondo parametro se presente crea una sottodirectory in cui salvare i capitoli del manga che ne prende il valore come nome il terzo parametro se maggiore di zero determina da che capitolo iniziare il dowload se inferiore a zero riprende il dowload da dove è stato interrotto se invece non è presente l'inizio sarà trovato tramite parsing della pagina indice
GetChapter.sh
questo script è la versione aggiornata di quello del primo post con l'aggiunta di un parametro che se presente crea una sottodirectory in cui scaricare le pagine del manga
gli script assicurano la continuazione dei dowload interrotti di capitoli eventuali pagine scaricate a metà per ora non vengono riprese tuttavia l'esigua dimensione dei file rende improbabile tale evento la funzione è in scheduling per la versione 2.0
alla prossima
ps: per il corretto funzionamento di GetManga.sh è necessario fare in modo che
GetChapter.sh sia nel path questo può essere fatto tramite un symlink nell cartela /usr/bin o creando un alias nel file .bashrc
NUOVA VERSIONE
change log
versione 1.2: aggiunto il riconoscimento delle url nella forma img.X dove Xè un intero tra 0 e 99 che può anche non essere presente
versione 1.1: aggiunto il riconoscimento delle url nella forma img.X dove Xè un intero tra 0 e 99 [prima X era una costante ferma a 34]
GetChapter.sh versione 1.2
questo script scarica tutti i capitoli disponibili di un dato manga dal sito onemanga.com
prende tre argomenti di cui il primo obbligatorio è attualmente sprovvisto del controllo sull'input il primo argomento deve essere l'url di una pagina di indice di un manga simile a questa: Highschool_of_the_Dead
il secondo parametro se presente crea una sottodirectory in cui salvare i capitoli del manga che ne prende il valore come nome il terzo parametro se maggiore di zero determina da che capitolo iniziare il dowload se inferiore a zero riprende il dowload da dove è stato interrotto se invece non è presente l'inizio sarà trovato tramite parsing della pagina indice
- Spoiler:
- Codice:
#!/bin/bash
#getmanga.sh(1.0) batch dowloader che scarica capitoli da omanga .net
# Copyright (C) 2008 Scioni Roberto
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License(version 2) as published by
# the Free Software Foundation;
#
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
if `echo $2 | grep -E -e .+ -q` ;then
mkdir $2
cd $2;
fi
wget $1 -nc #scarica la pagina di indice del manga ($1 è l'url di tale pagina passata come argomento dello script)
inizio=$((`grep -E -e"</td>" index.html | grep -E subject|tail -n1|grep -E -e"/[_[:alnum:]]+/[[:digit:]]+" -o|grep -E -e"[[:alnum:]]/[[:digit:]]+" -o| grep -E -e "/[[:digit:]]+" -o|grep -E -e"[[:digit:]]+" -o`)) #individua l'inizio della prima lista delle pagine
fine=$((`grep -E -e"</td>" index.html |head -n 1|grep -E -e"/[_[:alnum:]]+/[[:digit:]]+" -o|grep -E -e"[[:alnum:]]/[[:digit:]]+" -o| grep -E -e "/[[:digit:]]+" -o|grep -E -e"[[:digit:]]+" -o`)) #individua la fine della prima lista delle pagine
titolo=`grep -E -e"</td>" index.html |head -n 1|grep -E -e"/[_[:alnum:]]+/[[:digit:]]+" -o|grep -E -e "/[_[:alnum:]]+/" -o|grep -E -e [_[:alnum:]]+ -o`
if `echo $3 | grep -E -e .+ -q` ;then #controllo se esiste $3 e se esiste lo imposto come punto di partenza
if (($3<0));
then
echo continuare
ls
inizio=$((`ls -f |grep -E -e"[[:digit:]]+" -o|tail -n 1`));
echo $inizio
fi
else
echo passato
inizio=$3;
echo $inizio
fi
echo $inizio
for((i=$inizio;$i<=$fine;i++));do GetChapter.sh "http://www.onemanga.com/"$titolo"/"$i $i;done
rm index.html
GetChapter.sh
questo script è la versione aggiornata di quello del primo post con l'aggiunta di un parametro che se presente crea una sottodirectory in cui scaricare le pagine del manga
- Spoiler:
- Codice:
#!/bin/bash
#getmanga.sh(1.0) batch dowloader che scarica capitoli da omanga .net
# Copyright (C) 2008 Scioni Roberto
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License(version 2) as published by
# the Free Software Foundation;
#
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
if `echo $2 | grep -E -e .+ -q` ;then
mkdir $2
cd $2;
fi
wget $1 -nc #scarica la pagina di indice del capitolo ($1 è l'url di tale pagina passata come argomento dello script)
inizio=$((`grep -n Page -o index.html | head -n 1 |grep -E [0-9]+ -o`+2)) #individua l'inizio della prima lista delle pagine
fine=$((`grep -n button -o index.html | head -n 1 |grep -E [0-9]+ -o`-3)) #individua la fine della prima lista delle pagine
pagine=`head -n $fine index.html |tail -n $(($fine-$inizio)) - |grep -E ">[[:alnum:]]+-[[:alnum:]]+<|>[[:alnum:]]+<" -o|grep -E -e "[[:alnum:]]+-[[:alnum:]]+|[[:alnum:]]+" -o` #ricava la lista delle pagine
base=`grep -E "http://img34.onemanga.com/mangas/[[:digit:]]+/[[:digit:]]+/" index.html -o` #trova la directory delle immagini
estensione=` grep "mangas/" index.html | grep -E ".jpg|.png|.gif|.jpeg" -o` # individua l'estensione
for pagina in $pagine; do wget -nc $base$pagina$estensione ; done #scarica i file
rm index.html
gli script assicurano la continuazione dei dowload interrotti di capitoli eventuali pagine scaricate a metà per ora non vengono riprese tuttavia l'esigua dimensione dei file rende improbabile tale evento la funzione è in scheduling per la versione 2.0
alla prossima
ps: per il corretto funzionamento di GetManga.sh è necessario fare in modo che
GetChapter.sh sia nel path questo può essere fatto tramite un symlink nell cartela /usr/bin o creando un alias nel file .bashrc
NUOVA VERSIONE
change log
versione 1.2: aggiunto il riconoscimento delle url nella forma img.X dove Xè un intero tra 0 e 99 che può anche non essere presente
versione 1.1: aggiunto il riconoscimento delle url nella forma img.X dove Xè un intero tra 0 e 99 [prima X era una costante ferma a 34]
GetChapter.sh versione 1.2
Ultima modifica di Troll il Gio Mar 20, 2008 1:03 pm - modificato 1 volta.
Troll- Messaggi : 16
Data di iscrizione : 29.02.08
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.