Wie kann ich einen Automator-Dienst dazu bringen, ein Shell-Skript auszuführen und die Ausgabe anzuzeigen?

Ich verwende Automator, um ein Shell-Skript (ffmpeg-Transcodierung in h264) als „Dienst“ auszuführen, sodass ich einfach mit der rechten Maustaste auf die hochauflösende .mov-Datei klicken und den Dienst auswählen kann. Es funktioniert gut, aber da es ffmpeg ist, wäre es gut, die Ausgabe in einem Terminalfenster zu sehen. Gibt es eine Möglichkeit, die Ausgabe in Echtzeit zu sehen?

Sollte keinen Unterschied machen, aber hier ist das Skript für alle Fälle:

for f in "$@"
do
/usr/local/bin/ffmpeg -i "$f" -c:v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset slow -movflags faststart -c:a copy ${f%.*}_h264_yadif.mov
done

Antworten (3)

Dieses AppleScript startet ein Terminalfenster mit dem von Ihnen angegebenen Befehl:

on run {Eingabe, Parameter}
    Sagen Sie der Anwendung "Terminal"
        aktivieren Sie
        setze filesString auf ""
        Wiederholen Sie dies mit file_ in der Eingabe
            setze filesString auf filesString & " " & Anführungszeichen von (POSIX-Pfad von file_)
        Ende wiederholen
        do script "for f in" & filesString & "; tun
/usr/local/bin/ffmpeg -i \"$f\" -c:v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset slow -movflags faststart -c:a copy ${f%.*}_h264_yadif. bewegen
Erledigt"
    Ende erzählen
    Eingang zurückgeben
Endlauf

Erstellen Sie in Automator eine Aktion „AppleScript ausführen“ und fügen Sie sie dort ein.

Funktioniert wie ein Zauber - vielen Dank. Ich wusste, dass es wahrscheinlich ein AppleScript beinhalten würde, war mir aber nicht sicher, ob der Voodoo den Dateipfad an das Shell-Skript übergeben würde.

Eine schöne und saubere Lösung besteht darin , Nachrichten über das Benachrichtigungszentrum anzuzeigen. Führen Sie einfach den folgenden Terminalbefehl in Ihrem Skript aus.

osascript -e 'display notification "All files converted" with title "ffmpeg converter"'

Der Befehl 'osascript' führt ein beliebiges AppleScript vom Terminal aus, 'Benachrichtigung anzeigen' zeigt eine nette Benachrichtigung an.

Geben Sie hier die Bildbeschreibung ein


Sie können auch „Alarm anzeigen“ verwenden. Es gibt keine Begrenzung der Nachrichtenlänge und es ist einfach, eine OKSchaltfläche hinzuzufügen.

osascript -e 'set alertResult to display alert "Bad news :( Error converting your video file." buttons {"OK"} as warning'

Geben Sie hier die Bildbeschreibung ein

Hier ist eine Apple Script-Befehlsreferenz. Suchen Sie nach „Benachrichtigung anzeigen“ und „Benachrichtigung anzeigen“, um weitere Informationen zu erhalten.

Danke - das ist hilfreich für allgemeine Dinge, aber ich würde wirklich gerne die gesamte Ausgabe von ffmpeg sehen. Ich habe auch einen ähnlichen Dienst, der ein Verzeichnis über s3cmd mit meinem S3-Backup synchronisiert. In beiden Fällen ist die vollständige Ausgabe für den richtigen Umgang mit Fehlern unerlässlich ...

Hier ist eine einfache Lösung, die ich zum Laufen gebracht habe und die die Befehlsausgabe zeigt, sobald sie fertig ist:

  1. Übergeben Sie die Ausgabe einer Aktion Shell-Skript ausführen an Set Value of Variable
  2. Verwenden Sie diese Variable beispielsweise, um eine Benachrichtigung anzuzeigen.

Beim test.pyPython-Skript drucke ich zum Beispiel nur die übergebenen Argumente („Running a script with …“). Wenn ich es also ausführe, wird nach Abschluss Folgendes angezeigt: