lunedì 21 marzo 2011

Script per download e storicizzazione contenuti web (Upgrade)

Ho aggiornato lo script che utilizzo per il download dei bollettini nivometeo e delle pagine web di cui desidero una storicizzazione.

Nuovo script:
#!/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 al nome file salvato.
# Se il file scaricato e` uguale al primo precedente lo scarta.
#
# Il file di input deve quindi essere strutturato in questo
# modo:
#       URL NAME EXT
#
# Il comando dev'essere utilizzato cosi`: $0 < inputfile
#
# NOTE:
# Al primo utilizzo viene generato un file di confronto, e` un file
# vuoto che puo`/deve essere eliminato quando almeno un'altro e`
# stato scaricato e salvato.


# Funzione Contolla Scarica E Salva
funcses () {
    ls $2*
    if [ $? != 0 ]
        then
            touch $2$(date +%Y%m%d -d "-1 day").$3
    fi
    wget -U mozilla $1 --output-document=$2$(date +%Y%m%d)-new.$3
    i=0
    while [ -e $2$(date +%Y%m%d)-new.$3 ]
        do
            if [ -e $2$(date +%Y%m%d -d "-$i day").$3 ]
                then
                    diff $2$(date +%Y%m%d -d "-$i day").$3 $2$(date +%Y%m%d)-new.$3 > /dev/null
                    if [ $? != 0 ]
                        then
                            mv $2$(date +%Y%m%d)-new.$3 $2$(date +%Y%m%d).$3
                        else
                            rm $2$(date +%Y%m%d)-new.$3
                    fi
                else
                    $(( i++ )) 2> /dev/null
            fi
    done
    }

# 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
                funcses $line
        fi
done 
Un paio di note:
  • L'aggiornamento/download e` giornaliero
  • Il download viene confontato col precedente e memorizzato solo se diverso
  • E` consigliabile farlo "girare" col demone "cron"

Nessun commento:

Posta un commento