Qui saurait automatiser le déplacement de fichiers sur Mac

Démarré par stg, Septembre 05, 2011, 17:28:22

« précédent - suivant »

stg

Je suis en train d'essayer de programmer un script, sur Mac, capable de trier automatiquement les photos déposées dans un dossier

La logique est simple. Il faudrait que, dans un dossier appelé DEPOSE, il y ait un script qui prenne les docs et les déplace dans d'autres dossiers, en fonction de leur extension :

   Dans  < DEPOSE >   

            si   [ extension fichier ] =  .JPG   -->  transfert vers  dossier   < Images Jpeg >
            si   [ extension fichier ] =  .NEF  -->  transfert vers  dossier   < Originaux Nikon >
            si   [ extension fichier ] =  .CR2  -->  transfert vers  dossier   < Originaux Canon >
            si   [ extension fichier ] =  .PSD  -->  transfert vers  dossier   < Images Retouchées >

J'ai essayé avec Automator, mais j'arrive pas. Vu tous les Kadors qu'il y a ici, je suis sûr que quelqu'un va savoir
     

sphma

Ah j'avoue que le truc m'intéresse aussi ! 

Séparer automatiquement les RAW et les JPEG dans un dossier me serait utile sur le disque où je vide toutes mes images en attendant de m'en occuper.

Mais tu crois qu'un Mac peut faire ça ?

Pascal Méheut

Ca se fait facilement avec un peu d'AppleScript couplé à Automator entre autres.

stg

Citation de: Pascal Méheut le Septembre 05, 2011, 18:17:16
Ca se fait facilement avec un peu d'AppleScript couplé à Automator entre autres.
Tu dis "ca se fait facilement".

Je n'en doute pas mais si je pose la question c'est que je n'ai pas réussi à le faire. Apparemment Automator sait transférer tous les fichiers d'un dossier, mais ne sait pas transférer uniquement ceux qui correspondent à un type précis.

Ca me trouble quand tu dis que c'est facile car je ne trouve pas. Si tu as la recette je veux bien, ça me dépannerait sacrément

stg

Citation de: erickb le Septembre 05, 2011, 18:22:05
facile en php avec le serveur intégré des MAC
tu sélectionnes les extensions que tu veux et tu les bouges
Tu n'as pas dû lire ma question...  :)
Je ne veux pas les sélectionner moi même, je voudrais que ca se fasse tout seul... avec un dossier de destination différent selon le type de fichier

Pascal Méheut

La phrase exacte était "Avec AppleScript"...

En Automator, je ne sais pas mais tu as essayé de faire "Filtrer les éléments du Finder" suivi par "Déplacer" ?

LSCC

Citation de: stg le Septembre 05, 2011, 17:28:22
Je suis en train d'essayer de programmer un script, sur Mac, capable de trier automatiquement les photos déposées dans un dossier

La logique est simple. Il faudrait que, dans un dossier appelé DEPOSE, il y ait un script qui prenne les docs et les déplace dans d'autres dossiers, en fonction de leur extension :

   Dans  < DEPOSE >   

            si   [ extension fichier ] =  .JPG   -->  transfert vers  dossier   < Images Jpeg >
            si   [ extension fichier ] =  .NEF  -->  transfert vers  dossier   < Originaux Nikon >
            si   [ extension fichier ] =  .CR2  -->  transfert vers  dossier   < Originaux Canon >
            si   [ extension fichier ] =  .PSD  -->  transfert vers  dossier   < Images Retouchées >

J'ai essayé avec Automator, mais j'arrive pas. Vu tous les Kadors qu'il y a ici, je suis sûr que quelqu'un va savoir
     
Tu paies combien ?  ;D ;D ;D
Normalement avec Automator, ça devrait pouvoir se faire.
Mais je fais parti de ceux qui n'ont jamais pris la peine de se pencher dessus.

Maintenant, il existe une alternative :
Spotlight (la loupe).
Que tu obtiens en haut à gauche de ton écran ou par le raccourci cmd+F (ex pomme+F).
Dès lors, tu tapes ".jpg" pour tes JPEG ou ".NEF'' pour tes NEF.
Nota : ne pas oublier le point au début, très important.
Et tu sélectionne le volume concerné (ce mac ou le DD externe désiré).
Après ?

Si tu as préparé ton dossier de destination (voir l'avoir ouvert sur le bureau), il ne te reste plus qu'à sélectionner la liste et effectuer un "glisser-déposer" de la fenêtre de recherche vers celle de destination.

Pour moi, c'est ce qu'il y aurait de plus simple.

Maintenant, s'il faut automatiser cela à chaque import => automator est ton seul salut.

Je t'envoie la facture ?
;)

stg

Citation de: LSCC le Septembre 05, 2011, 19:38:36
Tu paies combien ?  ;D ;D ;D
Normalement avec Automator, ça devrait pouvoir se faire.
Mais je fais parti de ceux qui n'ont jamais pris la peine de se pencher dessus.

Maintenant, il existe une alternative :
Spotlight (la loupe).
Que tu obtiens en haut à gauche de ton écran ou par le raccourci cmd+F (ex pomme+F).
Dès lors, tu tapes ".jpg" pour tes JPEG ou ".NEF'' pour tes NEF.
Nota : ne pas oublier le point au début, très important.
Et tu sélectionne le volume concerné (ce mac ou le DD externe désiré).
Après ?

Si tu as préparé ton dossier de destination (voir l'avoir ouvert sur le bureau), il ne te reste plus qu'à sélectionner la liste et effectuer un "glisser-déposer" de la fenêtre de recherche vers celle de destination.

Pour moi, c'est ce qu'il y aurait de plus simple.

Maintenant, s'il faut automatiser cela à chaque import => automator est ton seul salut.

Je t'envoie la facture ?
;)
Ca, je sais faire. Mais ce n'est pas un automatisme !
Moi, ce que je voudrais, c'est que l'action se déclenche automatiquement dès qu'un fichier tombe dans le dossier, sans avoir à lancer quoi que ce soit.
Je l'ai déjà fait pour redimensionner des photos. J'ai fait un dossier "BasseDef" et j'ai lancé un script automator qui prend tout ce que je mets dedans et le redimensionne, sans que j'aie à faire quoi que ce soit. C'est superpratique.

Citation de: LSCC le Septembre 05, 2011, 19:38:36
Normalement avec Automator, ça devrait pouvoir se faire.

Ben... normalement, ca devrait. Mais pratiquement, j'y arrive pas! D'où ma question d'homme dçu que normalement ca le fait pas  ;) ;)

Je me suis dit que je pourrais faire la même chose pour trier ou séparer les photos en fonction de leur type, facile à reconnaître via l'extension, mais je n'arrive pas à programmer un transfert sélectif, d'où ma question.

Citation de: LSCC le Septembre 05, 2011, 19:38:36

Tu paies combien ?  ;D ;D ;D

Normalement avec Automator, ça devrait pouvoir se faire.

Maintenant, s'il faut automatiser cela à chaque import => automator est ton seul salut.

Je t'envoie la facture ?
;)
C'est un peu tôt pour la facture, mais si tu as la solution, je ne suis pas contre ... "normalement" !   ;D

stg

Citation de: Pascal Méheut le Septembre 05, 2011, 19:20:49
La phrase exacte était "Avec AppleScript"...

En Automator, je ne sais pas mais tu as essayé de faire "Filtrer les éléments du Finder" suivi par "Déplacer" ?

J'avais bien parlé aussi d'Automator. En fait peu importe les moyens, ce qui m'importe c'est le résultat
Oui, j'ai essayé "Filtrer les éléments du Fionder". Mais rien à faire, la commande "Déplacer" a l'air d'être globale.
Tu vas rire, mais je galère là dessus depuis ce matin, persuadé que ca doit être évident. C'était un peu la raison de mon appel aux spécialistes.
En même temps, ça me rassure un peu  ;)

Pascal Méheut

Je ne suis pas sur d'avoir le temps ce soir ou demain mais sinon je te ferai ca volontiers.

stg

J'avance...
En fait je pense que j'ai voulu lancer trop de tests à la fois.
Si je fais un script pour un seul type de fichier, ça marche. Visiblement il faut autant de scripts que de types de fichiers à traiter. Mais c'est un peu vicieux, car Automator tourne un peu en mode discret...

LSCC

Si tu veux que l'action se fasse automatiquement dès que tu déposes des images, il ne doit y avoir que AppleScript pour cela.

stg

Bon, je laisse tomber pour ce soir. Ca a l'air vraiment + compliqué que je pensais.
Si on teste avec 1 fichier, ça marche. Mais si on en envoi plusieurs, ca plante et le script ne repart pas.
Visiblement, si le script démarre pendant que le fichier est en train d'arriver dans le dossier, il bloque.
Idem si on mélange différents types de fichiers: ceux qui ont été ignorés à la première passe restent en rade.  ca explique mes déboires...
Je chercherai à nouveau plus tard.

Si vous trouvez avant moi ca peut intéresser tous ceux qui bossent en RAW + JPEG...

LSCC

Sincèrement, sans botter en touche, quel est l'intérêt de stocker à part les jpg, les NEF et les autres ?


morvandiau


LSCC

Citation de: morvandiau le Septembre 05, 2011, 21:38:36
mon œil ! ;D

Morvandiau, enf...
:D :D :D

Pero, mes RAW (NEF) sont dans le dossier Images rangés par Aperture. Donc, tout baigne.  ;D

makpro

#16
en script bash ca se fait les doigts dans le nez

#!/bin/bash
jpegfolder="/home/..............."
find . -type f -name '*.jpg' -exec mv '{}' "$jpegfolder" \;

voici le debut de la solution.....la suite demain....


makpro

Bonjour,

voici un script shell qui fait le travail. Attention je ne suis pas responsable des dégats occasionné par l'emploi de ce script.

Les répertoires que j'ai mis pour les dossiers sont a modifier en fonction de vos machines.

Citation
#!/bin/bash

dossier_origine="/home/NomDeLutilisateur/pictures"
dossier_jpeg="/home/NomDeLutilisateur/pictures/mes jpegs"
dossier_raw_canon="/home/NomDeLutilisateur/pictures/mes raws Canon"
dossier_raw_nikon="/home/NomDeLutilisateur/pictures/mes raws Nikon"
dossier_psd="/home/NomDeLutilisateur/pictures/mes psd"

# =======================================================================
# test parametres
# =======================================================================
[[ -z $dossier_origine ]] && echo "la variable dossier_origine n'est pas renseignee" && exit 1
[[ -z $dossier_jpeg ]] && echo "la variable dossier_jpeg n'est pas renseignee" && exit 1
[[ -z $dossier_raw_canon ]] && echo "la variable dossier_raw_canon n'est pas renseignee" && exit 1
[[ -z $dossier_raw_nikon ]] && echo "la variable dossier_raw_nikon n'est pas renseignee" && exit 1
[[ -z $dossier_psd ]] && echo "la variable dossier_psd n'est pas renseignee" && exit 1

# =======================================================================
# creation des dossiers
# =======================================================================
echo "creation des dossiers"

mkdir -p "$dossier_origine"
mkdir -p "$dossier_jpeg"
mkdir -p "$dossier_raw_canon"
mkdir -p "$dossier_raw_nikon"
mkdir -p "$dossier_psd"

# =======================================================================
# test de la creation
# =======================================================================
[[ -d $dossier_origine ]] || echo "le dossier $dossier_origine n'a pas ete cree" || exit 1
[[ -d $dossier_jpeg ]] || echo "le dossier $dossier_jpeg n'a pas ete cree" || exit 1
[[ -d $dossier_raw_canon ]] || echo "le dossier $dossier_raw_canon n'a pas ete cree" || exit 1
[[ -d $dossier_raw_nikon ]] || echo "le dossier $dossier_raw_nikon n'a pas ete cree" || exit 1
[[ -d $dossier_psd ]] || echo "le dossier $dossier_psd n'a pas ete cree" || exit 1

cd "$dossier_origine"

find . -maxdepth 1 -type f -name '*.JPG' -exec mv '{}' "$dossier_jpeg" \;

find . -maxdepth 1 -type f -name '*.CR2' -exec mv '{}' "$dossier_raw_canon" \;

find . -maxdepth 1 -type f -name '*.NEF' -exec mv '{}' "$dossier_raw_nikon" \;

find . -maxdepth 1 -type f -name '*.PSD' -exec mv '{}' "$dossier_psd" \;

exit 0

1) Ce script peut être encapsulé dans un AppleScript afin de lui passer les noms des 5 dossiers. En plus dans l'applescript on peut faire une boucle qui se lance a intervalle régulier.

2) L'autre facon d'utiliser ce script c'est de le copier dans un fichier de texte (j'insiste !!! TEXTE avec textedit) par exemple /home/nomduuser/copy_images.command
Puis de lancer la commande terminal chmod +x /home/nomduuser/copy_images.command
Puis faire un raccourci sur ce fichier et pour le lancer double clicker dessus.

Pour ceux qui ne connaissent pas le terminal, ne pas essayer la méthode 2) Attendre qu'une âme charitable fasse celà en applescript

Pascal Méheut

Ton script va ignorer les .jpg si l'extension est en minuscule. Utiliser find avec -maxdepth 1 marche mais pourquoi ne pas faire un mv directement ? le -type f n'étant pas indispensable à mon avis.

On a alors simplement :

mv *.jpg *.JPG *.jpeg *.JPEG "$dossier_jpeg"

par exemple.

Après, on peut mettre le shell script en action de dossier effectivement.


makpro

Bonjour,

merci pour tes remarques

1) jpg ou JPG. il demandait JPG  ;D mais on peut changer. Si on veut toutes les sortes de jpeg, il faudra modifier la commande find
2) j'ai mis find au cas ou quelqun voudrait descendre plus bas dans la hierarchie des dossiers. Par exemple:

./Oiseaux/Merle
./Oiseaux/Corbeau
etc

Et puis find permet de contourner un dépassement de capacité du buffer d'entrée de la command mv dans le cas d'un grand nombre de fichiers

Pascal Méheut


Lambs

Voir le logiciel HAZEL couplé avec automator cela devrait le faire.
http://www.noodlesoft.com/hazel.php

bon courage.

stg

Alors là, franchement, chapeau !

Je suis depuis hier sur différents essais avec Automator et, sauf erreur ou bévue de ma part, ce que je voulais faire n'est pas possible avec Automator car le script se bloque à la moindre erreur. Transférer tous les docs d'un dossier vers un autre est possible, mais mieux vaut de pas compter sur les tests dont j'avais besoin pour les tris.
J'ai passé la nuit à explorer les forums spécialisés et je me suis aperçu que pour les actions un tout petit peu complexes, eh bien il fallait mettre les mains dans le cambouis. Automator est trop basique.

Un grand merci à makpro pour son script, mais aussi à Pascal pour ses améliorations. Je vais peut être vous surprendre, mais figurez-vous que j'ai tout compris !  Je viens de tester, et ça marche. Vraiment merci et bravo à vous.
En pratique, ce que j'ai fait:

  - je dispose d'un disque NAS avec une prise USB qui me permet de transférer toutes mes images automatiquement dans un dossier dédié.  Donc, dès qu'une carte mémoire est pleine (ou pas), je branche et ça copie tout seul.
  - le script sert à trier les photos automatiquement pour les envoyer dans différents dossiers, en fonction des appareils et du type de fichier (j'ai l'habitude de sauvegarder mes Raw, pas mes Jpeg)

La seule chose où j'ai un doute c'est sur l'effacement des photos si déjà existantes. Pour mon usage personnel le risque est minime mais plusieurs appareils différents peuvent produire les mêmes noms de fichiers
Je sais bien qu'on pouvait faire ca à la main, mais les automatismes, c'est aussi la raison d'être des micros  ;)

Bravo, merci et chouette, chouette, chouette ce forum !

Pascal Méheut

Ceci dit, tu devrais jeter un oeil à Hazel dont le lien a été donné par Lambs. Ca a l'air pas mal.

makpro

Citation de: stg le Septembre 06, 2011, 13:57:09
La seule chose où j'ai un doute c'est sur l'effacement des photos si déjà existantes. Pour mon usage personnel le risque est minime mais plusieurs appareils différents peuvent produire les mêmes noms de fichiers

On peut remédier a ce probleme avant de faire le "move (mv)". Si j'ai du temps j'implémente celà avec un renommage automatique de la photo en double en accolant la date et l'heure ppour ne pas écraser celle qui se trouvait là avant