# Applescript / iPhoto : "duplicate to ..."



## Stefan Ivanovich (27 Juin 2010)

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


----------



## Anonyme (27 Juin 2010)

Bonjour,

Une solution :

```
set photemp to photo "PqNoPhoto"
	duplicate photemp to album "Test album"
	set newpho to photo ("PqNoPhoto" & " copie") of album "Test album"
```


----------



## Stefan Ivanovich (27 Juin 2010)

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


----------



## Stefan Ivanovich (28 Juin 2010)

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"):

```
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):

```
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&#8217;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


----------



## Anonyme (28 Juin 2010)

Stefan Ivanovich a dit:


> Résultat (log):
> 
> ```
> get photo "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é  :

```
set phonew to the first photo whose title is "nosx copie"
```


----------



## Stefan Ivanovich (29 Juin 2010)

Mac_Jac a dit:


> 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é  :
> ...



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

```
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


----------



## Anonyme (29 Juin 2010)

Bonjour,

J'ai testé avec la version *6.0.6* sur Mac OS X 10.4.11:
J'obtiens cette erreur : 
	
	



```
"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

```
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
	
	



```
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
```


----------



## Stefan Ivanovich (29 Juin 2010)

delay 2:  (par contre importing ne me semble pas être valorisé par duplicate ...)
Merci de nouveau!
Stef


----------

