IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Besoin de votre aide pour créer un script avec Aperture et Exiftool [AppleScript]


Sujet :

AppleScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Besoin de votre aide pour créer un script avec Aperture et Exiftool
    Bonjour à tous !

    je viens chercher votre aide pour créer un AppleScript, je n'ai en effet aucune connaissance en codage ...

    Le but de ce script : exporter des raw traités dans Aperture en fonction d'un preset d'export prédéfini, et une fois les fichiers exportés, mettre à jour automatiquement les exif des exports avec ceux des originaux via la commande d'Exiftool -tagsfromfile.

    Pourquoi ? Lorsqu'on exporte des raw traités dans Aperture en Jpeg ou TIFF, les metadonnées relatives à l'objectif utilisé sont "chamboulées". Exemple : en utilisant la commande "-lens*" d'Exiftool, on accède à toutes les données relatives à l'objectif utilisé.

    1- Exif issues du raw d'origine


    2- Exif issues du fichier TIFF exporté après avoir traité le raw dans Aperture


    La conséquence : l'application DxO que je souhaite utilisé en dernier dans mon workflow ne reconnait pas l'objectif utilisé et ne me propose donc pas les corrections optiques liées au couple boitier/objectif.

    En utilisant la commande -tagsfromfile d'Exiftool, on peut "patcher" les Exif d'un fichier par celles d'un autre, dans mon cas patcher les Exif du fichier exporté par celles du raw et donc retrouver tout les champs Lens. Et ça fonctionne.

    Le soucis c'est qu'il faut tout rentrer manuellement dans le terminal. J'ai donc trouvé un AppleScript sur internet qui simplifie déjà un peu la chose, il faut juste indiqué le fichier source et le fichier destination.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tell application "Aperture"
    	set s to quoted form of POSIX path of (choose file with prompt "CHOOSE SOURCE" without invisibles)
    	set d to quoted form of POSIX path of (choose file with prompt "CHOOSE DESTINATION")
    do shell script "exiftool -all= -tagsfromfile " & s & " -exif:all " & d
    end tell
    C'est bien, mais pas assez. Quand on exporte 50 images d'une série ça prend beaucoup trop de temps.

    D'où l'idée de créer un script qui automatique tout le processus : export et patch des exif (sans avoir à indiquer le fichier source et celui de destination).

    En passant beacoup de temps à chercher sur le net, j'ai réuni différents bout de code, mais il me manque la partie la plus importante : l'automatisation du patchage des exif.

    Voici ce que j'ai pour le moment :

    1- La première partie du script qui permet d'exporter les fichiers dans un dossier à déterminer en fonction d'un preset d'export prédéfini.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    tell application "Finder"
    	set exportFolder to (choose folder with prompt "Choisissez un dossier de destination")
    end tell
     
    tell application "Aperture"
    	set imageSel to (get selection)
    	if imageSel is {} then
    		error "Please select image(s) before exporting."
    	else
    		export imageSel using export setting "TIFF - dimensions d'origine 16 bits RGB" to exportFolder
    	end if
    end tell
    2- Le gros du travail qu'il reste à faire. Je pensais réutiliser le code du script trouvé plus haut, mais je n'ai aucune connaissance pour réalisé l'automatisation. Et c'est là que j'ai besoin de votre aide, auriez vous les connaissances nécéssaire pour réaliser cette partie du codage ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tell application "Aperture"
    	set s to quoted form of POSIX path of (définir automatiquement le fichier source grâce aux "connaissances" d'Aperture)
    	set d to quoted form of POSIX path of (définir automatiquement le fichier de destination grâce aux "connaissances" d'Aperture)
    do shell script "exiftool -all= -tagsfromfile " & s & " -exif:all " & d
    end tell
    Je vous remercie si vous prenez le temps de vous pencher sur ma demande !

    Cordialement, Alexis

  2. #2
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonjour,
    Pour t'aider, j'ai besoin de quelques précisions :

    Tu me confirme que la commande "do shell script "exiftool -all= -tagsfromfile " & s & " -exif:all " & d" fonctionne sans problème ?

    Pour être certain de comprendre, tu veux enchainer ton script d'export Aperture avec la ligne ci-dessus ?
    Mais ton script Aperture ne traite qu'un seul fichier ? non ?
    Je n'ai pas Aperture, mais je suppose que ton script d'export garde le même nom de fichier que celui du dossier original avant export : correct ?

    Si les noms dans le dossier source (avant export Aperture) et après sont identiques, alors je peux faire quelque chose pour toi, en supposant que tous les exports Aperture sont déjà faits dans un dossier (donc un bout de script après ton Export Aperture)
    1) sélectionner le dossier d'exportation: FExport
    2) sélectionner le dossier des images avant export :FSource
    3) boucle sur chaque fichier du dossier FExport, et, pour chaque, vérification que le fichier source existe bien dans FSource, puis copie des Exif du fichier de FSource vers son homonyme du dossier FExport
    4) si le fichier dans FSource n'existe pas, alerte à l'utilisateur
    5) confirmation du nombre de fichiers traités (en principe devrait être le nombre de fichier de FExport !)

    Si cette logique te convient, je trouverai un peu de temps demain soir, jeudi 22, pour te programmer cela.
    Si j'ai mal compris, dis moi ce qui ne va pas.

    Cordialement

  3. #3
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci pour cette réponse !

    Je confirme que la commande fonctionne parfaitement. Mais je me suis rendu compte qu'Exiftool gardait le fichier original en ajoutant "_original" à la suite de l'extension de fichier, et qu'en plus cela changeait la colorimétrie de l'image à cause des fonctions "-all=" "-exif:all". La commande exacte pour ne pas avoir ce duplicata et ne pas changer la colorimétrie est donc la suivante que je tape dans le Terminal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exiftool -overwrite_original_in_place -tagsfromfile fichiersource.nef fichierdestination.tiff
    Le script pour exporter depuis Aperture permet d'exporter tout les fichiers qui sont sélectionnés dans Aperture.

    En effet je peux faire en sorte que le nom de fichier final soit le même que l'original.

    Cette logique me conviens parfaitement, c'est ce que j'avais en tête mais malheureusement aucunes connaissances pour le réaliser ...

    Merci beaucoup pour prendre le temps de réaliser cela !

    Alexis

  4. #4
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonjour,
    Finalement, j'ai trouvé un peu de temps ce matin !

    Voici donc le script qui fait ce que tu veux. je l'ai commenté pour que tu puisse l'adapter si nécessaire.
    Il est testé et il fonctionne.
    Il n'y a que l'instruction do shell script que je n'ai pas testé car tu me confirmes qu'elle fonctionne.
    J'ai rajouté une petite gestion d'erreur, au cas où un fichier du dossier Export n'aura pas son homologue dans le dossier des originaux.

    Petite précision : l'instruction quoted form of Posix path fait 2 choses :
    - la partie "quoted form of " permet à Unix de ne pas interpréter les espaces, qui pourraient exister dans les noms des dossiers ou fichiers, comme des séparateurs
    - la partie "posix path of" traduit des chemins "Finder" (exemple user: Documents:Mon_Fichier) en chemins Unix (exemple user/Documents/Mon_Fichier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    (* Application permettant de copier les données EXIFdes fichiers du dossier Dossier_Export 
    vers les fichiers de même nom du dossier Dossier_Source
    *)
    
    
    set Dossier_Export to choose folder with prompt "Sélectionner le dossier des Images Exportées"
    
    
    set Dossier_Source to (choose folder with prompt "Sélectionner le dossier des images originales") as string
    
    
    tell application "Finder"
        set Mes_Fichiers to every file of Dossier_Export
        set C_Erreur to 0 -- initialise un compteur d'erreur
        repeat with Fichier in Mes_Fichiers
            set Nom to name of Fichier
            set FSource to Dossier_Source & Nom
            if existsFSource then -- vérifie l'existance d'un fichier de même nom dans le dossier Dossier_Source
    -- transformation des chemins et noms en format Unix
                set U_Export to quoted form of POSIX path of (Fichier as string)
                set U_Source to quoted form of POSIX path of FSource
    -- Instruction de transfert des EXIF de U_Source à U_Export
    -- exiftool -overwrite_original_in_place -tagsfromfile U_Source U_Export
                do shell script "exiftool -overwrite_original_in_place -tagsfromfile " & U_Source & " " & U_Export
            else
    -- le fichier n'existe pas dans le dossier original, affichage de l'erreur
                display alert "Le fichier " & Nom & return & "n'existe pas dans le dossier " & return & Dossier_Source
                set C_Erreur to C_Erreur + 1
            end if
        end repeat
        display dialog "Nombre de fichiers traités : " & (count of Mes_Fichiers) & return & "Nombre d'erreur : " & C_Erreur buttons {"OK"} default button {"OK"}
    end tell
    J'espère avoir répondu à ton problème. Si c'est le cas, n'oublie pas le bouton "Résolu" !
    Cordialement

  5. #5
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup !

    En voyant tout ce travail, ça me conforte dans le fait que j'aurai vraiment pas pu le faire par moi-même !

    Par contre ça ne fonctionne pas chez moi, j'obtiens un message d'erreur : Résultat*:
    error "La variable existsFSource n’est pas définie." number -2753 from "existsFSource"

  6. #6
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonsoir,
    Le copier/coller du script semble avoir oublié un espace entre le mot "exists" et la variable "FSource".
    Sépare ces 2 mots par un espace, c'est tout !

    Pourtant, l'espace existait bien sur mon script car le compliteur de script a bien fonctionné. En effet, "exists" est en bleu comme un mot clé et "FSource" est en vert comme une variable. Curieux !

    Cordialement

  7. #7
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Alors effectivement, le script se déroule normalement avec cet espace en plus !

    Par contre ça ne fonctionne pas : les exports que j'effectue sont en .TIFF et les originaux sont en .NEF. Le nom avant l'extention est bien indentique mais le script cherche un fichier en .TIFF dans le dossier des originaux.

    Un extrait des événements dans l'Editeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    get every file of alias "Macintosh HD:Users:Alexis:Pictures:Pour export:"
    		--> {document file "DSC_1210.tiff" of folder "Pour export" of folder "Pictures" of folder "Alexis" of folder "Users" of startup disk, document file "DSC_1212.tiff" of folder "Pour export" of folder "Pictures" of folder "Alexis" of folder "Users" of startup disk}
    	get name of document file "DSC_1210.tiff" of folder "Pour export" of folder "Pictures" of folder "Alexis" of folder "Users" of startup disk
    		--> "DSC_1210.tiff"
    	exists "Macintosh HD:Users:Alexis:Pictures:Raw:D300s 20 000-30 000:DSC_1210.tiff"
    		--> false
    	display alert "Le fichier DSC_1210.tiff
    n'existe pas dans le dossier 
    Macintosh HD:Users:Alexis:Pictures:Raw:D300s 20 000-30 000:"

  8. #8
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonjour,
    Effectivement, j'ai basé le script sur le fait que les noms étaient identiques comme indiqué.
    Mais Toto.TIFF, n'est pas identique à Toto.NEF !
    Oui, je sais l'ordinateur est bête... voir même primaire, car toi et moi on comprends bien que c'est le même fichier ou presque !

    Donc dans ton exemple, ce que le programme devrait chercher c'est l'un des 2 fichiers ci-dessous:
    - "DSC_1210.NEF"
    - "DSC_1210.nef"
    Si oui, lequel ? (eh oui, "NEF" n'est pas égal à "nef" !)

    En fonction de ta réponse je corrige le script ce soir. (extraction du nom sans extension, et recherche avec l'extension).

    Il est aussi possible que ta réponse soit l'un ET l'autre.
    On peut même rechercher tous les fichiers sans se soucier de leur extension..mais le script sera plus lent.
    C'est aussi possible via script, juste un peu plus tordu !

    ...mais malgré cette fin de semaine difficile, il devrait me rester encore 1 ou 2 neurones pour le faire

    Cordialement

  9. #9
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    J'imagine qu'il faut surtout lui dire précisément ce qu'on cherche !

    C'est bien .NEF en majuscule qu'il faut dans ce cas !

    Merci pour le temps que tu prends à réaliser cela !

  10. #10
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonsoir,
    Voici le programme.
    Pour être plus souple, le script demande, après sélection des dossiers d'export et de source, le nom de l'extension des fichiers du dossier source.
    Par défaut "NEF".
    Tu pourras ainsi changer l'extension de recherche des fichiers dans le dossier source !
    Par ailleurs, le script fonctionne quelque soit les extensions des fichiers exportés: en effet le script prend le nom du fichier (avec extension), lui retire l'extension, et ajoute à la place l'extension saisie (NEF par défaut).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    (* Application permettant de copier les données EXIFdes fichiers du dossier Dossier_Export 
    vers les fichiers de même nom du dossier Dossier_Source avec changement de l'extension
    *)
    
    
    set Dossier_Export to choose folder with prompt "Sélectionner le dossier des Images Exportées"
    set Dossier_Source to (choose folder with prompt "Sélectionner le dossier des images originales") as string
    
    
    set New_Ext to "NEF" -- exension par défaut des fichiers dans le fichier source
    set Saisie to display dialog "Extension des fichiers du dossier source :" with title "Extension" default answer New_Ext
    set New_Ext to text returned of Saisie
    
    
    tell application "Finder"
        set Mes_Fichiers to every file of Dossier_Export
        set C_Erreur to 0 -- initialise un compteur d'erreur
        repeat with Fichier in Mes_Fichiers
    -- lit le nom, retire l'extension et ajoute l'extension saisie au début
            set Nom to name of Fichier
            set Ext to name extension of Fichier
            set Nom to (text 1 thru ((offset of Ext in Nom) - 1) of Nom) & New_Ext
            set FSource to Dossier_Source & Nom
            if existsFSource then -- vérifie l'existance d'un fichier de même nom dans le dossier Dossier_Source
    -- transformation des chemins et noms en format Unix
                set U_Export to quoted form of POSIX path of (Fichier as string)
                set U_Source to quoted form of POSIX path of FSource
    -- Instruction de transfert des EXIF de U_Source à U_Export
    -- exiftool -overwrite_original_in_place -tagsfromfile U_Source U_Export
                do shell script "exiftool -overwrite_original_in_place -tagsfromfile " & U_Source & " " & U_Export
            else
    -- le fichier n'existe pas dans le dossier original, affichage de l'erreur
                display alert "Le fichier " & Nom & return & "n'existe pas dans le dossier " & return & Dossier_Source
                set C_Erreur to C_Erreur + 1
            end if
        end repeat
        display dialog "Nombre de fichiers traités : " & (count of Mes_Fichiers) & return & "Nombre d'erreur : " & C_Erreur buttons {"OK"} default button {"OK"}
    end tell
    Cordialement

    PS : à priori il n'y a pas d'espace manquant cette fois !

  11. #11
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Cette fois, c'est la bonne !


    Il manquait quand même un espace entre exists et FSource, mais j'étais vigilant

    Un grand grand merci à toi, en plus le script comporte de la souplesse en indiquant l'extension des originaux et peut importe l'extension des exports, c'est juste génial !

    Je vais le garder bien au chaud, je pense même que ça en intéressera d'autres !

    Merci encore

  12. #12
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Salut salut !

    Bon je suis de retour ...

    Le script fonctionne très bien, j'aimerai juste ajouter une ligne pour l'améliorer : lors de la sélection des fichiers dans le dossier Export, exclure de la sélection des fichiers dont l'extension se termine par .dop

    Ce sont les fichiers de réglages générés par DxO pour chaque image traitée. Je souhaite les garder mais du coup ils sont analysés par le script qui me renvoie forcément des erreurs !

    J'ai bien tenter de chercher d'abord par moi-même sur notre amis Google mais je n'ai pas trouvé ...

  13. #13
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonsoir,
    Rien de plus facile que d'exclure les fichiers d'extension .dop !
    Il faut simplement changer la ligne 16 du code précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Mes_Fichiers to every file of Dossier_Export
    Par la nouvelle ligne, qui se comprend sans besoin d'autres commentaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Mes_Fichiers to every file of Dossier_Export whose name extension is not "dop"
    C'est simple et beau Applescript ! .... Non ?

    Cordialement

  14. #14
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Alors j'avais fini par trouvé ce qu'il fallait rajouter, sauf que j'obtiens cette erreur à la fin du script :"Le fichier DSC_7985.tiff.dopNEF n'existe pas dans le dossier Macintosh HD:Users:....."

  15. #15
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonjour,
    Le fichier que tu indiques "DCS_7985.tiff.dopNEF" n'a ni une extension dop, ni une extension NEF, c'est pourquoi il génère une erreur.

    Le script fait ce que tu m'as demandé, mais visiblement tes fichiers ne correspondent pas à ce que tu as demandé.
    1) tu as demandé que les fichiers du dossier Exports soient comparés aux fichiers du dossier Source de même nom -> script N°1
    2) tu as indiqué ensuite qu'il s'agissait d'avoir le même nom, sans l'extension dans export et avec NEF dans source ->le script N°2 lit le fichier exporté supposé être xxxx.yyy (yyy étant l'extension) et recherche dans source le fichier xxxx.NEF
    3) tu as indiqué que le dossier export pouvaient aussi contenir des fichiers xxxx.dop dont il ne faut pas tenir compte -> correction donnée hier.

    Le fichier exemple dont tu parles aujourd'hui semble indiquer (difficile d'être certain sans voir le fichier source) que dans le dossier Export tu as DCS_7985.tiff.dop.yyy (yyy étant son extension). Il n'est donc pas exclu d'office de la comparaison (pas un .dop !) et le script N°2 remplace son extension par NEF comme demandé, soit DSC_7985.tiff.dop.NEF.
    Pourtant tu indiques l'erreur sur DSC_7985.tiff.dopNEF (curieux ?)
    J'imagine que dans le dossier source, le fichier s'appelle DCS_7985.tiff ... Est-ce exact ? ou peut être une autre extension ?

    Si c'est le cas, il faut encore modifier le script.
    Avant de le faire, et pour éviter ces aller/retour inefficaces, il faut s'assurer que l'on couvre TOUS les cas.
    Bien lister les besoins AVANT de développer est la principale source d'efficacité !

    C'est à dire il faut être certain des noms et extensions présents dans le dossier Export et le nom/extension de son homologue dans le dossier source pour trouver la méthode à utiliser.
    Pour cela, il faut que tu listes chaque nom, chaque extension précisément des fichiers du dossier Export et, en face que tu indiques le nom et l'extension du fichier du dossier source.
    Pour qu'il n'y ai pas de doute sur le nom et l'extension, utilise le script ci-dessous en sélectionnant le dossier source, puis export.
    Ce script affiche un dialogue pour chaque fichier avec son nom, l'extension :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set Dossier_Export to choose folder with prompt "Sélectionner le dossier"
    tell application "Finder"
        set Mes_Fichiers to every file of Dossier_Export whose name extension is not "dop"
        repeat with Fichier in Mes_Fichiers
            set Nom to name of Fichier
            set Ext to name extension of Fichier
            display dialog "Nom : " & Nom & return & "Extension : " & Ext buttons {"OK"} default button {"OK"}
        end repeat
    end tell
    Tu recopies chaque couple nom/extension sur une feuille (un tableau Excel sera parfait !) et tu relances sur le second dossier.
    Tu mets en face l'une de l'autre les listes Export (nom, extension) et l'homologue Source (nom, extension). (donc 4 colonnes)
    En principe, selon tes explications, certains fichiers de Export n'auront pas de correspondants sur Source (les .dop !).
    Avec cette liste, tu dois pouvoir en déduire les règles à appliquer. Si tu as un doute, envoi moi la liste (format Excel ou autre).

    C'est seulement à partir de la véritable analyse que l'on pourra écrire un script final ! ... qui tourne.

    Bon courage

  16. #16
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci pour cette réponse !

    Je comprends bien la nécessité de connaître tout les paramètres avant le développement. Mais cette dernière correction que je souhaite ajouter est le résultat de l'utilisation du script, si je l'avais su avant je l'aurais précisé bien entendu ...

    Pour en revenir au fichier .dop justement :

    Le fichier exemple dont tu parles aujourd'hui semble indiquer (difficile d'être certain sans voir le fichier source) que dans le dossier Export tu as DCS_7985.tiff.dop.yyy (yyy étant son extension)
    Eh bien non, dans le dossier Export j'ai DSC_7985.tiff.dop C'est la manière dont DxO nomme le fichier .dop pour chaque image :"nom+extension"+.dop
    Et il enregistre bien entendu se fichier dans le même où se situent les images que l'on traite. Comme je ne déplace pas de dossier les images une fois les exif patchées, le fichier .dop se retrouve dans le dossier des Exports et lorsque j'utilise à nouveau le script pour patcher d'autres images, les fichiers .dop sont pris en compte et renvoient forcément une erreur.

    J'imagine que dans le dossier source, le fichier s'appelle DCS_7985.tiff ... Est-ce exact ? ou peut être une autre extension ?
    Non ce n'est pas exact, dans le dossier source, tout les fichiers ont l'extension .NEF

    J'ai utilisé le script que m'a donné pour les nom de fichiers avec leur extension : si pour le fichier DSC_7985.tiff il m'indique bien DSC_7985.tiff en nom de fichier et .tiff en nom d'extension, il m'inque en revanche aucune extension pour le fichier DSC_7985.tiff.dop. A croire que le système ne reconnait pas cette extension tout court.

  17. #17
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonjour,
    Citation Envoyé par iVoyger Voir le message
    il m'inque en revanche aucune extension pour le fichier DSC_7985.tiff.dop. A croire que le système ne reconnait pas cette extension tout court.
    C'est effectivement là que réside la problème. (merci DxO ! )
    On ne peut donc se fier à la notion d'extension dans le dossier Export.
    Donc si je comprends bien il faut :
    - parcourir les fichiers du dossier Export
    - pour chaque fichier, tester si le nom complet se finit par ".dop", et, si c'est le cas, on ne fait rien et on passe au fichier suivant. (DCS_1234.tiff.dop est non traité)
    - sinon (c'est à dire pas .dop à la fin), on retire l'extension réelle et on ajoute .NEF (ou autre valeur saisie par l'utilisateur)
    Par exemple DCS_1234.tiff dans Export, devient, sans extension DCS_1234, auquel on ajoute .NEF, donc cela devient DCS_1234.NEF
    - on cherche le fichier (ici DCS_1234.NEF) dans le dossier source, et, si on le trouve, on copie les EXIF de DCS_1234.NEF vers DCS_1234.tiff

    Est-ce que j'ai bien décrit le processus ?
    Cela correspond-il à tous les cas que tu rencontres ?
    Ai-je oublié des cas particuliers ?

    Dès ta confirmation, je corrige le script...J'aurai besoin que tu testes car je n'ai pas de fichier .tiff.dop sans extension !
    Cordialement

    PS : je peux le faire ce soir ou demain, jeudi. Après ce sera seulement lundi...réunion de famille oblige !

  18. #18
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Ça me paraît tout bon comme cela.

    Il n'y aura rien d'autre dans le dossier export donc pas d'autres cas de figure à traiter !

  19. #19
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 603
    Points : 1 240
    Points
    1 240
    Par défaut
    Bonsoir,
    J'ai simplement ajouté un test pour déterminer si on doit traiter ce fichier.( lignes 26, 27 et le end if ligne 43)
    J'explique :
    Pos_dop est affecté, en ligne 26 avec la position de".dop" dans le nom du fichier. Si ".dop" n'existe pas, alors Pos_dop = 0
    La ligne 27 teste si, soit Pos-dop est égale à 0, soit sa position n'est pas sur les 4 derniers caractères du nom (autrement dit,..à la fin !). Cela évite que soit éliminé du script un fichier toto.dop.fichier.tiff, car dans ce cas Pos_dop vaut 5 et length est 21 caractères, et 4 n'est pas 21-3 !
    Si le résultat de ce test est OK (pas de ".dop" ou pas à la fin), alors on effectue le traitement, sinon, on passe au "end if" en ligne 43 pour revenir dans la boucle du fichier suivant.

    Je n'ai testé que cette partie (avec des saisies de nom de fichier fictif). A toi de tester le script complet.
    Cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    (* Application permettant de copier les données EXIFdes fichiers du dossier Dossier_Export vers les fichiers de même nom du dossier Dossier_Source avec changement de l'extension
    *)
    
    
    
    
    set Dossier_Export to choose folder with prompt "Sélectionner le dossier des Images Exportées"
    set Dossier_Source to (choose folder with prompt "Sélectionner le dossier des images originales") as string
    
    
    
    
    set New_Ext to "NEF" -- exension par défaut des fichiers dans le fichier source
    set Saisie to display dialog "Extension des fichiers du dossier source :" with title "Extension" default answer New_Ext
    set New_Ext to text returned of Saisie
    
    
    
    
    tell application "Finder"
        set Mes_Fichiers to every file of Dossier_Export
        set C_Erreur to 0 -- initialise un compteur d'erreur
        repeat with Fichier in Mes_Fichiers
    -- lit le nom, retire l'extension et ajoute l'extension saisie au début
            set Nom to name of Fichier
            set Pos_dop to offset of ".dop" in Nom
            if (Pos_dop = 0) or (Pos_dop is not ((length of Nom) - 3)) then -- ".dop" n'existe pas dans le nom du fichier, ou n'est pas à la fin du nom alors on traite ce fichier
                set Ext to name extension of Fichier
                set Nom to (text 1 thru ((offset of Ext in Nom) - 1) of Nom) & New_Ext
                set FSource to Dossier_Source & Nom
                if existsFSource then -- vérifie l'existance d'un fichier de même nom dans le dossier Dossier_Source
    -- transformation des chemins et noms en format Unix
                    set U_Export to quoted form of POSIX path of (Fichier as string)
                    set U_Source to quoted form of POSIX path of FSource
    -- Instruction de transfert des EXIF de U_Source à U_Export
    -- exiftool -overwrite_original_in_place -tagsfromfile U_Source U_Export
                    do shell script "exiftool -overwrite_original_in_place -tagsfromfile " & U_Source & " " & U_Export
                else
    -- le fichier n'existe pas dans le dossier original, affichage de l'erreur
                    display alert "Le fichier " & Nom & return & "n'existe pas dans le dossier " & return & Dossier_Source
                    set C_Erreur to C_Erreur + 1
                end if
            end if
        end repeat
        display dialog "Nombre de fichiers traités : " & (count of Mes_Fichiers) & return & "Nombre d'erreur : " & C_Erreur buttons {"OK"} default button {"OK"}
    end tell

  20. #20
    Candidat au Club
    Homme Profil pro
    Employé
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    C'est tout bon, ça fonctionne parfaitement !

    J'ai encore du remettre un espace entre exists et FSource mais à part ça, parfait !

    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour créer un script
    Par myghalloween dans le forum Windows
    Réponses: 5
    Dernier message: 13/12/2013, 21h03
  2. Réponses: 16
    Dernier message: 01/02/2007, 17h04
  3. J'ai besoin de votre aide pour une requête
    Par ovdz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/05/2005, 12h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo