0 votes

Comment télécharger des images à partir d'un flux xml en utilisant un terminal ?

Comment puis-je télécharger des images en png à partir d'un flux xml qui se présente de la manière suivante ?

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

Je jetais un coup d'oeil à cette question ici à propos du même sujet, sauf que je n'ai pas besoin de les renommer, il suffit de les télécharger.

Étant novice en matière de scripts, je ne suis pas tout à fait sûr de savoir comment faire (bien que je puisse certainement faire cela en 2 minutes en objective-c).

J'ai essayé de créer le script suivant et de l'exécuter bash myscript.sh

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

Mais rien ne se passe. Il imprime simplement une autre ligne sans erreur.

1voto

Après curl http://theurlwiththexml.com :

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

sed -n désactive l'impression, \( y \) sont un moyen portable de spécifier les groupes, et p imprime l'espace du motif. xargs -I spécifie une chaîne de remplacement et curl -o spécifie un fichier de sortie.

Ou en utilisant xmlstarlet , parallel et wget :

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

sel est l'abréviation de select , -t -v utilise le modèle de valeur, et //ImageStuff est une expression XPath qui correspond à tous les ImageStuff des nœuds.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X