Verwenden Sie cURL, um Bilder im XML-Feed herunterzuladen?

Ich habe eine XML-Datei, die Links zu verschiedenen .jpg-Dateien enthält. Ich möchte ein Applescript erstellen, das eine lokale Kopie davon herunterlädt. Die Idee ist, sie auch nacheinander mit einer Nummer zu kennzeichnen, beispielsweise 001 bis 030.

Jedes Mal, wenn ich das Skript ausführe, möchte ich, dass die Bilder mit den neuen überschrieben werden.

Hier ist die XML-Datei, die ich verwenden muss: http://tweetriver.com/hud_ro/steer_filtered.xml?include_entities=1

Kann jemand helfen?

Haben Sie eigentlich ein Drehbuch geschrieben, das wir uns ansehen können? Gibt es eine Sprache, in der Sie dieses Skript implementieren sollten?

Antworten (2)

Wenn auch eine Shell-Skript-Lösung akzeptabel ist, versuchen Sie Folgendes

#!/bin/bash
URL='http://tweetriver.com/hud_ro/steer_filtered.xml?include_entities=1'
i=0
for u in $(curl -s "$URL" |
           grep jpg | 
           sed -E 's/.*<profile_image_url>(.+)<\/profile_image_url>/\1/'); do
    curl -s "$u" -o $i.jpg
    (( i++ ))
done

Dies funktioniert natürlich nur für dieses spezifische XML-Beispiel und erfordert, dass alle Dateien im JPG-Format vorliegen.

Hier ist ein anderer Ansatz:

-- Notice last "/" on path below
set downloadFolder to "/Users/squirrel/Desktop/testFolder/"

set myImages to every paragraph of (do shell script "curl http://tweetriver.com/hud_ro/steer_filtered.xml?include_entities=1 | grep -o \\>.*jpg | sed 's/\\>//'")

repeat with i from 1 to count of myImages
    set fileName to do shell script "echo " & quoted form of (item i of myImages) & " | grep -o [^/]*$ | sed 's/\\.jpg/-" & addOs(i, 3) & ".jpg/'"
    do shell script "curl " & quoted form of (item i of myImages) & " -o " & quoted form of (downloadFolder & fileName as text)
end repeat

on addOs(myNumber, desiredDigits)
    set myNumber to myNumber as text
    set moreOs to desiredDigits - (myNumber's length)
    repeat moreOs times
        set myNumber to "0" & myNumber
    end repeat
    return myNumber
end addOs