Bash scripting

Inviare un nuovo argomento   Rispondere all’argomento

Vedere l’argomento precedente Vedere l’argomento seguente Andare in basso

Bash scripting

Messaggio Da Troll il Ven Mar 14, 2008 2:05 pm

ecco qui la mia ultima creazione Very Happy 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


questo topic nasce per condividere esperienze di bash scripting e perchè no anche script Very Happy onion head fischiant

Troll

Messaggi : 16
Registrato il : 29/02/08

Tornare in alto Andare in basso

Omanga dowloader in bash versione 1.0

Messaggio Da Troll il Lun Mar 17, 2008 9:06 pm

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
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 onion head hi

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 12:03 pm, modificato 1 volta

Troll

Messaggi : 16
Registrato il : 29/02/08

Tornare in alto Andare in basso

Re: Bash scripting

Messaggio Da Obi Wan il Lun Mar 17, 2008 9:26 pm

l'ho visto in uso, è potentissimo!!!

Obi Wan

Messaggi : 33
Registrato il : 23/02/08
Età : 22
Località : Casteddu City

Tornare in alto Andare in basso

Vedere l’argomento precedente Vedere l’argomento seguente Tornare in alto


Permesso del forum:

Non puoi rispondere agli argomenti in questo forum