¿Usar curl para descargar imágenes del sitio web usando comodines?

5

¿Hay alguna forma de utilizar curl para descargar imágenes no secuenciales con un comodín? Quiero descargar todas las panorámicas que subo a mi cuenta en 360 Panorama a una carpeta local para no tener que hacer esto manualmente cada vez.

Los archivos de imágenes siguen el patrón de: enlace con el XYZ siendo aleatorio. También parece que, desde esa URL, debo iniciar sesión o ser visto como iniciado sesión en el sitio.

    
pregunta George C 11.08.2012 - 05:33

3 respuestas

4

Puede usar este código bash para la URL real que proporcionó en tu comentario .

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

Siéntase libre de escribir este comando como una línea; Todos los saltos de línea solo se agregaron para aumentar la legibilidad. Puedes copiarlos o eliminarlos, lo que quieras.

Lo que hace este código:

  1. Iterar en las 8 páginas de la galería de su cuenta
  2. Extraiga los nombres de las imágenes de las imágenes de vista previa
  3. Obtenga todas las imágenes de tamaño completo con esta lista de nombres

Si solo desea descargar archivos que no existen y no conoce la cantidad de páginas de la galería al principio, puede ajustar el código a esto:

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

El primer código ahora incrementa el número de página hasta que se produce una redirección o un error. El servidor lo redirigirá a la última página existente si intenta visitar una página después de las existentes. La parte [[ -f … ]] || ejecutará curl solo si el archivo correspondiente aún no existe.

    
respondido por el MvG 02.10.2012 - 18:47
3

¿Entonces quieres descargar imágenes desde enlace * _flat.jpg?

Esto no es posible. No puede tratar a viewer como una carpeta. La web es un servicio que le proporciona cosas cuando la solicita. No tiene una lista de todos los archivos. A menos que intentes todos los archivos de AAA a ZZZ, esto no es posible sin una lista.

    
respondido por el Jack Humphries 11.08.2012 - 06:01
2

Si bien no puede usar un verdadero comodín, puede especificar partes dentro de llaves, es decir. rizo mysite. {alpha, beta, gamma} .com o rangos de números mysite.com/files[0001-0100◆.txt

Consulte la página de manual de curl para obtener más información

enlace

Entonces, para tus archivos que son aleatorios, podrías hacer mages / viewer / [000-999] _flat.jpg Terminarías con un montón de archivos no encontrados pero debería obtener todos los archivos que están allí.

    
respondido por el ClarkGoble 03.09.2012 - 23:16

Lea otras preguntas en las etiquetas