Documentazione di QPictureDownloader

Go to the English documentation.

Sommario

Introduzione

QPictureDownloader ti permette di esplorare un insieme combinatorio di pagine web e di scaricare tutte le immagini (o qualsiasi tipo di file) linkate da esse.

L'insieme obiettivo può essere definito staticamente attraverso il compilatore di URL oppure dinamicamente, attraverso gli strumenti analisi della pagina.

Installazione

QPictureDownloader è scritto in C++ usando il toolkit Qt 4.3

Istruzioni per utenti Windows

Scarica ed esegui l'intuitivo programma di installazione in stile Windows.

Istruzioni per utenti Linux

Gli utenti Linux possono scegliere tra un comodo pacchetto RPM oppure la installazione da sorgenti.

Installazione da RPM

Se effettui la installazione da RPM, eventuali dipendenze mancanti saranno scaricate dai repository appropriati.

  1. Configurare il repository di fioreltech.net
  2. Installare il pacchetto qpicturedownloader

    $ su -c "yum install qpicturedownloader"
    Parola d'ordine: <tua password>

Installazione da sorgenti

Se effettui la installazione da sorgenti, dovrai provvedere ad installare eventuali dipendenze mancanti.

  1. Scaricare i sorgenti di QPictureDownloader
  2. Scompattare i sorgenti

    $ tar xvzf qpicturedownloader-2.0.0.tar.gz

  3. Entrare nel source tree

    $ cd qpicturedownloader-2.0.0

  4. Creare il Makefile

    $ chmod +x ./configure
    $ ./configure

    Lo script potrebbe fallire qualora non sia in grado di rilevare lo strumento qmake appartenente al toolkit Qt 4.x. In tal caso è necessario salvare nella variabile d'ambiente QMAKE il percorso all'omonimo programma e lanciare nuovamente lo script.

    $ QMAKE=<path-to-qmake> ./configure

  5. Costruire QPictureDownloader

    $ make

  6. Installare QPictureDownloader

    $ su -c "make install"
    Parola d'ordine: <tua password>

Aggiornamento

Ad ogni avvio QPictureDownloader si connette al server www.fioreltech.net per verficare la presenza di una nuova versione del programma. In tal caso, nella estremità destra della barra di stato viene mostrata una etichetta, che può essere premuta per aprire nel browser predefinito una pagina contenente le istruzioni per l'aggiornamento.

Panoramica

L'utente medio dovrebbe avere a che fare esclusivamente con la finestra principale.

Finestra principale di QPictureDownloader

La comune sequenza di eventi è:

  1. L'utente inserisce una URL nel campo di testo in alto
  2. L'utente sceglie di interpretare le URL come indici oppure come file attraverso l'apposito selettore
  3. Se le URL sono interpretate come indici, allora l'utente deve selezionare le estensioni dei file da scaricare attraverso i check box oppure una lista di estensioni separate da spazi
  4. L'utente preme il pulsante [Carica], al fine di compilare la URL in un insieme di URL: se sono interpretate come indici, allora essi vengono scaricati e filtrati per determinare l'insieme dei file da scaricare
  5. La vista in basso mostra i file da scaricare e le cartelle in cui essi saranno collocati nella macchina locale
  6. L'utente sceglie la cartella di lavoro, dove sono piazzati i file scaricati e le cartelle
  7. L'utente preme il pulsante [Download]
  8. Il programma tenta di scaricare ogni file nello stato di Default

Gestore del download

Un file può essere in tre stati differenti:

Default (mostrato in nero)
se non è stato precedentemente scaricato
Okay (mostrato in verde)
se è stato scaricato con successo
Failure (mostrato in rosso)
se si è verificato un errore durante il trasferimento del file

Durante il trasferimento dei file, viene visualizzata una finestra modale che mostra lo stato di avanzamento e permette all'utente di interrompere l'operazione premendo il pulsante [Annulla].

Se l'utente preme ancora il pulsante [Download], allora il download riprende dal punto in cui è stato interrotto.

Menu File

Sotto il menu file ci sono le seguenti voci:

Esporta la lista dei trasferimenti...
per esportare la lista dei traferimenti in un file XML
Importa la lista dei trasferimenti...
per importare la lista dei trasferimenti da un file XML

Puoi utilizzare queste funzioni per distribuire il trasferimento dei file tra differenti sessioni (ogni volta continui a scaricare i file nello stato di Default)

Menu Filtro

Sotto il menu filtro ci sono le seguenti voci:

Filtro predefinito

per usare il filtro predefinito

Filtro personalizzato...

per aprire una finestra nella quale scegliere un filtro personalizzato

Finestra per selezionare un filtro personalizzato

Nel menu a tendina sottostante puoi selezionare la codifica del file (System è un alias della codifica predefinita)

Cartelle, indici e file

QPictureDownloader lavora su questi elementi: indici, file e cartelle.

Indici

Un indice è una pagina web che viene scandita in cerca di file. Per impostazione predefinita, il programma riconosce l'attributo href dei tag <a> e filtra i file rispetto ad una data lista di estensioni: che possono essere selezionate sia da un insieme di valori predefiniti (come .jpeg, .bmp, ...) oppure immessi sottoforma di lista di valori separati da spazi (senza il punto davanti). Tuttavia, gli strumenti di analisi della pagina permettono di specificare pienamente come effettuare l'analisi sintattica degli indici.

File

Un file è semplicemente una risorsa remota che deve essere scaricata. I file sono il prodotto principale dell'analisi di una pagina, ma possono essere modificati manualmente per correggere possibili errori.

Cartelle

Quando esplora un dato insieme di indici, QPictureDownloader assicura che ogni file linkato da un certo indice è scaricato nella medesima sottocartella della cartella di lavoro.

Compilatore di URL

È capace di espandere una data URL in un insieme combinatorio di URL che possono essere interpretate come indici oppure come file.

La data URL è analizzata sintatticamente rispetto ad una certa grammatica, che identifica alcune sue porzioni come espressioni.

Dal momento che una espressione denota una sequenza di valori, la data URL è espansa in un insieme di URL considerando ogni valore per ciascuna espressione.

Il disegno sottostante descrive il processo di espansione quando la URL contiene nell'ordine le espressioni ["a","b"] and ["c","d"]
The URL expansion mechanism

Introduzione alle espressioni

Un'espressione è una porzione della data URL, delimitata da una coppia di parentesi quadre. Essa rappresenta una sequenza di valori, che sono usati per espandere la data URL in un insieme di stringhe.

Sintassi

Una semplice espressione è una lista di elementi separati da virgole. Essa rappresenta la sequenza di valori ottenuta unendo le sequenze corrispondenti a ciascun elemento.

[elemento1, elemento2, ..., elementoN]

Gli elementi possono essere:

Intervalli

Un intervallo è un elemento multi-valore che rappresenta una sequenza di interi.

Sintassi

left [ - right ][ { step [ , width [ , padding ] ] } ]

Ogni coppia di parentesi quadre rappresenta una parte opzionale della sintassi

left [obbligatorio]
L'estremo sinistro dell'intervallo
right
L'estremo destro dell'intervallo
step
La differenza tra due valori consecutivi (default: 1)
width
La larghezza minima del campo (default: 0, vale a dire che non viene applicato alcun riempimento)
padding
Il carattere di riempimento (default: "0")
Esempi

1 rappresenta 1

1{1,5} rappresenta 00001

999{1,2} rappresenta 999

1-10 rappresenta 1, 2, 3, ..., 10

1-10{2} rappresenta 1, 3, 5, ... 9

1-10{2,2} rappresenta 01, 03, 05, ... 09

1-10{2,2,"*"} rappresenta *1, *3, *5, ... *9

Stringhe

Una stringa è una stringa di zero o più caratteri circondata da una coppia di apici doppi ("). È un elemento a singolo valore, che denota la medesima sequenza di caratteri.

Sintassi

"caratteri"

Esempi

"stringa" rappresenta stringa

Riferimenti

La data URL può essere interpretata come una sequenza di espressioni alternate a testo semplice (vale a dire la sequenza di caratteri tra due espressioni consecutive).

Per esempio nella URL seguente le due espressioni sono colorate di rosso:
http://www.fioreltech.net/[1-10]/hello/[1-10]

Le espressioni sono indicizzate da sinistra verso destra a partire da zero.

Un riferimento ad una espressione è un token della forma \n, dove n è l'indice della espressione cui si riferisce.

Un riferimento non può puntatare nè direttamente nè indirettamente alla espressione che lo contiene.

Sintassi

[\n]

L'espressione assume lo stesso valore dell'n-esima espressione.

[\n : sequenza]

L'espressione assume l'i-esimo valore della sequenza quando l'n-esima espressione viene espansa alla i-esimo valore.

sequenza è una lista di elementi separati da virgole, che denota una sequenza di tanti valori quanti sono quelli rappresentati dalla n-esima espressione.

In entrambi i casi l'espansione è condizionata alla espansione della espressione cui si fa riferimento, cosicchè la prima espressione ha soltanto un valore per ogni espansione della seconda.

Esempi

http://www.fioreltech.net/[1-12{1,2}]/[\0 : "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november","december"]/index.html

si espande in

http://www.fioreltech.net/01/january/index.html
http://www.fioreltech.net/02/february/index.html
http://www.fioreltech.net/03/march/index.html
http://www.fioreltech.net/04/april/index.html
http://www.fioreltech.net/05/may/index.html
http://www.fioreltech.net/06/june/index.html
http://www.fioreltech.net/07/july/index.html
http://www.fioreltech.net/08/august/index.html
http://www.fioreltech.net/09/september/index.html
http://www.fioreltech.net/10/october/index.html
http://www.fioreltech.net/11/november/index.html
http://www.fioreltech.net/12/december/index.html

Analisi della pagina

È una collezione di strumenti che permettono di:

Filtrare la pagina

Il contenuto degli indici è filtrato da una funzione, chiamata filter, definita in un linguaggio di scripting basato su ECMAScript 3.0.

Sintassi

function filter( content, downloadManager )
{
var matches = new Array(); // lista di URLs
 
return matches;
}

Il primo parametro è il contenuto dell'indice. Il secondo parametro è collegato alla possibilità di espandere dinamicamente l'insieme degli indici.

La funzione ritorna un array contenente le URL da scaricare. Queste URL possono essere assolute oppure relative all'indice.

NB: Le URL vengono comunque filtrate rispetto alle estensioni selezionate nella finestra principale del programma.

Espandere dinamicamente l'insieme degli indici

Il secondo parametro della funzione filter può essere usato per programmare la visita di altri indici.

Sintassi

downloadManager.addRequest(url, folder);

url
URL dell'indice da scaricare
folder
nome della cartella dove scaricare i file linkati da questo indice. Se questo argomento viene omesso, allora viene usato un nome generato automaticamente.

La funzione restituisce true se e solo se la richiesta è stata aggiunta correttamente. La funzione può fallire se il nome della cartella non è corretto (es. contiene / oppure è uguale a . oppure .. ).

È responsabilità del programmatore garantire che cicli infiniti non possano occorrere.

Licenza

QPictureDownloader 2.0.0, un downloader gratuito di immagini
Copyright (C) 2007 2008 Manuel Fiorelli <manuel.fiorelli@gmail.com>

Questo programma è software libero; puoi ridistribuirlo e/o modificarlo sotto i termini della GNU General Public License (versione 2) come pubblicata dalla Free Software Foundation.

Questo programma viene distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di COMMERCIALITÀ o ADEGUATEZZA PER UN PARTICOLARE SCOPO. Vedi la GNU General Public License per maggiori dettagli.

Dovresti aver ricevuto una copia della GNU General Public License insieme a questo programma; altrimenti, scrivi alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

I contenuti pubblicati sulle pagine di Fioreltech.net non possono essere replicati su altri siti Web, mailing list, newsletter, riviste cartacee e cdrom senza la preventiva autorizzazione dei curatori di Fioreltech.net, indipendentemente dalle finalità di lucro. È altresì concessa la produzione di opere derivate, purché queste abbiano una forma originale ed estendano quanto riportato in Fioreltech.net (NON la solita parafrasi anti-copyright), che deve essere comunque visibilmente citato tra le fonti. I curatori di Fioreltech.net non si assumono alcuna responsabilità per eventuali danni causati, direttamente o indirittamente, dai gadget presenti sulle proprie pagine e/o dall'applicazione di certe procedure descritte negli articoli. Eventuali marchi registrati possono essere citati in Fioreltech.net per scopo informativo, pur non avendo su di essi alcun diritto.