Schlagwort-Archiv für: AppleScript

Erweiterte Suche im iTunes-Store

18 Mai 2014
18. Mai 2014

Die Suche im iTunes-Store auf dem Mac ist  - sagen wir es mal vorsichtig – verbesserungswürdig. Obwohl man in der Regel weiß, ob gerade ein Musiktitel, ein Film, eine Serie, ein Podcast, ein Buch oder eine App benötigt wird, werden Suchergebnisse aus allen diesen Bereichen präsentiert, was die Trefferliste in vielen Fällen unnötig aufbläht. Dabei boten frühere iTunes-Versionen durchaus ausgefeiltere Suchmöglichkeiten.

Die gute Nachricht ist: „Boten“ ist nicht ganz richtig, eine erweiterte Suche gibt es immer noch, sie ist nur im Programm vergraben, kann aber mit ein wenig AppleScript wieder ans Tageslicht gebracht werden, auf geht’s!

Wir öffnen also den AppleScript-Editor, ein mitgeliefertes Dienstprogramm, und erzeugen ein neues Dokument. Unser Skript besteht nur aus drei Zeilen:

tell application "Finder"
   open location "itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearch"
end tell

AppleScript

Mit der Schaltfläche „Übersetzen“ können wir prüfen, ob die Syntax korrekt ist. Zeigt der Editor ein Syntax-Highlighting an wie im Screenshot oben ist alles OK. Nun speichern wir unser Skript im Verzeichnis

Library/iTunes/Scripts

unseres Heimatverzeichnisses ab. Wie man den Library-Ordner unter Mavericks sichtbar machen kann (falls noch nicht geschehen), habe ich in einem früheren Blog-Artikel beschrieben. Als Name bietet sich „Erweiterte Suche“ an. Das war’s dann im Prinzip auch schon, die erweiterte Suche taucht als neuer Menüpunkt im Skript-Menü von iTunes auf.

ITunes Menu

Wer möchte, kann nun den Menüeintrag noch mit einem Tastenkürzel versehen. Das geht – wie übrigens für alle Menüeinträge – in den Systemeinstellungen unter Tastatur, Unterpunkt „App Shortcuts“. Dort bitte auf die Plus-Schaltfläche klicken und den folgenden Dialog entsprechend ausfüllen:

ITunes Tastenkombi

Der Wert des Feldes „Menü“ und der Name des Skripts müssen hierbei exakt übereinstimmen. Als Tastenkürzel wurde hier Cmd-Shift-Alt-E gewählt, aber selbstverständlich tut es auch jede andere noch nicht belegte Tastenkombination. Viel Spaß beim Stöbern im iTunes-Store!

500px

07 Aug 2013
7. August 2013

Bei meiner Suche nach neuen Fotodiensten als Ersatz für Flickr bin ich auch auf 500px gestoßen. Die Idee hinter 500px ist aber nicht, all seine Fotos dort zu präsentieren, sondern nur die wirklich guten. Der Anbieter hat Algorithmen entwickelt, gut bewertete und von vielen als Favorit gespeicherte Bilder prominent zu platzieren. Außerdem fließt die Aktualität mit ein, so dass auch Fotografen mit wenig Followern Chancen haben.

Je nach Funktionsumfang kostet das Foto-Hosting zwischen 0 und 75 Dollar im Jahr. Da die Plattform aufgrund ihrer Ausrichtung nicht als Heimat aller meiner Fotos in Frage kam (also kein Flickr-Ersatz ist), habe ich mir dennoch das kostenlose Paket geklickt und präsentiere dort eine Auswahl meiner besten Fotos: http://500px.com/mjasinski

Es ist erstmal nur ein kleiner Startbestand, den ich weiter aufstocken werde. Die Bilder können dort sogar käuflich erworben werden, als digitaler HD-Download oder als Druck.

Die technische Anbindung an mein Ökosystem ist bei 500px übrigens recht gut, es gibt Aperture-Plugins sowie eine iPhone- und eine iPad-App.

500px

iPhone-App

Mac via iPhone sperren

25 Mai 2013
25. Mai 2013

MacSparky.com berichtete diese Woche über einen Weg, seinen Mac via iPhone aus der Ferne in den Schlafmodus zu versetzen. Vor diesem Problem stand ich auch einmal, denn ich hab es gern, dass mein Mac gesperrt ist, wenn er unbeaufsichtigt läuft, auch wenn das vielleicht ein wenig paranoid klingen mag. Allerdings bin ich mir dann unterwegs manchmal nicht sicher, ob ich das auch wirklich getan habe und dann ist es äußerst praktisch, dies nochmal via iPhone nachzuholen. Bisher habe ich das immer über E-Mail erledigt, indem ich eine Mail-Regel angelegt habe, die bei einer Mail von mir mit einem bestimmten Betreff den Mac via AppleScript sperrt. Das funktioniert gut, setzt aber voraus, dass die Mail-App läuft und ist auch jedes Mal ein wenig Tipparbeit.

Die alternative Methode, die ich heute vorstellen möchte und welche ich ein wenig abgewandelt habe, kombiniert auf clevere Weise drei Apps, die ich alle hier bereits in jeweils einem Artikel beschrieben habe (Einzelheiten zur Verwendung dieser Apps bitte dort nachlesen):

Die Grundidee ist, via Drafts eine Datei in der Dropbox anzulegen, nach dessen Inhalt Hazel sucht, um dann beim erfolgreichen Auffinden den Mac zu sperren. Der Text, den ich in meiner Dropbox via Drafts speichere, lautet in meinem Fall einfach “MB sperren” für “MacBook sperren”:

Drafts Sperre

Für das Speichern als Dropbox-Datei gibt es in Drafts (iPhone oder auch iPad) direkt eine Aktion (“Save to Dropbox”). Zuvor muss man die Drafts-App allerdings für den Dropbox-Zugriff autorisiert haben. Mit Hilfe von Launch Center Pro kann dieser Vorgang automatisiert werden. Dazu legen wir im Launch Center eine Aktion mit folgendem URL an:

drafts://x-callback-url/create?text=MB%20sperren&action=Save%20to%20Dropbox

Damit das so durchgereicht wird, muss in Drafts unter “Settings” die Einstellung “Allow URLs to trigger actions” eingeschaltet sein. Optional kann zur Erhöhung der Sicherheit noch ein in Drafts festgelegter “URL key” angehängt werden. Beispiel:

drafts://x-callback-url/create?text=MB%20sperren&action=Save%20to%20Dropbox&key=Geheim

Ein passendes Icon findet sich im Launch Center ebenfalls:

LCP Sperre

Nun kann der iPhone-seitige Teil der Sperraktion mit einem Tap vom Launch Center aus erfolgen.

Vorher müssen wir aber auf dem Mac noch einige Vorbereitungen treffen. Wir brauchen eine Hazel-Regel für den Ordner “Dropbox/Apps/Drafts”:

Hazel Sperre 1

Die Bedingung, die zur Ausführung der Hazel-Regel führt, ist, dass es in diesem Ordner eine Datei mit dem Inhalt “MB sperren” gibt:

Hazel Sperre 2

Trifft dies zu, veranlassen wir gleich mehrere Schritte. Als erstes löschen wir die Datei (“Move to folder: Trash”), damit die Aktionen nur einmal ausgeführt werden. Dann starten wir ein AppleScript, welches das MacBook sperrt:

tell application “System Events” to start current screen saver

Hazel Sperre 3

Dazu muss in den Systemeinstellungen geregelt sein, dass nach einem Ruhezustand oder dem Bildschirmschoner ein Kennwort einzugeben ist:

Sicherheit Sperre 2

Wer den Mac lieber schlafen legen möchte, nimmt stattdessen einfach folgendes AppleScript:

tell application “Finder”

  sleep

end tell

Damit sind wir schon am Ziel unseres Vorhabens.

Als i-Tüpfelchen wäre es nun noch schön, wenn das iPhone eine Rückmeldung vom Mac bekäme. Das ist allerdings nicht ganz trivial und sei daher nur fortgeschrittenen Nutzern empfohlen. Eine ausführliche Schritt-für-Schritt-Anleitung würde den Rahmen eines Blog-Artikels leider sprengen.

Ich nutze dazu Prowl, eine iOS-App, der man über das Internet Push-Notifications schicken kann, die dann auf dem Telefon angezeigt werden. Zusätzlich braucht man ein Benutzerkonto auf https://www.prowlapp.com, um einen sogenannten API-Key zu erhalten, der für den Versand vom Mac aus benötigt wird. Ferner wird auf dem Mac ein Perl-Skript gebraucht, welches ausführbar in einem Verzeichnis wie z.B. /usr/local/bin bereitliegen sollte.

Nun sagen wir Hazel, dass nach dem AppleScript noch ein Shell-Script ausgeführt werden soll:

Hazel Sperre 4

Wichtig ist, dass wir hier im Parameter -apikey= unseren API-Key von prowlapp.com einsetzen. Nach dem Sperren des MacBooks erscheint nun folgende Meldung auf unserem iPhone:

Push Sperre

Vorlagen in OmniFocus

13 Apr 2013
13. April 2013

OmniFocus, ein ausgewachsenes GTD-System, gehört zu meinen wichtigsten Programmen. Ohne diese App, welche für Mac, iPhone und iPad angeboten wird, würde ich an vieles nicht denken und hätte ein deutlich unorganisierteres Leben.

Aber, wie das nun mal so ist, nichts ist perfekt und man kann immer noch etwas verbessern. OmniFocus – in diesem Artikel geht es ausschließlich um die Mac-Version – fehlt eine Vorlagen-Funktion. Häufig muss ich Projekte (= eine Gruppe von Aufgaben) eintragen, die es so bereits mal gab bzw. bei denen kleine Teile des Textes – z.B. ein Name – anders sind. Daher wäre es sehr schön und vor allem zeitsparend, wenn man sich einfach aus einer Bibliothek vorgefertigter Projekte bedienen könnte. Und hier die gute Nachricht: mit ein wenig AppleScript-Magie ist das kein Problem! AppleScript ist eine in OS X integrierte Programmiersprache, die auf natürlicher Sprache basiert und dazu dient, Abläufe zu automatisieren und Programme miteinander zu verbinden. Viele Programme bieten Schnittstellen zu AppleScript an – darunter auch OmniFocus.

Besagtes Script (“Templates.scpt”) kann über diese Seite geladen werden. Es gehört in den folgenden Ordner unseres Home-Verzeichnisses:

Library/Scripts/Applications/OmniFocus

Sollte der Ordner “OmniFocus” in “Applications” noch nicht existieren, ist dieser neu anzulegen.

Der Library-Ordner selbst ist seit Lion standardmäßig versteckt. Er kann über das „Gehe zu“-Menü des Finders bei gedrückter Alt-Taste erreicht werden oder mit folgendem Terminal-Befehl (Terminal ist ein mitgeliefertes Dienstprogramm) dauerhaft sichtbar gemacht werden:

chflags nohidden ~/Library/

Das Tilde-Zeichen wird mit der Tastenkombination Alt-N eingegeben.

“Templates.scpt” liegt eine Readme-Datei bei, in der die weitere Vorgehensweise ausführlich beschrieben ist. Als erstes verschaffen wir uns in OmniFocus ein Icon, mit dem wir das Script aufrufen. Dazu ist ein Rechtsklick auf die Icon-Leiste erforderlich wir wählen den Menüpunkt “Symbolleiste anpassen” und ziehen das Symbol “Skript: Templates” in die Icon-Leiste:

OF Vorlagen 1

Nun benötigen wir in unseren Projekten einen Ordner “Template” oder “Templates”. Dort legen wir alle Projekte, für die wir eine Vorlage benötigen, ab. Diese können den Status “zurückgestellt” bekommen, damit sie in anderen Ansichten nicht weiter stören, das Skript aktiviert Projekte, die aus Vorlagen kommen, automatisch.

Wir schauen uns am besten ein Beispiel an. Das Erstellen eines neuen Blog-Eintrags hier ist bei mir ein Projekt aus 3 Aufgaben: Recherche, das eigentliche Schreiben und die Verlinkung in den sozialen Netzen. In meinem Template-Ordner gibt es daher folgenden Eintrag:

OF Vorlagen 2

Es ist also alles schon so vorbereitet, wie ich es für ein neues Blog-Projekt brauche. Schaut man sich den Screenshot etwas genauer an, fallen die Zeichenketten “$Thema” und “>>> Website” auf. Was hat es damit auf sich? $Thema ist ein Platzhalter, wir Software-Entwickler sagen dazu Variable. Platzhalter fangen standardmäßig mit einem Dollarzeichen an, beim ersten Start des Scripts kann aber auch ein alternatives Zeichen eingegeben werden. Für jeden Platzhalter wird bei Benutzung der Vorlage der gewünschte Wert in einem Dialog abgefragt. Wichtig ist, dass die Notiz zum Projekt (hier die beiden grauen Zeilen unter dem Projekttitel) eine Auflistung (durch Leerzeichen getrennt) der gewünschten Variablen in einer Extrazeile enthält, in meinem Fall nur $Thema. ”>>> Website” in der zweiten Zeile bedeutet, dass das neue Projekt im Ordner “Website” entstehen soll. Mache ich keine entsprechende Angabe, wird der Ordner beim Anlegen des Projekts interaktiv abgefragt. Da in meinem Fall aber Blog-Einträge immer in den Ordner “Website” kommen, ist diese Vorgabe sinnvoll.

Wenn ich nun in OmniFocus auf das Icon “Templates” klicke passiert folgendes:

OF Vorlagen 3

Das Script fragt mich zunächst, welche Vorlage ich benutzen möchte. Ich wähle “privaten Blogeintrag zum Thema $Thema” schreiben. Nun muss ich noch angeben, durch welchen Wert der Platzhalter “$Thema” ersetzt werden soll:

OF Vorlagen 4

Und damit ist mein neues OmniFocus-Projekt im Ordner “Website” auch schon fertig:

OF Vorlagen 5

Soweit zur grundsätzlichen Vorgehensweise. Das Script kann noch einiges mehr, für alle Details empfehle ich das Studium der mitgelieferten Readme-Datei. Nur ein Beispiel, trägt man in den Notizen zum Projekt in eine neue Zeile “start: 2d” ein, so bekommt das aus dieser Vorlage erstellte Projekt gleich ein Startdatum, welches 2 Tage von heute entfernt liegt. Es gelten die üblichen Zeitschreibweisen von OmniFocus wie z.B. “1w” oder auch “2w 3d”. Analog ist auch eine Angabe von z.B. “due: 6d” für ein Fälligkeitsdatum in sechs Tagen möglich.

Dateien automatisch via Dropbox teilen

12 Mai 2012
12. Mai 2012

OS X besitzt dank Automator und AppleScript hervorragende Automatisierungsmöglichkeiten, die wir uns hier schon an der ein oder anderen Stelle zunutze gemacht haben. Kürzlich bin ich bei MacinTweak auf einen Workflow gestossen, der dies sehr sehr eindrucksvoll unterstreicht. Es wird eine Datei ausgewählt und folgender Arbeitsablauf automatisiert:

  • die Datei wird gepackt und bekommt einen zufälligen Namen
  • dann wird sie in den Public-Ordner unserer Dropbox kopiert
  • anschließend wird eine E-Mail mit dem Weblink zu dieser Datei vorbereitet
  • eine Hazel-Regel entfernt die Datei nach einer gewissen Zeit wieder aus unserer Dropbox

Die Umbenennung erfolgt deshalb, weil jeder, der den Dateinamen kennt oder errät, die Datei aus dem öffentlichen Ordner unserer Dropbox laden kann. Bei sensibleren Dateien ist ein längerer Zufallsname daher so etwas wie ein Kennwort. Die hier beschriebene Vorgehensweise ist äußerst praktisch, wenn man eine Datei nicht per E-Mail senden möchte, weil sie beispielsweise zu gross ist (viele Anbieter haben Limits von 10 oder 20 MB).

Wer noch kein Dropbox-Konto (ein wirklich empfehlenswerter Cloud-Speicherdienst, auf den viele iOS-Apps zugreifen können) hat, kann gerne diesen Empfehlungslink verwenden und bekommt dafür 500 MB zusätzlichen Speicherplatz.

Auf geht’s! Wir starten den Automator (liegt im Programme-Ordner) und legen einen neuen Dienst an:

dropshare1

Unser neuer Dienst empfängt Dateien und Ordner im Finder:

dropshare2

Er besteht aus zwei Arbeitsschritten, die im linken Teil des Automator-Fensters ausgewählt werden können. Schritt 1 ist „Archiv erstellen“ mit den folgenden Einstellungen:

  • Sichern unter: Derselbe Name wie die Eingabe
  • Ort: Derselbe Name wie die Eingabe

dropshare3

Schritt 2 lautet „AppleScript ausführen“. Das benötigte AppleScript finden wir bei MacinTweak. Es muss in die grosse Textbox kopiert werden:

dropshare4

Mit dem Hammer-Icon können – und sollten wir nach jeder Änderung – überprüfen, ob das Skript von der Syntax her korrekt ist.

Am Skript selber habe ich ein paar Änderungen vorgenommen.

In Zeile 6 habe ich eine Reihe von Sonderzeichen aus der Zeichenkette entfernt, damit die Dateinamen nicht zu exotisch werden:

set end of str to some item of “ABCDEFGHIJKLMNOPQRSTUVWXYZadbcdefghijklmnopqrstuvwxyz1234567890_-”

In Zeile 13 habe ich dem Dateinamen die Zeichenkette shared- vorangestellt, damit ich leichter sehen kann, welche Dateien im Public-Ordner aus diesem Workflow stammen und ich diese leichter mit Hazel (s.u.) erfassen kann:

set theNewName to (“shared-” & randString & “.zip”)

Wenige Zeilen darunter müssen wir den Pfad unseres Public-Ordners angeben (Doppelpunkt als Pfadtrenner, bitte den tatsächlichen Gegebenheiten auf dem jeweiligen Mac anpassen):

set dest_folder to folder “Desktop:Dropbox:Public” of home

Und wieder ein paar Zeilen tiefer die Webadresse unsers Public-Ordners. Individuell zu ändern ist hier die numerische Dropbox-ID:

set the theURL to (“http://dl.dropbox.com/u/123456789/” & my text2url(theNewName))

Die ID kann z.B. ermittelt werden, indem wir eine Datei in den Public-Ordner unserer Dropbox legen und im Kontextmenü auf „Dropbox > Öffentl. Link kopieren“ klicken. Dies befördert eine Webadresse in die Zwischenablage, welche die ID beinhaltet.

Anschliessend speichern wir den Dienst – z.B. unter dem Namen „in Dropbox teilen“.

Wenn alles korrekt gelaufen ist, haben wir jetzt im Kontextmenü einer Datei (im Finder) einen neuen Dienst:

dropshare5

Dieser sollte nun alle Aktionen wie beschrieben ausführen. Im Public-Ordner der Dropbox finden wir die gepackte Datei:

dropshare6

Gleichzeitig öffnet sich das Mail-Programm mit dem öffentlichen Link zu dieser Datei:

dropshare7

Schnell noch den Empfänger, einen Betreff sowie eine kurze Nachricht reinschreiben und schon ist die Datei geteilt.

Eine Hazel-Regel sorgt bei mir dafür, dass diese Dateien nach 14 Tagen wieder entfernt werden. Der Zeitraum kann natürlich beliebig gewählt werden:

dropshare8

Über Hazel – ein praktisches Helferlein für Ordner-bezogene Aktionen – müsste ich eigentlich auch mal einen Artikel schreiben, da mir das Tool eine ganze Reihe von Arbeiten abnimmt. Mal sehen, wann ich dazu komme. Nun wünsche ich erstmal viel Vergnügen beim Teilen von Dateien via Dropbox!

Version 7.1 - © 1995-2014 by Dr. Markus Jasinski - Impressum