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 :

Débutant sur applescript


Sujet :

AppleScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Débutant sur applescript
    Bonjour,

    Débutant sur mac et l'applescript, je souhaiterais savoir si il vous parait possible de créer un script permettant la chose suivante :

    J'ai un dossier contenant des vidéos et des images, je voudrais que les images soient supprimées automatiquement (Sachant que le dossier va se remplir avec le temps et toujours par paire : un .mp4 qui va avec un .jpg).

    J'ai donc cherché comment lui dire de supprimer les extensions .jpg dès qu'il en "voit" une mais je dois dire que je me suis un peu embrouillé... Beaucoup d'information à avaler quand on y connait rien la dedans...

    Donc si j'ai bien compris, ca doit être une action de dossier qui permet de gérer le "scan" du dossier (puisqu'il va se remplir au fur et à mesure),
    ensuite je dois créer une liste des fichiers présents dans le dossier (avec set je crois?...),
    et ensuite lui dire de supprimer tous les fichiers dont l'extension est jpg?

    Je pense que j'en oubli la moitié donc si quelqu'un pouvait me guider un peu, ca serait très gentil. Je ne demande pas qu'on me fasse le code à ma place, j'aimerais juste comprendre la logique.

    Merci beaucoup.

  2. #2
    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 Helix07,
    Bienvenu sur ce forum AppleScript. Tu es au bon endroit pour progresser en AppleScript.
    Effectivement, tu as déjà bien débuté en parlant d'action de dossier.

    Une action de dossier se déclenche automatiquement lors de l'ajout de fichiers dans un dossier.
    Ce script va donc démarrer à chaque fois que des fichiers (.mp4 et .jpg) seront déposés dans un dossier préalablement défini.
    Il suffit donc que ce script regarde le type des fichiers ajoutés et supprime ceux de type jpg.

    Le script est simple, mais, comme tu l'as demandé, je ne te le donne pas tout cuit, pour que tu apprennes :
    Pour les syntaxes des scripts d'action de dossier et les méthodes pour les mettre en place, voici l'article qu'il te faut sur ce forum (limite toi pour l'instant aux chapitres I, II et III-A)
    http://mac.developpez.com/cours/acti...erapplescript/

    Quant à l'action elle-même, il suffit de boucler sur chaque fichier ajouté (boucle repeat) , de déterminer si on veut le garder ou pas (condition if avec les critères retenus comme Extension of file = "jpg" ou encore plus générique avec kind of file image).
    Dans la boucle, si on ne veux pas garder le fichier, on demande au Finder un "delete".
    Non ! je ne t'ai pas écris le code ! Je te laisse chercher les syntaxes. Si tu es perdu, tu sais où poser les questions suivantes !!

    Une dernière chose : les actions de dossier gagnent à être débuggée en mode scripts simples (sinon tu ne "vois" rien). Donc fais un script qui réalise ce que tu demandes sur un dossier avec des fichiers. Une fois mis au point, tu reprends le contenu et tu le transposes en action de dossier.

    Bon courage !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonsoir à toi,

    Merci beaucoup pour cette réponse rapide et pour le lien. J'en ai vu beaucoup mais j'étais pas tombé sur celui la qui m'a l'air très bien fait.
    Je potasse tout ca et j'essayerais de commencer à le coder demain, je pense. Je te tiens au courant de mon avancement.

    Merci encore.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 17
    Points
    17
    Par défaut
    Salut Helix07

    J'ai un code pour toi
    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
     
    on adding folder items to Mon_Dossier after receiving Liste_Fichiers
     
     
    set this_folder to Mon_Dossier as string --a remplacer par le chemin de ton dossier ou s’il exist une variable contenant  le chemin du dossier
    tell application "System Events"
    	set these_files to every file of folder this_folder whose name does not start with "." and (file type is "TIFF" or file type is "JPEG" or name extension is "tiff" or name extension is "tif" or name extension is "jpeg" or name extension is "jpg")
    end tell
    repeat with i from 1 to the count of these_files
    	set this_file to (item i of these_files as alias)
     
    	tell application "Finder"
    		move this_file to trash
    	end tell
     
     
    end repeat
    end adding folder items to
    Voilà j’expliquerai tout ce code plus tard, parce que la prochaine fois que tu auras un problème tu pourras peut-être le régler toi-même.
    Cordialement Jules Michael

  5. #5
    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 Julesmikael,
    Merci pour ce script.

    Je n'avais pas écrit le script directement car Helix07 souhaitait chercher un peu par lui-même, mais ton intention est louable.

    Si je puis me permettre, je ferai quelques menues remarques sur ce script :
    La ligne 4 n'apporte rien, sauf si tu mets la ligne 1 en commentaire pour débuger l'action de dossier.

    Les lignes 5 à 7 sont judicieuses dans le cas où les items ajoutés dans le dossier sont eux-mêmes des dossiers pouvant contenir des images.
    Cependant, la demande de Helix07 ne portait que sur l'ajout de paire de fichiers mp4 et jpg, donc sans sous-dossier. De plus le cas d'ajout de fichiers invisibles (commençant par ".") si il est juste en théorie, est peu probable : il faut être tordu pour mettre les fichiers invisibles en mode visibles, le temps de les déposer dans un dossier où on ne veut pas qu'ils soient !

    Les lignes 8 à 16 peuvent être simplement remplacées par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tell Application "Finder" to delete these_files
    En effet, les actions Finder comme "delete" ou "move" savent interpréter directement des liste d'alias : Merci Apple !

    Pour le reste, il y a plusieurs façons possible d'écrire le script et celle-ci fonctionne. Merci à toi
    Cordialement

  6. #6
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 17
    Points
    17
    Par défaut
    salut PBELL,




    Mais j'avais prévu d'expliquer le code parti par parti.
    Voilà j’expliquerai tout ce code plus tard, parce que la prochaine fois que tu auras un problème tu pourras peut-être le régler toi-même.

    Parlons du code.

    Je savais bien que la ligne 4 apportait rien mais ce n'était que pour gagner du temps lors de la retranscription car je n'utilisais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    end adding folder items
    mais étant donné que je ne suis pas administrateur sur le Mac j'ai utilisés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set this_folder to (choose folder with prompt "Pick the folder containing the images to process:") as string
    pour sélectionner le dossier.

    Explique du code.

    il faut « dire» à Apple script que lors de l’ajout de fichiers on veux qu’il fasse ces actions




    avec
    Il faut créer son script en l'entourant du « handler » adéquat qui dépend de l'action.(Ici action effectuer lors de l’ ajouts de fichiers)
    Phrase extraite du tutoriel de PBELL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    --le code a effectuer
    end adding folder items

    Comme PBELL l'a dit cette ligne ne sert à rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set this_folder to Mon_Dossier as string

    Ces lignes là servent à enregistrer dans une variable la liste des fichiers qui sont des images.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    tell application "System Events"
    	set these_files to every file of folder this_folder ¬
     whose name does not start with¬
     «*.*» and (file type is "TIFF"¬
     or file type is "JPEG" or name extension is "tiff" ¬
     or name extension is "tif"¬
     or name extension is "jpeg" or name extension is "jpg")
    end tell


    Enfin ces dernières lignes servent à supprimé les fichiers de la liste un par un.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    repeat with i from 1 to the count of these_files
    	set this_file to (item i of these_files as alias)
     
    	tell application "Finder"
    		move this_file to trash
    	end tell
     
     
    end repeat

    Cordialement Jules Michael

Discussions similaires

  1. débutant sur dev++
    Par artotal dans le forum Dev-C++
    Réponses: 12
    Dernier message: 28/08/2005, 15h09
  2. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51
  3. Pb de débutant sur les pointeurs!!!
    Par benji17c dans le forum C
    Réponses: 6
    Dernier message: 30/09/2003, 17h50
  4. [Kylix] Re Re: débutant sur Kylix et Linux.....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/06/2002, 22h53
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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