• 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

iPhoto Dienst: Markierte Bilder komprimieren und als Dropbox-Link e-mailen

fellowweb

Ribston Pepping
Registriert
27.10.08
Beiträge
299
Hi,

ich möchte einen 10.6-Dienst für iPhoto basteln, der die markierten Bilder (oder das markierte Album) als eine ZIP-Datei komprimiert, diese in ~/Dropbox/Public ablegt und eine neue E-Mail (via Mail.app) erstellt, in deren Text bereits die Linkadresse (für das auf Dropbox gespeicherte ZIP-Archiv) enthalten ist.

Bisher bin ich so weit gekommen:

Automator_iPhoto.jpg

Das scheint auch zu funktionieren, jedoch wäre ich für Euren geübten Blick dankbar, ob das so Sinn macht und "sauber" ist?

Als nächsten Schritt würde ich den Dropbox-Service ähnlich zu der hier beschriebenen Lösung ergänzen. Dann muss ich noch rausbekommen, wie ich den Dropbox-Link direkt in eine neue E-Mail bekomme.

Für jeden Hinweis bin ich dankbar!
 

fellowweb

Ribston Pepping
Registriert
27.10.08
Beiträge
299
Hi,

ich muss das jetzt nochmals aus der Versenkung holen, da ich diesen Dienst unbedingt für meine Eltern brauche, damit sie Fotos und Fotoalben aus iPhoto heraus mit Freunden und Verwandten teilen können.

Google liefert leider wenig in diese Richtung. Mit meinen bescheidenen Automator-Kenntnissen bin ich noch ein bisschen weiter gekommen. Dem Dateinamen der Archivs wird nun Datum und Uhrzeit vorangestellt. Aber fertig bin ich noch nicht:

Screenshot_Automator.png

Zum einen wäre ich dankbar, wenn Ihr mir bestätigen könnt, dass der bisherige Aufbau des Workflow Sinn macht?

Dann würde ich gern den Titel des iPhoto-Ereignisses, zu dem die markierten Fotos gehören, als Dateiname des Archivs (und später als Betreff der E-Mail mit dem Dropbox-Link) nutzen. Wie kann ich das machen?

Brauche ich tatsächlich den Schritt "Finder-Objekte kopieren"? Denn eigentlich "müllt" das ja nur meinen Dropbox Public-Ordner zu.

Für den E-Mail-Versand würde ich dieses Skript anpassen: http://blog.markus-jasinski.de/2012/05/dateien-automatisch-via-dropbox-teilen

Vielen Dank für Eure Hilfe!

fellowweb
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,
der Workflow ist soweit sinnvoll.
Auf das Kopieren der Finder Objekte wirst du nicht drum rum kommen. Aber probiere doch einfach mal, was passiert, wenn du diese Aktion weglässt :)

Den Namen des iPhoto Ereignisses kann man nur über ein AppleScript erfahren. Ich habe dir mal einen Workflow angehängt
Die erste Aktion heißt "AppleScript ausführen" (ist im Screenshot beschnitten) und das ist das Skript:
tell application "iPhoto"
set x to name of current album
end tell
return x

at.jpg

Achte bitte darauf, dass in den Optionen der Aktion "Wert der Variablen abfragen" der Haken bei "Eingabe dieser Aktion ignorieren" gesetzt ist.

Um den Namen in den Betreff der Mail zu bekommen, musst du ein paar Zeilen in dem verlinkten Skript ändern


tell application "Finder"
set theFile to file input
set theBetreff to (name of theFile)
usw

und später

tell application "Mail"
activate
make new outgoing message with properties {content:the clipboard, visible:true, subject:theBetreff}
usw


Gruß


EDIT:
Crossposting?
Was sind die Folgen?
 

fellowweb

Ribston Pepping
Registriert
27.10.08
Beiträge
299
Hi Sedna,

vielen Dank für Deine Hilfe!

Ich habe alles nachvollziehen können und so zusammengebaut.

Automator_Screenshot_1.png Automator_Screenshot_2.png Automator_Screenshot_3.png

Bei zwei Punkten weiß ich nicht weiter:

Zum einen scheint name of current album nicht den Namen des Ereignisses zu nehmen. Wenn ich ein ganzes Ereignis auswähle, dann wird name auf "Ereignis" gesetzt. Wenn ich innerhalb eines Ereignisses mehrere Fotos markiere, wird name auf "Zul. gesehenes Ereignis" gesetzt.

Ich habe einen Blick auf das AppleScript-Funktionsverzeichnis von iPhoto geworfen. Dort findet sich aber sonst nur event album, aber nichts in Richtung current event album.

Wie lässt sich das Ereignis eines Fotos ansprechen?

Zum anderen bekomme ich beim zweiten AppleScript noch eine Fehlermeldung und ich kann nicht erkennen, woran es liegt. Ich vermute, dass ich bei set theBetreff to (name of Ereignisname) einen Fehler mache:

Code:
[COLOR=#1a9800][COLOR=#000000][B]on[/B] [/COLOR][COLOR=#2b00ff][B]run[/B][/COLOR][COLOR=#000000] {[/COLOR]input[COLOR=#000000], [/COLOR]parameters[COLOR=#000000]}[/COLOR][/COLOR]
    
    [B]tell[/B] [COLOR=#2b00ff][I]application[/I][/COLOR] "Finder"
[COLOR=#1a9800][COLOR=#000000]        [B]set[/B] [/COLOR]theFile[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#2b00ff][I]file [/I][/COLOR]input[/COLOR]
[COLOR=#1a9800][COLOR=#000000]        [B]set[/B] [/COLOR]theBetreff[COLOR=#000000] [B]to[/B] ([/COLOR][COLOR=#9400e1]name[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]Ereignisname[COLOR=#000000])[/COLOR][/COLOR]
    [B]end[/B] [B]tell[/B]
    
    [B]set[/B] [B]the[/B] [COLOR=#1a9800]theURL[/COLOR] [B]to[/B] ("http://dl.dropbox.com/u/[12345]/" & [B]my[/B] [COLOR=#1a9800]text2url[/COLOR]([COLOR=#1a9800]theFile[/COLOR]))
[COLOR=#1600c3][B]set the clipboard to [/B][COLOR=#1a9800]theURL[/COLOR][COLOR=#000000] [B]as[/B] [/COLOR][COLOR=#2b00ff][I]text[/I][/COLOR][/COLOR]
    
    [B]tell[/B] [COLOR=#2b00ff][I]application[/I][/COLOR] "Mail"
[COLOR=#2b00ff][B]activate[/B][/COLOR]
[COLOR=#2b00ff][B]make [/B]new [I]outgoing message [/I]with properties[COLOR=#000000] {[/COLOR][COLOR=#9400e1]content[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#1600c3][B]the clipboard[/B][/COLOR][COLOR=#000000], [/COLOR][COLOR=#9400e1]visible[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#690795]true[/COLOR][COLOR=#000000], [/COLOR][COLOR=#9400e1]subject[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#1a9800]theBetreff[/COLOR][COLOR=#000000]}[/COLOR][/COLOR]
    [B]end[/B] [B]tell[/B]
    [B]return[/B] [COLOR=#1a9800]input[/COLOR]
[B]end[/B] [COLOR=#2b00ff][B]run[/B][/COLOR]


[COLOR=#1a9800][COLOR=#000000][B]on[/B] [/COLOR]text2url[COLOR=#000000]([/COLOR]thetext[COLOR=#000000])[/COLOR][/COLOR]
    [B]return[/B] [COLOR=#1600c3][B]do shell script[/B][/COLOR] "python -c \"import urllib, sys; print (urllib.quote(sys.argv[1]))\" " & [COLOR=#9400e1]quoted form[/COLOR] [B]of[/B] [COLOR=#1a9800]thetext[/COLOR]
[COLOR=#1A9800][COLOR=#000000][B]end[/B] [/COLOR]text2url[/COLOR]
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,
(wie schon geschrieben)
name of theFile

Zu dem Namen des Ereignisses kann dir leider nicht weiter helfen, denn da hast du wohl eine andere (ältere) Version von iPhoto als ich.
macscripter.net/viewtopic.php?id=34617

Gruß
 

fellowweb

Ribston Pepping
Registriert
27.10.08
Beiträge
299
Hi sedna,

vielen Dank. Klappt es bei Dir mit iPhoto '11? Das Problem tritt hier mit iPhoto '09 auf. Das wäre aber kein Problem, weil wir das Update auf iLife '11 nur noch nicht installiert haben.

Das AppelScript habe ich weiter vereinfacht, es bleibt jedoch bei der Fehlermeldung und beim Ausführen in Automator zeigt sich, dass der Dienst am AppleScript-Code hängen bleibt:

Code:
[COLOR=#1A9800][COLOR=#000000][B]on[/B] [/COLOR][COLOR=#2b00ff][B]run[/B][/COLOR][COLOR=#000000] {[/COLOR]input[COLOR=#000000], [/COLOR]parameters[COLOR=#000000]}[/COLOR][/COLOR]    
    [B]tell[/B] [COLOR=#2b00ff][I]application[/I][/COLOR] "Finder"
[COLOR=#1a9800][COLOR=#000000]        [B]set[/B] [/COLOR]theFile[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#2b00ff][I]file [/I][/COLOR]input[/COLOR]
    [B]end[/B] [B]tell[/B]
    
    [B]set[/B] [B]the[/B] [COLOR=#1a9800]theURL[/COLOR] [B]to[/B] ("http://dl.dropbox.com/u/[DROPBOX ID]/" & [B]my[/B] [COLOR=#1a9800]text2url[/COLOR]([COLOR=#1a9800]theFile[/COLOR]))
[COLOR=#1600c3][B]set the clipboard to [/B][COLOR=#1a9800]theURL[/COLOR][COLOR=#000000] [B]as[/B] [/COLOR][COLOR=#2b00ff][I]text[/I][/COLOR][/COLOR]
    
    [B]tell[/B] [COLOR=#2b00ff][I]application[/I][/COLOR] "Mail"
[COLOR=#2b00ff][B]activate[/B][/COLOR]
[COLOR=#2b00ff][B]make [/B]new [I]outgoing message [/I]with properties[COLOR=#000000] {[/COLOR][COLOR=#9400e1]content[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#1600c3][B]the clipboard[/B][/COLOR][COLOR=#000000], [/COLOR][COLOR=#9400e1]visible[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#690795]true[/COLOR][COLOR=#000000]}[/COLOR][/COLOR]
    [B]end[/B] [B]tell[/B]
    [B]return[/B] [COLOR=#1a9800]input[/COLOR]
[B]end[/B] [COLOR=#2b00ff][B]run[/B][/COLOR]


[COLOR=#1a9800][COLOR=#000000][B]on[/B] [/COLOR]text2url[COLOR=#000000]([/COLOR]thetext[COLOR=#000000])[/COLOR][/COLOR]
    [B]return[/B] [COLOR=#1600c3][B]do shell script[/B][/COLOR] "python -c \"import urllib, sys; print (urllib.quote(sys.argv[1]))\" " & [COLOR=#9400e1]quoted form[/COLOR] [B]of[/B] [COLOR=#1a9800]thetext[/COLOR]
[COLOR=#1A9800][COLOR=#000000][B]end[/B] [/COLOR]text2url[/COLOR]

Ich kann nicht erkennen, woran es liegen kann. "[DROPBOX ID]" habe ich entsprechend angepasst.
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

Ja, current event ist aus dem aktuellen iPhoto...
Und hier mal dein Skript in funktionierender Form :)

on run {input, parameters}

tell application "Finder"
set theFile to file input
set theBetreff to (name of theFile)
end tell

set the theURL to ("http://dl.dropbox.com/u/[12345]/" & my text2url(theFile as string))
set the clipboard totheURL as text


tell application "Mail"
activate
makenewoutgoing messagewith properties {content:the clipboard, visible:true, subject:theBetreff}
end tell
return input
end run


on text2url(thetext)
return do shell script "python -c \"import urllib, sys; print (urllib.quote(sys.argv[1]))\" " & quoted form of thetext
end text2url


Gruß
 

fellowweb

Ribston Pepping
Registriert
27.10.08
Beiträge
299
Hi sedna,

super, es funktioniert tadellos!!!

Da ich vor meiner Abreise das Upgrade auf iPhoto '11 nicht mehr schaffen werde, habe ich den Bezug zum Ereignisnamen vorläufig entfernt (und "http" durch "https" beim Dropbox-Link ersetzt):

Code:
[COLOR=#1A9800][COLOR=#000000][B]on[/B] [/COLOR][COLOR=#2b00ff][B]run[/B][/COLOR][COLOR=#000000] {[/COLOR]input[COLOR=#000000], [/COLOR]parameters[COLOR=#000000]}[/COLOR][/COLOR]    
    [B]tell[/B] [COLOR=#2b00ff][I]application[/I][/COLOR] "Finder"
[COLOR=#1a9800][COLOR=#000000]        [B]set[/B] [/COLOR]theFile[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#2b00ff][I]file [/I][/COLOR]input[/COLOR]
    [B]end[/B] [B]tell[/B]
    
    [B]set[/B] [B]the[/B] [COLOR=#1a9800]theURL[/COLOR] [B]to[/B] ("https://dl.dropbox.com/u/[DROPBOX ID]/" & [B]my[/B] [COLOR=#1a9800]text2url[/COLOR]([COLOR=#9400e1]name[/COLOR] [B]of[/B] [COLOR=#1a9800]theFile[/COLOR] [B]as[/B] [COLOR=#2b00ff][I]string[/I][/COLOR]))
[COLOR=#1600c3][COLOR=#000000]    [/COLOR][B]set the clipboard to [/B][COLOR=#1a9800]theURL[/COLOR][COLOR=#000000] [B]as[/B] [/COLOR][COLOR=#2b00ff][I]text[/I][/COLOR][/COLOR]
    
    
    [B]tell[/B] [COLOR=#2b00ff][I]application[/I][/COLOR] "Mail"
[COLOR=#2b00ff][COLOR=#000000]        [/COLOR][B]activate[/B][/COLOR]
[COLOR=#2b00ff][COLOR=#000000]        [/COLOR][B]make [/B]new [I]outgoing message [/I]with properties[COLOR=#000000] {[/COLOR][COLOR=#9400e1]content[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#1600c3][B]the clipboard[/B][/COLOR][COLOR=#000000], [/COLOR][COLOR=#9400e1]visible[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#690795]true[/COLOR][COLOR=#000000]}[/COLOR][/COLOR]
    [B]end[/B] [B]tell[/B]
    [B]return[/B] [COLOR=#a70095]input[/COLOR]
[B]end[/B] [COLOR=#2b00ff][B]run[/B][/COLOR]




[COLOR=#1a9800][COLOR=#000000][B]on[/B] [/COLOR]text2url[COLOR=#000000]([/COLOR]thetext[COLOR=#000000])[/COLOR][/COLOR]
    [B]return[/B] [COLOR=#1600c3][B]do shell script[/B][/COLOR] "python -c \"import urllib, sys; print (urllib.quote(sys.argv[1]))\" " & [COLOR=#9400e1]quoted form[/COLOR] [B]of[/B] [COLOR=#1a9800]thetext[/COLOR]
[COLOR=#1A9800][COLOR=#000000][B]end[/B] [/COLOR]text2url[/COLOR]

Vielen, vielen Dank! Morgen früh bekommt meine Mama noch einen Crashkurs und dann wird der Dropbox-Speicher zum Anschlag gebracht. :-D
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Freut mich!

Melde dich, dann kann man das alles noch feintunen :)
So könnte man z.B. dem "Mail" Block auch noch den Empfänger und den send Befehl hinzufügen...
Und anstatt die Objekte in den Papierkorb zu legen, könnte man sie auch direkt löschen...

Und wenn ich ein wenig besser Bescheid wüsste, ein Archiv aus den ausgewählten Bildern mit wenigen Zeilen Code zu erstellen, so wäre die ganze Angelegenheit ehrlich gesagt fast einfacher zu lösen, wenn man das alles in ein AppleScript schreibt (Auch wenn ich persönlich gerne mit dem Automator arbeite)
Eventuell meldet sich da noch jemand, der diese Zeilen beisteuert.

Gruß