Dienste-Eintrag in Safari per Automator erstellen

uhlhorn

uhlhorn

Aktives Mitglied
Thread Starter
Dabei seit
24.05.2005
Beiträge
2.474
Reaktionspunkte
129
Moin,

bei früheren Systemversionen konnte man einfach per Automator einen „Dienst“ erstellen und er erschien in den jeweiligen Dienst-Menüs der Programme. In El Capitan scheint es nun nicht mehr zu gehen.

Ich will nichts weiter als eine URL in Safari, welche auf einer Website ist, Automator übergeben und von dort in einem Programm meiner Wahl verarbeiten lassen.

Weiß jemand wie das geht? Eine Websuche hat leider nichts ergeben.
 
Geht unter El Capitan immer noch. Automator starten, Optionen (neben Neues Dokument), Typ: Dienst auswählen.
 
Ja, genau, das dachte ich auch. Leider funktioniert genau das nicht. Es erscheint nicht im Dienste-Menü.
Man kann es auch nur in die iCloud speichern.

Nachtrag:
Ich sehe gerade, dass es nach einem Neustart des Rechners erscheint. Das ist aber suboptimal! :-(
 
Nun habe ich den Ablauf geändert und erneut gesichert, doch ist der Dienste Eintrag wieder verschwunden. :-(

Vielleicht mache ich ja grundsätzlich etwas falsch.

Ich möchte auf einen Link zu einer MP4-Datei klicken können (mit Rechtsklick) und im Popupmenü dann „Video in QuickTime öffnen“ aufrufen. Quicktime soll dann den Video-Link als URL öffnen. Ich möchte den Ablauf „Link kopieren“ und in QuickTime als URL öffnen abkürzen.

Ich erstelle in Automator also einen Dienst. Der empfängt URLs in Safari und unter „Eingabe 1“ ist „nur URLs“ ausgewählt.
Das übergebe ich dann einem Applescript:

on run {input, parameters}

tell application "QuickTime Player"
open URL input as text
end tell

end run

Nun speichere ich den Ablauf und exportiere ihn zusätzlich in den Ordner ~/Library/Services/Video in Quicktime öffnen.

Leider erscheint es nicht mehr im Dienste-Menü des Popupmenüs.
 
Ich habe es genau nach Deinem Rezept unter 10.9.5 gemacht. Sogar mit Deinem Titel: "Video in Quicktime öffnen." Bei mir funktioniert's. Exportieren war nicht nötig. Einfach speichern und es wird automatisch in Services abgelegt.
Ich sag es ja schon lange. In El Capitan sitzt Schettino am Ruder.
 
Ja, Apples Software wird schlechter und schlechter! :-( Man kann schon kaum noch damit arbeiten. Ich habe ja auch schon überlegt zu Windows zu wechseln, und überlege es noch immer. Aber Windows kann ja nun noch viel weniger! Wenn ich nur alleine an die nichtvorhandene native PDF-Unterstützung denke … da bekomme ich die Krise!
 
Hallo nochmal,

hatte gerade ein ähnliches Problem und herausgefunden:

Wenn "empfängt URLs" ausgewählt ist, dann wird der Dienst nur angezeigt, wenn ein Text markiert wird, der eine Url enthält, nicht aber, wenn auf einen Link geklickt wird.

Ich habe das umgangen, indem ich einen Dienst erstellt habe, der ausgewählten Text empfängt und an folgendes AppleScript übergibt:

Code:
on run {input, parameters}
    tell application "Safari"
        set theURL to item 1 of (do JavaScript "window.getSelection().anchorNode.parentElement.href" in front window's tabs whose visible is true)
       
    end tell
    if isUrl(theURL) then
        tell application "QuickTime Player"
            open URL theURL as text
        end tell
    end if
end run

on isUrl(u)
    try
        do shell script "[[ " & u & " =~ ^(https?|ftp)://[^\\s/$.?#].[^\\s]*$iS ]]"
        return true
    on error
        return false
    end try
end isUrl
 
@Pill Das Script funktioniert mit angegebenen Text (also URL) wunderbar, jedoch der Dienst erscheint trotzdem nicht im Dienste-Menü.
 
Hast du den Dienst mal gelöscht und neu erstellt?
 
Man muss die LaunchServices DB glaub ich neu erstellen.
Code:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

Als root, also sudo oder shell
 
So, folgendes habe ich dank Eurer Tipps ermittelt. Zuerst: keine Eurer Vorschläge hat funktioniert. Aber: sie waren trotzdem sehr wertvoll!

Lösung:
  1. Neuen Dienst erstellen und neuen(!) Dienste-Namen verwenden. Der neue Name ist der Knackpunkt!
  2. Dienst speichern, schließen und erneut öffnen.
Im Detail:
Wenn ich einen neuen Dienst anlege und ihm einen Namen gebe, gibt er als einzigen Speicherort iCloud an. Einen anderen Ort kann man nicht wählen.
Wenn ich ihn jedoch schließe und wieder öffne. dann werde ich gefragt, ob ich ihn installieren möchte. Und das funktioniert (allerdings mit einem Haken!).

Der Haken an der Sache:
Da ich den Dienst erst als Safari-Dienst angelegt hatte, war es dem Betriebsystem auch egal, dass ich nun einen anderen Dienst angelegt habe. Es blieb so lange ein Safari-Dienst, bis ich auf die Idee kam einen anderen Namen zu verwenden. Das ist ein altbekanntes Problem unter Mac OS X, was immer mal wieder auftaucht.
Die Art des Dienstes kann man übrigens in den Systemeinstellungen/Tatstatur/Kurzbefehle/Dienste prüfen.

Erst als ich einen neuen Dienst mit einem neuen(!) Namen erstellt habe, hat es endlich funktioniert. Wenn man bei einem neuen Dienst den alten Namen verwendet, bekommt der neue Dienst die alten Eigenschaften. Und hier ist ein Bug im OS X.

Fazit:
Wenn es Probleme gibt, für jeden Versuch einen neuen Namen verwenden. ;-)

Ich danke Euch für Eure Ideen. :)
 
Hallo,

wenn du einen Workflow in der iCloud speicherst, so kann er natürlich nicht installiert werden.
Das ist zugegeben etwas verwirrend und eventuell auch nicht ganz clever ausgedacht von Apple:
Ist iCloud Drive aktiviert und der Automator hinzugefügt, so erscheint -sofern beim letzten Schliessen nicht noch Dokumente geöffnet waren - standardmäßig beim Öffnen des Programms ein Pop-Up, aus dem man iCloud Dokumente öffnen oder in diese kopieren kann ... aber auch neue erstellen kann.
Und das ist dem User nicht unbedingt klar: drückt man dort den Button "Neues Dokument", so wird ein iCloud Dokument erstellt!
Erst, wenn stattdessen "Fertig" gedrückt wird, kommt man zur Möglichkeit, ein neues Dokument auf dem Mac zu erstellen....
Vom Automator (auf dem Mac) installierte Dienste werden dann übrigens sofort aktiviert.

Du kannst natürlich Automator von iCloud Drive ausnehmen, falls du das eh nicht benötigst.... (in den Optionen von iCloud Drive)

Als zweiten Punkt möchte ich noch anmerken, dass Links markiert werden müssen um den Dienst auftauchen zu lassen. Auf den meisten Webseiten werden sie durch einen Rechtsklick markiert, aber nicht unbedingt. Webseiten verhalten sich je nach Programmierung ganz unterschiedlich, bzw. haben sogar eigene Kontext-Menüs (siehe z.B. Dropbox.com) ... URL-Dienste funktionieren dementsprechend nicht auf allen Seiten wie gewünscht.

Gruß
 
Zuletzt bearbeitet:
wenn du einen Workflow in der iCloud speicherst, so kann er natürlich nicht installiert werden.
OS X lässt mir ja keine Wahl. Ich kann es nur in die Cloud speichern. Alle anderen Möglichkeiten sind ausgegraut. Vielleicht ist das ein Bug.

Wenn ich ein neues Dokument erstelle (cmd-N), kann ich oben im Fenster den Namen setzen. Der Speicherort ist vorgegeben und grau. jetzt eben habe ich es noch mal probiert: jetzt ist der Speicherort der Schreibtisch – ebenfalls grau. Ich kann den Speicherort nicht verändern.

Ich habe übrigens dem obigen Applescript-Code (danke dafür!) noch folgende Zeile hinter dem Befehl zum Öffnen der URL eingefügt:

set the bounds of window 1 to {0, 0, 2565, 1440}

Das bringt das Fenster auf volle Größe des 27" Bildschirms. (Vollbild will ich nicht, denn ich habe mehrere Monitore, und die sollen nicht schwarz werden.)
 
Hmm...sitze gerade nicht am Mac, aber:
Dienste werden installiert. Da gibt es keinen auszuwählenden Speicherort. Ansonsten mal einen Arbeitsablauf oder ein Programm erstellen und auf "Sichern" gehen (bzw. cmd-s)

Gruß
 
Hier ein Video von dem Problem: AutomatorDiensteBug.mp4
 
Ok,
jetzt habe ich es kapiert :)

Der ausgegraute Speicherort ist soweit normal... nur dass da natürlich normalerweise "Services" steht.
Der Automator hat keinen Zugriff auf den Ordner "Services".
Ein Beispiel: Entferne ich meinen Ordner "Services" aus der User Library, so steht dann bei mir ausgegraut "Dokumente". Da der Ordner bei dir an sich vorhanden ist, könnte es mit falschen Zugriffsrechten zusammenhängen. Diese solltest du überprüfen und ggfs. korrigieren.
Falls dann noch nötig, probiere folgende Dinge:
Entferne den Ordner "Services" , starte den Automator und führe deine Prozedur wie im Video durch. Schließe den Automator, erstelle einen neuen Ordner "Services" und wiederhole die Prozedur. Und schiebe auch mal den zuvor entfernten Ordner zurück...
Automator Cache entfernen (~/Library/Caches/com.apple.Automator)
Automator-Einstellungsdatei entfernen (~/Library/Preferences/com.apple.automator.plist) Danach aus- und einloggen! Erst dann Automator öffnen.
 
Hmm, ja, daran könnte es liegen. Ich prüfe das mal …
 
Ich habe das Script noch verbessert. Es öffnet jetzt das Video und springt vor zu 29. Sekunde um den Vorspann zu überspringen. Das ist nützlich für Serien. Außerdem überprüft es alle Schritte auf Ausführung. Hier das verbesserte Script:
Code:
on run {input, parameters}
    tell application "Safari"
        set theURL to item 1 of (do JavaScript "window.getSelection().anchorNode.parentElement.href" in front window's tabs whose visible is true)
      
    end tell
    if isUrl(theURL) then
        tell application "QuickTime Player"
            open URL theURL as text
            try
                set Filmname to name of the front document
            end try
          
            -- Film stoppen
            stop the front document
            set Spielt to the playing of document frontmost -- Prüfen, ob Film gestoppt ist
            repeat until Spielt is false
                stop the front document
                delay 1
                set Spielt to the playing of document frontmost
            end repeat
          
            -- Film auf Größe einstellen
            set Bild to the bounds of window 1
            repeat until Bild is {25, 23, 2535, 1436} -- Prüfen, ob Dokument die angeforderte Größe hat
                set the bounds of window 1 to {25, 23, 2535, 1436}
                delay 1
                set Bild to the bounds of window 1
            end repeat
          
            -- Film stoppen
            stop the front document
            set Spielt to the playing of document frontmost -- Prüfen, ob Film gestoppt ist
            repeat until Spielt is false
                stop the front document
                delay 1
                set Spielt to the playing of document frontmost
            end repeat
          
            -- Filmposition aus 29 Sekunden setzen
            set Zeit to the current time of the front document
            repeat until Zeit is 29 -- Prüfen, ob Film die Position eingenommen hat
                set the current time of the front document to 29
                delay 1
                set Zeit to the current time of the front document
            end repeat
          
            -- Film stoppen
            stop the front document
            set Spielt to the playing of document frontmost -- Prüfen, ob Film gestoppt ist
            repeat until Spielt is false
                stop the front document
                delay 1
                set Spielt to the playing of document frontmost
            end repeat
          
        end tell
    end if
end run

on isUrl(u)
    try
        do shell script "[[ " & u & " =~ ^(https?|ftp)://[^\\s/$.?#].[^\\s]*$iS ]]"
        return true
    on error
        return false
    end try
end isUrl
 
Zurück
Oben Unten