¿Cómo descargar imágenes de una fuente xml usando terminal?

0

¿Cómo puedo descargar imágenes png de un feed xml que se ve de la siguiente manera?

<ListBucketResult xmlns="http://url1.com">
  <Name>imagesToUse</Name>
<Prefix/>
<Marker/>
<IsTruncated>false</IsTruncated>
<Contents>
  <ImageStuff>imagetodownload.png</ImageStuff>
  <Size>17293</Size>
</Contents>

Estaba mirando esta pregunta aquí sobre el mismo tema, excepto que no necesito cambiarles el nombre, simplemente descárguelos.

Como soy nuevo en los scripts de shell, no estoy muy seguro de cómo hacerlo (aunque definitivamente puedo hacerlo en 2 minutos en el objetivo-c).

He intentado crear el siguiente script y ejecutar bash myscript.sh

#!/bin/bash
URL='https://theurlwiththexml.com'
i=0
for u in $(curl -s "$URL" |
           grep png | 
           sed -E 's/.*<ImageStuff>(.+)<\/ImageStuff>//'); do
    curl -s "$u" -o $i.png
    (( i++ ))
done

Pero no pasa nada. Simplemente imprime otra línea sin errores.

    
pregunta user85704 23.07.2014 - 10:48

1 respuesta

1

Después de curl http://theurlwiththexml.com :

sed -n 's,.*<ImageStuff>\(.*\.png\)<.*,,p'|xargs -I, curl http://url1.com/, -o ,

sed -n desactiva la impresión, \( y \) son una forma portátil de especificar grupos, y p imprime el espacio del patrón. xargs -I especifica una cadena de reemplazo y curl -o especifica un archivo de salida.

O usando xmlstarlet , parallel y wget :

xml sel -t -v //ImageStuff|parallel wget http://url1.com/{}

sel es una abreviatura de select , -t -v usa la plantilla de valores y //ImageStuff es una expresión XPath que coincide con todos los nodos ImageStuff .

    
respondido por el user495470 23.07.2014 - 15:12

Lea otras preguntas en las etiquetas