• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Applescript: Status von Shell Script

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Hallo

Ich habe ein Programm in Xcode in AppleScript gemacht. Das Programm lädt ein YouTube Video herunter. Dort habe ich einen "Progress Indicator". Das Video wird mit dem Shell Befehl "curl -O" heruntergeladen. Kann ich den Progress Indicator so programmieren, dass er mir den Status des Downloads anzeigt, wie das im Terminal der Fall ist?
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
hehe...

Genau das hatte ich damals auch mit ASS vor.
Die Antwort ist einfach gesagt: nein.

Viele Grüße

PS: Dir ist auch nicht Zielgröße der Datei bekannt.
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Warum? Sollte es dann gehen? Wenn ja, wie kann ich sie herausfinden?
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

es ist nicht gerade schön, aber so kannst Du es kompliziert umsetzen:

• ZielURL > Header > Content-Length auslesen > ist die Gesamtgröße der Download-Datei
• Gesamtgröße als ProgressIndicator Maximum setzen
• cURL starten > aber als Hintergrundprozess > z.B. mit "-m 9000" > nachschauen
• in Deiner Applikation eine Endlosschleife mit delay 1 einsetzen
• bei jedem Durchgang die Dateigröße auslesen, z.B. mit ls
• momentane Dateigröße > aktuelle Position Deines ProgressIndicators
• Zielgröße erreicht? > Schleife abbrechen

Eigentlich ganz "einfach", aber ich würde das an Deiner Stelle nicht machen.
Gibt zu oft Probleme.

Viele Grüße
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
In dem Du Informationen zum Header nachschlägst?

Code:
set targetURL to "http://www.tune-instructor.de/0001_Data/TuneInstructor.dmg"
set header to do shell script "curl " & quoted form of targetURL & " -I"
set AppleScript's text item delimiters to "Content-Length: "
set header to last text item of header
set AppleScript's text item delimiters to "\r"
set header to first text item of header

/*

"2002504"

header > enthält nur noch den Wert von "Content-Lenght"

*/

Jetzt bist Du mir schon eine Tafel Schoki schuldig ;)
Weiße bitte...

Viele Grüße
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Ich habe es jetzt so gemacht:

property theheader : missing value

set targetURL to "http://www.tune-instructor.de/0001_Data/TuneInstructor.dmg"
set header to do shell script "curl " & quoted form of targetURL & " -I"
set AppleScript's text item delimiters to "Content-Length: "
set header to last text item of header
set AppleScript's text item delimiters to ""
set header to first text item of header
display dialog header
tell progress indicator "progress" of window "main" to set maximum value to header
set outputFile to (choose file name with prompt "Hallo")
repeat until theheader is equal to header

do shell script "curl -L http://www.tune-instructor.de/0001_Data/TuneInstructor.dmg -m 9000"
set theheader to first text item of (do shell script "ls -s " & outputFile)
tell progress indicator "progress" of window "main" to set content to theheader
end repeat

Leider ist der Progress Indicator sofort am Ende, obwohl der Download noch nicht abgeschlossen ist.
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641

Anhänge

  • ASS Download With Progress Indicator.zip
    20,8 KB · Aufrufe: 117

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
In deinem Skript funktiontiert es wunderbar, jedoch in meinem kommt immer ein Error:
Can’t make "HTTP/1.1 303 See Other" into type number. (-1700)
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Was muss ich jetzt machen? So funktioniert das Programm nicht.