mercoledì 23 marzo 2011

downloadfromlist.sh - Salvare contenuti web

Allora ripartiamo.
Ho ripensato a come scaricare i contenuti da internet (pagine, immagini, documenti), praticamente ho rivisto e corretto lo script per la storicizzazione dei contenuti.

Anzitutto, non so che cosa e quanti contenuti voglio scaricare, per questo motivo ho pensato ad un elenco che contenesse
  • URL da scaricare
  • NOME del file scaricato, che nome deve avere una volta scaricato, uguale alla "url" in certi casi e` improponibile, specialmente se contiene caratteri interrogativi o altro
  • TIPO del file che sto` scaricando, per esempio: jpg, pdf, html
E questo e` diventato un file che possiamo chiamare "elenco.txt" e potrebbe contenere questo:
http://srv2.realcam.it/live/pub/12-4.jpg Canazei-Forcella_Pordoi- jpg
http://srv2.realcam.it/live/pub/12-6.jpg Canazei-Marmolada- jpg
http://srv2.realcam.it/live/pub/12-10.jpg Canazei-Lago_e_Passo_Fedaia- jpg
http://webcam.altabadia.org/cam/meteoeye3.jpg Colfosco-Gruppo_Sella_e_Passo_Gardena- jpg
http://www.belledolomiti.it/res/webcam/original/marmolada.jpg Marmolada-Marmolada- jpg
oppure questo:
http://www.dolomitisuperski.com/valfassa/it-IT/previsioni-meteo-val-di-fassa-905IT.html Val_di_Fassa_Meteo- html
http://www.dolomitisuperski.com/valfassa/it-IT/906IT.html Val_di_Fassa_Piste_e_Impianti- html
http://www.dolomitisuperski.com/altabadia/it-IT/previsioni-meteo-alta-badia-644IT.html Alta_Badia_Meteo- html
http://www.dolomitisuperski.com/gardena/it-IT/previsioni-meteo-val-gardena-731IT.html Val_Gardena_Meteo- html
http://www.dolomitisuperski.com/arabba/it-IT/previsioni-meteo-arabba-1080IT.html Arabba_Meteo- html
http://www.dolomitisuperski.com/marmolada/it-IT/previsioni-meteo-marmolada-1171IT.html Marmolada_Meteo- html
http://www.dolomitisuperski.com/it-IT/previsioni-meteo-1939IT.html Dolomiti_Superski_Meteo- html
http://www.dolomitisuperski.com/it-IT/104IT.html Dolomiti_Superski_Piste_e_Impianti- html
http://www.dolomitisuperski.com/it-IT/1971IT.html Dolomiti_Superski_Neve- html
Chiamiamoli "hourlist.txt" il primo e "daylist.txt" il secondo, vedremo poi perche`.

Lo script che ho creato, legge un file di input e lo passa ad una funzione che interpreta la riga ricevuta come parametri per i comandi che contiene, ho aggiunto anche una verifica che la riga letta contenga tutti e tre i parametri.
Visto che il suo utilizzo deve prestarsi al download di contenuti nel tempo, cioe`, scaricare lo stesso gruppo di file (il file elenco) anche piu` volte nell'arco della giornata, per non sovrascrivere i precedenti ho fatto in modo che aggiungesse al "nomefile" da memorizzare richiesto dal file di input, la data completa di ore e minuti.

downloadfromlist.sh:
#!/bin/bash

# Questo batch legge dallo standard input una linea alla volta,
# scaricando la url specificata come primo parametro, assegnandogli
# il nome specificato come secondo, e l'estensione come terzo.
# Aggiunge inoltre ANNO MESE GIORNO ORA MINUTI al nome file salvato.
#
# Il file di input deve quindi essere strutturato in questo
# modo:
#       URL NAME EXT
#
# Il comando dev'essere utilizzato cosi`: $0 < inputfile

# Funzione download e rinomina file
fundwload () {
    # Help
    if [[ $# -ne 3 ]]
        then
            echo "Attenzione, il file di input specificato non contiene tutti i parametri necessari"
            exit 2
    fi
    wget -U mozilla $1 --output-document=$2$(date +%Y%m%d%H%M).$3
}

# Help
if [[ $# -ne 0 || $1 = "-h" ]]
    then
    echo "uso: $0 < inputfile"
    echo "oppure"
    echo "uso: cat inputfile | $0"
    echo ""
    echo "Se non specificata redirezione accetta input manuale"
    exit 1
fi

# Lettura standard input e chiamata alla funzione
while read line
    do
        if [ "$line" != "" ]
            then
                fundwload $line
        fi
done
Io lo utilizzo, col demone "cron", scaricando giornalmente alle ore 12 circa i bollettini meteo, mentre le immagini delle webcam ogni mezz'ora dalle 8 alle 18e30 (ci si potrebbe anche fare un filmato :) ).
Rimane il problema degli scaricamenti "doppi", specialmente nel caso delle immagini webcam, potrebbero non essere state aggiornate nell'ultima mezz'ora (o anche piu`), per eliminare i files superflui a fine giornata ripulisco col programma "fdupes".
Il mio "crontab file" probabilmente chiarisce meglio:
*/30 8-18 * * * cd /home/davide/Documents/Dropbox/Snowboard-Bollettini && /home/davide/Documents/Dropbox/Snowboard-Bollettini/downloadfromlist.sh < /home/davide/Documents/Dropbox/Snowboard-Bollettini/hourlist.txt
2 12 * * * cd /home/davide/Documents/Dropbox/Snowboard-Bollettini && /home/davide/Documents/Dropbox/Snowboard-Bollettini/downloadfromlist.sh < /home/davide/Documents/Dropbox/Snowboard-Bollettini/daylist.txt
2 19 * * * fdupes -dN /home/davide/Documents/Dropbox/Snowboard-Bollettini

Direi una procedura/script decisamente piu` snella e pulita delle precedenti.

Nessun commento:

Posta un commento