Pregunta:
¿Usar curl para descargar imágenes del sitio web usando comodines?
George C
2012-08-11 08:33:27 UTC
view on stackexchange narkive permalink

¿Existe alguna forma de utilizar curl para descargar imágenes no secuenciales con comodines? Quiero descargar todos los panoramas 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: http://occipital.com/images/viewer/XYZ_flat.jpg con XYZ aleatorio. También parece desde esa URL que necesito iniciar sesión o ver que inicié sesión en el sitio.

No estoy muy familiarizado con curl, ya que recién lo descubrí cuando buscaba una manera de realizar esta tarea y curl (o wget) parecía la solución.
Consulte [CURL para descargar un directorio] (http://superuser.com/questions/200426/curl-to-download-a-directory) en Super User.
¿Puede agregar algunas URL específicas (reales) a su pregunta? Tal vez podamos encontrar un patrón allí que sería posible adivinar al usar `curl`.
@patrix aquí hay una URL real: http://occipital.com/images/viewer/qSJGuD_flat.jpg - parece que no ofrecen una ruta directa que esté vinculada al nombre de usuario. Aquí está el enlace a la página de mi cuenta de usuario cuando no estoy conectado: http://occipital.com/user/01ca-255/george-coghill
@Arjan Estoy intentando descargar las imágenes más nuevas a medida que se publican, no el directorio completo, y no solo una vez. Intento evitar tener que ir a mi cuenta y descargar manualmente cada imagen cada vez que subo nuevas panorámicas.
Pase lo que pase, diría que tiene poco que ver con Apple y hay muchas publicaciones relacionadas en Super User. (Y la respuesta de Jack es correcta).
@Arjan Como dije, no estoy muy familiarizado con todo esto, pero no pude encontrar nada de ninguna manera en Stack Exchange sobre el aspecto del comodín. Pensé que curl era una variante wget exclusiva de Apple. Todo es muy confuso.
No es realmente una cuestión de Mac OS X.
Tres respuestas:
MvG
2012-10-02 21:47:24 UTC
view on stackexchange narkive permalink

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

  para i en $ (para j en {1..8}; haz curl http://occipital.com/user/01ca-255/george-coghill/$j/; hecho \ | sed -n 's,. * / viewer / \ (.. ...._ plano \) _pequeño \ .jpg. *, http: //occipital.com/images/viewer/ \ 1.jpg, p '); do curl -L -o "$ {i ## * /}" "$ i"; listo  

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

Qué hace este código:

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

Si solo desea descargar archivos que no existen, y no sabe el número de páginas de la galería por adelantado, 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++))/; hacer:; hecho \ | sed -n 's,. * / viewer / \ (... ..._ plano \) _pequeño \ .jpg. *, http: //occipital.com/images/viewer/ \ 1.jpg, p '); hacer [[-f "$ {i ## * /}"]] || curl -L -o "$ {i ## * /}" "$ i"; hecho  

El primer código ahora incrementa el número de página hasta que ocurre una redirección o un error. El servidor le 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.

Esto funcionó, tengo que decir que está muy por encima de mi cabeza, ¡pero realmente agradezco la ayuda! ¿Cómo modificaría el código para especificar el directorio de descarga?
@GeorgeC: `" $ {i ## * /} "` es el nombre del archivo en su máquina local; puede anteponer un nombre de directorio a eso, por ejemplo `" algunos / dir / $ {i ## * /} "`. O simplemente "cd" en el directorio deseado primero.
sunset.8
2012-08-11 09:01:59 UTC
view on stackexchange narkive permalink

¿Entonces quieres descargar imágenes de http://occipital.com/images/viewer/ * _flat.jpg?

Esto no es posible. No puede tratar a visor como una carpeta. La web es un servicio que te proporciona cosas cuando las solicitas. No tiene una lista de todos los archivos. A menos que pruebe todos los archivos de AAA a ZZZ, esto no es posible sin una lista.

Eso es lo que pensaba que iba a ser el problema. Pero digamos que hay una URL en la que esto podría funcionar. ¿Cómo se usaría curl con URL no secuenciales para verificar y descargar archivos nuevos automáticamente? ¿O simplemente no es posible sin un patrón de URL secuencial?
ClarkGoble
2012-09-04 02:16:01 UTC
view on stackexchange narkive permalink

Si bien no puede usar un comodín verdadero, puede especificar partes entre llaves, es decir. curl 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

http://curl.haxx.se/docs/manpage.html

Entonces, para sus archivos que son aleatorios, puede hacer mages / viewer / [000-999] _flat.jpg Terminaría con muchos archivos no encontrados, pero debería obtener todos los archivos que están allí.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...