Applescript / iPhoto : "duplicate to ..."

Stefan Ivanovich

Membre enregistré
27 Juin 2010
6
2
Paris, France
Bonjour.

Dans un script AppleScript pour iPhoto, je cherche a créer des photos en dupliquant un modèle. J'utilise donc la commande "duplicate" de la suite iPhoto. MAIS... cette commande renvoie "missing value" et remet la sélection à {}.

Savez-vous comment récupérer le résultat, c'est à dire la photo nouvellement créée?

Merci beaucoup.

Stef

Mac OS X 10.5.8, iPhoto '06 (7.1.5)

tell application "iPhoto"
set phocom to "Mon test de commentaire (" & (current date) & ")"
set photit to "Mon titre"
set phokwd to "testkw"
set photemp to photo "PqNoPhoto"
set newpho to duplicate photemp to album "Test album"
--set (title of newpho) to photit
--set (comment of newpho) to phocom
--assign keyword string "testkw"
end tell
 
Bonjour,

Une solution :
Bloc de code:
set photemp to photo "PqNoPhoto"
	duplicate photemp to album "Test album"
	set newpho to photo ("PqNoPhoto" & " copie") of album "Test album"
 
Merci beaucoup. C'est en pensant à cette voie détournée que j'ai créé un album ad hoc. Je cherchais en fait s'il existait un moyen plus direct, qui ne dépende pas de la langue locale. Mais ça fera parfaitement l'affaire pour l'instant!
Stef
 
Vérification faite, ça ne marche pas et je ne vois pas pourquoi. Le voyez-vous? Un grand merci...

Script exécuté (sur une bibliothèque comportant une seule photo "nosx"):
Bloc de code:
tell application "iPhoto"
    set photmp to photo "nosx"
    duplicate photmp
    set phonew to photo "nosx copie"
    set (title of phonew) to "Test title"
end tell
Résultat (log):
Bloc de code:
tell application "iPhoto"
    get photo "nosx"
        photo id 4.294967298E+9
    duplicate photo id 4.294967298E+9
        missing value
    get photo "nosx copie"
        "Erreur dans iPhoto : Il est impossible d’obtenir photo \"nosx  copie\"."
Pourtant l'affichage iPhoto après exécution montre bien deux photos: une "nosx" et une "nosx copie".

Remplacer 'set phonew to photo "nosx copie"' par 'set phonew to the first photo whose name is "nosx copie"' ne change pas grand chose.

Étrange, n'est-il pas? Erre-je?

Merci encore. Stef
 
Résultat (log):
Bloc de code:
    get photo "nosx copie"
        "Erreur dans iPhoto : Il est impossible d’obtenir photo \"nosx  copie\"."
Pourtant l'affichage iPhoto après exécution montre bien deux photos: une "nosx" et une "nosx copie".

Remplacer 'set phonew to photo "nosx copie"' par 'set phonew to the first photo whose name is "nosx copie"' ne change pas grand chose.f
J'ai la version 8.1.2, et je n'ai pas ces problèmes.
Et je ne comprends pas le message d'erreur dans le log, il y a deux espaces avant copie.

As-tu essayé :
Bloc de code:
set phonew to the first photo whose title is "nosx copie"
 
J'ai la version 8.1.2, et je n'ai pas ces problèmes.
Et je ne comprends pas le message d'erreur dans le log, il y a deux espaces avant copie.

As-tu essayé :
Bloc de code:
set phonew to the first photo whose title is "nosx copie"

Merci de ton appui. Oui, j'ai essayé aussi mais sans meilleur résultat: name et title semblent synonymes dans le dictionnaire iPhoto; dans les deux cas, on obtient
Bloc de code:
    get photo 1 whose title = "nosx copie"
        "Erreur dans iPhoto : Il est impossible d’obtenir photo 1 whose title = \"nosx copie\". Index non valable."
Y aurait-il une bonne âme disposant de iPhoto '06 (version 7.xx) pour tenter de reproduire cette anomalie?

Existe-t-il une doc de référence Apple sur Appplescript pour iPhoto (du genre de l'excellent document Excel2004AppleScriptRef.pdf) ? J'ai cherché sans trouver autre chose que des liens morts...

Mille mercis à Mac_Jac et à tous. Stef
 
Bonjour,

J'ai testé avec la version 6.0.6 sur Mac OS X 10.4.11:
J'obtiens cette erreur :
Bloc de code:
"Erreur dans iPhoto : NSReceiverEvaluationScriptError: 4"
C'est parce que la commande duplicate n'attends pas que la copie soit complétée.
Je ne sais pas pour la version 7.x

Essaie ce script
Bloc de code:
tell application "iPhoto"
	set photmp to photo "nosx"
	duplicate photmp
	repeat while importing
		delay 0.5
	end repeat
	set phonew to photo "nosx copie"
	set (title of phonew) to "Test title"
end tell


Ou ceci
Bloc de code:
tell application "iPhoto"
	set photmp to photo "nosx"
	duplicate photmp
	delay 2
	set phonew to photo "nosx copie"
	set title of phonew to "Test title"
end tell