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 :

jeton inconnu trouvé(s)


Sujet :

AppleScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 37
    Points : 22
    Points
    22
    Par défaut jeton inconnu trouvé(s)
    Bonjour,

    J'ai fait l'acquisition d'une petite liseuse électronique pour lire dans le train.
    Le problème et que les documents dans cet appareil sont présentés par "titre" et non par le nom du fichier.
    Le "titre" est vraissemblablement une métadonnée dont le je connaissais pas l'existence, et qui n'a aucune pertinence pour un utilisateur.
    Par exemple un texte de philo a le charmant titre "978-1-4020-5087-9.pdf"

    Pour remédier à ce problème j'ai installé exiftool sur mon mac, ce qui m'a permis de modifier ces "titres" en ligne de commande, mais la procédure est trop lente.
    D'où l'idée d'utiliser AppleScript pour changer ces métadonnées massivement et rapidement.

    La commande suivante dans terminal permet de substituer le "titre" absurde par le nom du fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exiftool '-PDF:Title<${filename;s/\..*?$//}' '-XMP-dc:Title<${filename;s/\..*?$//}'
    suivie de paths/nom_fichier à modifier

    Cela marche parfaitement.
    Maintenant j'essaye cela dans AppleScript ( dont je n'ai aucune connaissance particulière, je viens juste de passer deux heures pour trouver cette idée et observant le code d'un autre applescript qui agit également sur des paquet de files)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    on open pdfFiles
    	repeat with aFile in pdfFiles
    		do shell script "exiftool '-PDF:Title<${filename;s/\..*?$//}' '-XMP-dc:Title<${filename;s/\..*?$//}' " & quoted form of POSIX path of aFile
    	end repeat
    	beep 1 --"Finished!"
     
    end open
    J'obtiens le message d'erreur suivant à la compilation: «*"*» prévu(s) mais jeton inconnu trouvé(s).
    Qu'est-ce qu'un jeton ? Il semble que le caractère "\" soit responsable de ce problème, mais il est pourtant nécessaire au script shell.
    ( le message disparait si on met un mobre pair de "\" , par exemple "\\" ... )
    Quelqu'un à une idée ?

    Merci d'avoir lu tout cela

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 446
    Points : 43 088
    Points
    43 088
    Par défaut
    Fais le directement en bash avec une boucle for
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Fais le directement en bash avec une boucle for
    Bonne idée. Idealement je préférerai une petite droplet (pour y balancer tous les fichiers à modifier sans plus penser au code).
    Et puis tant qu'à faire, aussi comprendre cette histoire de jeton.
    J'ai trouvé une discussion sur un problème similaire ici, mais la solution proposée ( remplacer "\" par "\\" ) ne marche pas.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    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 : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir,
    Cela fait bien longtemps que je n'ai pas utilisé Exiftool dans un Applescript, mais de mémoire, le shell utilisé par Applescript utilise des variables différentes du shell que tu utilises directement sur le Terminal. En particulier les chemins par défaut.
    De plus l'erreur de compilation que tu as provient des caractères d'échapement qui suivent "filename" : les \.. sont interprétés par le compilateur Applescript qui ne comprend pas la suite.
    Il doit surement exister des contournements, mais je ne les connais pas. En revanche tu peux contourner le problème en donnant directement à Exif tool le chemin et le nom du fichier.

    Quant aux chemins, en relisant mes vieux scripts, j'avais mis systématiquement le chemin complet.

    Voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set Chemin_Fichier to "MactintoshHD/User/monUser/Desktop/Test_Titre.PDF"
    Set NomFichier to "Test_Titre"
    do shell script "usr/local/bin/exiftool -Title='" & NomFichier & "' -Overwrite_Original " & Chemin_Fichier
    Avec les variables:
    - Chemin_fichier = le nom et le chemin posix du fichier PDF depuis la racine identique à ton script (quoted form of POSIX path of aFile)
    - NomFichier = la valeur que tu veux assigner à l'attribut Exif Title

    Nb: -Overwrite_Original évite que exiftool ne génère une copie du fichier modifié en gardant l'original avec l'extension "_original".

    Avec la syntaxe que je te donne, cela t'oblige à récupérer dans le Script AppleScript, le chemin du fichier, son nom (via "Finder", get name of aFile).
    Mais ...ça a le mérite de fonctionner !

    Cordialement

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    Merci PBELL pour cette suggestion.
    Il m'est venu une autre idée: Puisque le problème vient des "\.." mal interprétés par le compilateur Applescript, pourquoi ne pas écrire cette commande dans un shell, et exécuter le shell depuis la droplet ( le nom du shell ne contenant pas de "\.." ).
    Je vient d'essayer, et ça marche !! L'avantage est qu'il n'y a pas besoin d'indiquer les paths ( mes fichiers classés pas sujet pouvant se trouver dans plusieurs dossiers )
    Afin de rendre la procédure encore plus simple, je vais incorporer dans le même shell une commande pour déposer une copies de chaque fichier modifié directement dans la lectrice

    Bonne soirée
    Cordialement.

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

Discussions similaires

  1. [XSLT 1.0] Jeton attendu 'eof' trouvé '@'.
    Par OsTaLaKaR dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/04/2011, 15h26
  2. Réponses: 0
    Dernier message: 03/12/2008, 17h28
  3. je trouve un resultat inconnu
    Par heeedi dans le forum C
    Réponses: 2
    Dernier message: 23/11/2008, 23h53
  4. Réponses: 3
    Dernier message: 25/09/2008, 13h42
  5. Réponses: 0
    Dernier message: 20/03/2008, 15h05

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