1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Applescript: Status von Shell Script

Dieses Thema im Forum "AppleScript" wurde erstellt von jack.jack, 01.09.09.

  1. jack.jack

    jack.jack Klarapfel

    Dabei seit:
    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?
     
  2. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    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.
     
  3. jack.jack

    jack.jack Klarapfel

    Dabei seit:
    20.03.09
    Beiträge:
    280
    Warum? Sollte es dann gehen? Wenn ja, wie kann ich sie herausfinden?
     
  4. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    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
     
  5. jack.jack

    jack.jack Klarapfel

    Dabei seit:
    20.03.09
    Beiträge:
    280
    Wie finde ich dann den Content-Lenght heraus?
     
  6. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    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
     
  7. jack.jack

    jack.jack Klarapfel

    Dabei seit:
    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.
     
  8. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    09.07.08
    Beiträge:
    641
    Siehe Anhang.

    Viele Grüße
     

    Anhänge:

  9. jack.jack

    jack.jack Klarapfel

    Dabei seit:
    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)
     
  10. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    09.07.08
    Beiträge:
    641
    Stimmt auch.

    Viele Grüße
     
  11. jack.jack

    jack.jack Klarapfel

    Dabei seit:
    20.03.09
    Beiträge:
    280
    Was muss ich jetzt machen? So funktioniert das Programm nicht.
     
  12. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    09.07.08
    Beiträge:
    641
    Soll ich Dir meine Kontonummer geben? ;)
     

Diese Seite empfehlen