Usa arricciatura per scaricare immagini dal sito web usando il carattere jolly?

5

C'è un modo per usare curl per scaricare immagini non sequenziali con un carattere jolly? Voglio scaricare tutte le panoramiche che ho caricato nel mio account su 360 Panorama in una cartella locale, quindi non devo farlo manualmente ogni volta.

I file di immagini seguono lo schema di: collegamento con XYZ in ordine casuale. Sembra anche da quell'URL che ho bisogno di essere loggato o visto come connesso al sito.

    
posta George C 11.08.2012 - 05:33
fonte

3 risposte

4

Puoi utilizzare questo codice bash per l'URL effettivo che hai fornito in il tuo commento .

for i in $(for j in {1..8}; do
    curl http://occipital.com/user/01ca-255/george-coghill/$j/;
  done \
  | sed -n 's,.*/viewer/\(......_flat\)_small\.jpg.*,http://occipital.com/images/viewer/.jpg,p'
); do
  curl -L -o "${i##*/}" "$i";
done

Sentiti libero di scrivere questo comando come una linea; tutte le interruzioni di riga sono state aggiunte solo per aumentare la leggibilità. Puoi copiarli o rimuoverli, qualunque cosa tu voglia.

Cosa fa questo codice:

  1. Fai scorrere le 8 pagine della galleria del tuo account
  2. Estrai i nomi delle immagini dalle immagini di anteprima
  3. Recupera tutte le immagini a grandezza naturale usando questo elenco di nomi

Se vuoi scaricare solo file che non esistono e non conosci il numero di pagine della galleria in primo piano, puoi adattare il codice a questo:

for i in $(
  j=1;
  while curl --max-redirs 0 -L -f \
      http://occipital.com/user/01ca-255/george-coghill/$((j++))/; do
    :;
  done \
  | sed -n 's,.*/viewer/\(......_flat\)_small\.jpg.*,http://occipital.com/images/viewer/.jpg,p'
); do
  [[ -f "${i##*/}" ]] || curl -L -o "${i##*/}" "$i";
done

Il primo codice ora incrementa il numero di pagina finché non si verifica un reindirizzamento o un errore. Il server ti reindirizzerà all'ultima pagina esistente se tenti di visitare una pagina dopo quelle esistenti. La parte [[ -f … ]] || eseguirà curl solo se il file corrispondente non esiste ancora.

    
risposta data 02.10.2012 - 18:47
fonte
3

Quindi vuoi scaricare le immagini dal link * _flat.jpg?

Questo non è possibile. Non puoi trattare viewer come una cartella. Il web è un servizio che ti fornisce le cose quando lo chiedi. Non ha un elenco di tutti i file. A meno che non provi tutti i file da AAA a ZZZ, questo non è possibile senza un elenco.

    
risposta data 11.08.2012 - 06:01
fonte
2

Sebbene non sia possibile utilizzare un vero carattere jolly, è possibile specificare parti all'interno di parentesi, ad es. curl mysite. {alpha, beta, gamma} .com o numero ranges mysite.com/files [0001-0100] .txt

Vedi la pagina man di curl per maggiori informazioni

link

Quindi per i tuoi file che sono casuali potresti fare maghi / spettatori / [000-999] _flat.jpg Avresti finito con un sacco di file non trovato, ma dovrebbe ottenere tutti i file che ci sono.

    
risposta data 03.09.2012 - 23:16
fonte

Leggi altre domande sui tag