• Bonjour Visiteur. Bienvenue sur les nouveaux forums de MacGeneration. La peinture est encore fraiche, quelques boulons doivent être resserrés, plus d’informations demain !

Tracer itinéraire d'après photos

zeltron54

Membre d’élite
29 Mars 2008
1 437
211
Lorraine
Suite et fin
partie 2

Bloc de code:
        tell application "Finder"
            set gu to (ASCII character 34) -- crée le fichier piste.gpx avec les 5 lignes d'entête
            set lelog to open for access ((path to desktop folder as text) & "piste" & ".gpx") as Unicode text with write permission
            write "<?xml version=" & gu & "1.0" & gu & " encoding=" & gu & "UTF-8" & gu & "?>" & return & "<gpx version = " & gu & "1.0" & gu & ">" & return & "<trk>" & return & "<name>piste</name>" & return & "<trkseg>" & return to lelog starting at eof
            close access lelog
            set FolderContents to files of folder Ledossier
            repeat with Lefichier in FolderContents
               
                set nom to name of Lefichier
                set Lefichier to Lefichier as string
               
                set lat to do shell script "mdls -name kMDItemLatitude " & quoted form of POSIX path of Lefichier --récupère la latitude
                set lon to do shell script "mdls -name kMDItemLongitude " & quoted form of POSIX path of Lefichier --récupère la longitude
                set datecrea to do shell script "mdls -name kMDItemContentCreationDate " & quoted form of POSIX path of Lefichier --récupère la date de prise de vue
               
                --met les données en forme
                set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                set AppleScript's text item delimiters to {" "}
                set Lati to text item 3 of lat
                set long to text item 3 of lon
                set datecreat to text item 3 of datecrea & "T" & text item 4 of datecrea & "Z"
                set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur   
                if Lati is not "(null)" or long is not "(null)" then
                    my ecriture(Lati, long, nom, datecreat) -- appelle la routine d'écriture des données
                end if
               
               
               
               
            end repeat
            --ecrit les 3 lignes de fin du fichier
            set lelog to open for access ((path to desktop folder as text) & "piste" & ".gpx") as Unicode text with write permission
            write "</trkseg>" & return & "</trk>" & return & "</gpx>" & return to lelog starting at eof
            close access lelog
           
           
            (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
           
        end tell
    end if
end tell

on ecriture(Lati, long, nom, datecreat) --ecrit les 4 lignes de données
    set gu to (ASCII character 34)
    set lelog to open for access ((path to desktop folder as text) & "piste" & ".gpx") as Unicode text with write permission
    write "<trkpt lat=" & gu & Lati & gu & " lon=" & gu & long & gu & ">" & return & "<src>" & nom & "</src>" & return & "<time>" & datecreat & "</time>" & return & "</trkpt>" & return to lelog starting at eof
    close access lelog
end ecriture
 

zeltron54

Membre d’élite
29 Mars 2008
1 437
211
Lorraine
@Vinzzz25
Le contenu du fichier est correct. seul son encodage n'est pas reconnu, exactement comment les autres testeur avant la modif du script.
Je ne sais donc pas quoi faire ! désolé.
 

Vinzzz25

Membre émérite
8 Avril 2010
761
75
@zeltron54 perso je n'en ai pas l'utilité ,
mais comme Nouvoul a/avait les mêmes probs, je remonte juste l'info ;)
 

zeltron54

Membre d’élite
29 Mars 2008
1 437
211
Lorraine
@Vinzzz25
Comme je n'aime pas rester sur un échec, j'ai refais une autre version. peux-tu essayer et me dire si cette fois c'est aussi bon pour toi .
A télécharger là : http://dl.free.fr/sqNUdZQe2

Merci pour tes tests..;)

Edit : cette version devrait fonctionner pour tout le monde , Car je converti systématiquement le fichier généré en version UTF-8...
 
Dernière édition:

Nouvoul

Membre d’élite
Club MacG
4 Mars 2005
3 127
240
112
Chez moi le dernier script #125 fonctionne parfaitement sur GE, bravo ! Je n'ai pas essayé le précédent à copier-coller en 2 parties
Cependant je trouve un peu rédhibitoire le renommage des photos avec date avant ou après, car tous les liens créés entre ces photos, catalogues, dossiers, logiciels LR, Aperture, ON1, Photos, galeries hébergées ailleurs et autres mises en page, deviennent caducs, ce qui oblige à dupliquer toutes les photos qu'on veut utiliser pour créer l'itinéraire.
 

zeltron54

Membre d’élite
29 Mars 2008
1 437
211
Lorraine
@Nouvoul
J' ai ajouté l'option de renommage, car le script génère un fichier avec les photos dans l'ordre alphabétique de leurs noms et GE et les site en ligne crée le chemin suivant cet ordre, seul Aperture crée le chemin dans l'ordre des dates de prise de vue.
Ce problème fait donc des chemins parfois curieux, et comme Aperture est voué à disparaître...

Mais je vais regarder pour avoir les choix : Ajouter la date avant le nom existant, --- Remplacer le nom par la date --- Ne pas renommer
Peu être que cela serait plus judicieux, qu'en penses-tu ?
 

Vinzzz25

Membre émérite
8 Avril 2010
761
75
@zeltron54 oui c'est bon pour moi avec ton dernier script , et l'ouverture du.gpx se fait sans probs avec TextEdit
 

zeltron54

Membre d’élite
29 Mars 2008
1 437
211
Lorraine

zeltron54

Membre d’élite
29 Mars 2008
1 437
211
Lorraine
Suite à la demande de Nouvoul, une nouvelle version avec le choix de renommer ou non.
A télécharger là : http://dl.free.fr/wBF2Gzte6
 
  • J’aime
Réactions: Vinzzz25

Nouvoul

Membre d’élite
Club MacG
4 Mars 2005
3 127
240
112
Tu es trop bon !
Mille grazie ! ¡ Muchas gracias !
 

zeltron54

Membre d’élite
29 Mars 2008
1 437
211
Lorraine
Le lien étant mort, je met ici la dernière version.
En 2 fois : restriction forum 5000 caractères.

Partie 1
Bloc de code:
tell application "Finder"
    --verifie si un fichier piste.gpx existe sur le bureau
    if exists ((path to desktop folder as text) & "piste" & ".gpx") then
        display dialog "le fichier piste.gpx existe déja sur le bureau"
    else
        set Ledossier to choose folder with prompt "Sélectionner le dossier contenant les fichiers photos"
       
        tell application "Finder"
            set FolderContents to files of folder Ledossier
        end tell
       
        tell application "Finder"
            display dialog "Attention les fichiers photos vont être renommés avec la date de la prise de vue" buttons {"Ajout date au debut", "Renommer avec date", "Ne pas renommer"}
            set choix to button returned of result
           
            -- renomme les photos avec la date de prise de vue pour avoir un ordre chronologique
            repeat with Lefichier in FolderContents
                set lenom to name of Lefichier -- recupere le nom du fichier
                set extens to Lefichier -- recupere l'extension du fichier
                set lextension to name extension of extens
                set Lefich to Lefichier as string
                set datecrea to do shell script "mdls -name kMDItemContentCreationDate " & quoted form of POSIX path of Lefich --récupère la durée au format texte
               
                set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                set AppleScript's text item delimiters to {" "}
                set datecreat to text item 3 of datecrea & "-" & text item 4 of datecrea -- recupere AAAA-MM-JJ-hh/mm/ss
                set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                if choix = "Ajout date au debut" then
                    set name of Lefichier to datecreat & "_" & lenom -- renomme en ajoutant la date de prise de vue devant le nom
                else if choix = "Renommer avec date" then
                    set name of Lefichier to datecreat & "." & lextension -- renomme avec la date de prise de vue aaaa-mm-jj -hh/mm/ss
                end if
            end repeat
        end tell
 

zeltron54

Membre d’élite
29 Mars 2008
1 437
211
Lorraine
Partie 2 (suite et fin)
Bloc de code:
tell application "Finder"
            set gu to (ASCII character 34) -- crée le fichier piste.gpx avec les 5 lignes d'entête
            set lelog to open for access ((path to desktop folder as text) & "pistetmp" & ".gpx") as Unicode text with write permission
            write "<?xml version=" & gu & "1.0" & gu & " encoding=" & gu & "UTF-8" & gu & "?>" & return & "<gpx version = " & gu & "1.0" & gu & ">" & return & "<trk>" & return & "<name>piste</name>" & return & "<trkseg>" & return to lelog starting at eof
            close access lelog
            set FolderContents to files of folder Ledossier
            repeat with Lefichier in FolderContents
               
                set nom to name of Lefichier
                set Lefichier to Lefichier as string
               
                set lat to do shell script "mdls -name kMDItemLatitude " & quoted form of POSIX path of Lefichier --récupère la latitude
                set lon to do shell script "mdls -name kMDItemLongitude " & quoted form of POSIX path of Lefichier --récupère la longitude
                set datecrea to do shell script "mdls -name kMDItemContentCreationDate " & quoted form of POSIX path of Lefichier --récupère la date de prise de vue
               
                --met les données en forme
                set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                set AppleScript's text item delimiters to {" "}
                set Lati to text item 3 of lat
                set long to text item 3 of lon
                set datecreat to text item 3 of datecrea & "T" & text item 4 of datecrea & "Z"
                set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur   
                if Lati is not "(null)" or long is not "(null)" then
                    my ecriture(Lati, long, nom, datecreat) -- appelle la routine d'écriture des données
                end if
               
               
               
            end repeat
            --ecrit les 3 lignes de fin du fichier
            set lelog to open for access ((path to desktop folder as text) & "pistetmp" & ".gpx") as Unicode text with write permission
            write "</trkseg>" & return & "</trk>" & return & "</gpx>" & return to lelog starting at eof
            close access lelog
           
            set newfich to quoted form of POSIX path of ((path to desktop folder as text) & "piste" & ".gpx")
            set fich to quoted form of POSIX path of ((path to desktop folder as text) & "pistetmp" & ".gpx")
            set convert to "iconv -f MAC -t UTF-8 " & fich & " > " & newfich as string
            do shell script convert
            do shell script "rm " & fich
           
            (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
           
        end tell
    end if
end tell

on ecriture(Lati, long, nom, datecreat) --ecrit les 4 lignes de données
    set gu to (ASCII character 34)
    set lelog to open for access ((path to desktop folder as text) & "pistetmp" & ".gpx") as Unicode text with write permission
    write "<trkpt lat=" & gu & Lati & gu & " lon=" & gu & long & gu & ">" & return & "<src>" & nom & "</src>" & return & "<time>" & datecreat & "</time>" & return & "</trkpt>" & return to lelog starting at eof
    close access lelog
end ecriture