dimanche 27 mars 2011

Thunderbird - Gestion des pièces jointes - bis

Un problème se présente à l'utilisation : Comme mamie se sert bien de son e-mail et que c'est sympa de lui envoyer des photos par mail, tout le monde le fait! Résultat son dossier Photos est plein de photo rangées n'importe comment! (N.B: les photos reçues par mails sont copiées automatiquement dans son dossier "Photos" voir : Gestion des pièces jointes )

Or, quand mamie veut retrouver la dernière photo qu'on lui a envoyé, elle est obligée de parcourir tout le dossier pour tomber dessus. Ne trouvant pas ça très pratique, Mamie m'a demandé si c'était possible que les photos soit classées dans l'ordre où elle les reçoit.

Bon, avec Attachement Extractor, normalement il y a une possibilité pour renommer les pièces jointes mais ça n'a pas l'air de marcher. Et je ne sais pas si ça le fait avec la routine d'extraction automatique.
Donc, comme à chaque fois, si l'ordinateur ne fait pas ce qu'on veut, il suffit d'écrire un petit script bash pour le faire marcher à la baguette! 

- Oh non pas un script horrible de la mort qui tue qu'on comprends rien :-(
- Mais non, t'inquiète le script fait que 3 lignes
- Ah c'est cool alors :-)
- Mais non, t'inquiète, il y a une ligne qui est vraiment horrible! Gnak! Gnak! Gnak!!!
- Ca m'aurait étonné ...  :-(


Donc comme promis voici le petit script :
Code:
#!/bin/bash
sleep 30
cd ~/Photos/.renommer
rename 's/^/use POSIX qw(strftime);strftime("%Y-%m-%d_", localtime(time))/e' *
mv * ~/Photos
exit 0;

Explication :
1) Avec cd on se met dans le bon répertoire : les photos extraitent du mail sont envoyées dans le dossier caché .renommer
2) On utilise la fonction rename pour modifier le nom de la photo. C'est là que ça se complique :
rename 's/ancien nom/nouveau nom/' ficheràrenommer
Le changement de nom se fait avec une expression perl. Et là on fait appel à POSIX pour renvoyer la date du jour.
s permet de substituer l'ancien nom au nouveau nom
l'^ permet de prendre tout les noms en entier
use POSIX bla bla : j'ai pas tout compris, j'ai fait un peu au pif en m'inspirant de trucs trouvés sur internet.
strftime("%Y-%m-%d_", localtime(time) renvoie la date comme ça : 2011-03-27_
le e à la fin, je sais pas ce qu'il fout là
l'* permet d'appliquer le renommage à tous les fichiers contenus dans le dossier.

Au final ça donne nomphoto.jpg > 2011-03-27_nomphoto.jpg

3) mv (move)permet de déplacer la totalité des photos maintenant renommées dans le dossier photos.

Ce script est lancé par le script de notification d'arrivée d'un message sur thunderbird (Gestion des pièces jointes).

Et voilà, maintenant les pièces jointes extraites (photos) sont classées par jour de réception. Les nouvelles pièces jointes seront à la fin du dossier photos (ou au début si on classe le dossier par ordre décroissant ce qui est plus simple pour mamie = elle ouvre le dossier et voit tout en haut les dernières photos).


EDIT : Gérer les différents types de pièces jointes

Le fait de renommer les pièces jointes peut-être l'occasion de les redistribuer dans les différents dossiers de Mamie. En effet, plus ça va, plus les gens lui envoient des trucs différents : photos mais aussi diaporama ppt (ou libreoffice ;-) bien sûr!), vidéo, fichier google earth etc...

Je lui ai donc créé un dossier différent avec une icône différente pour chaque type de fichier. Mais c'est pas très pratique car toutes les pièces jointes arrivent dans le dossier photo.
Là solution est très simple ... si si, vraiment très simple :

Il suffit de rajouter au script précédent une ligne pour chaque type d'extension et utiliser la commande move (mv) pour envoyer chaque type de fichier dans le dossier correspondant.

Comme c'est pour les photos qu'il y a le plus d'extensions différentes, je gère les autres type d'extensions et à la fin j'envoie les fichiers restants dans le dossier photo = *.* ou tout simplement *

Pour le script ça donne ça maintenant :
Code:
#!/bin/bash
sleep 30
cd ~/Photos/.renommer
rename 's/^/use POSIX qw(strftime);strftime("%Y-%m-%d_", localtime(time))/e' *

mv *.wmv ~/Vidéo
mv *.avi ~/Vidéo
mv *.flv ~/Vidéo
mv *.mkv ~/Vidéo
mv *.mp4 ~/Vidéo
mv *.mpg ~/Vidéo
mv *.mpeg ~/Vidéo
mv *.mov ~/Vidéo
mv *.vob ~/Vidéo
mv *.asf ~/Vidéo

mv *.kml ~/Lieux
mv *.kmz ~/Lieux

mv * ~/Photos

exit 0;


Ordinateur pour grand-parents, ordinateur pour papy, ordinateur pour personnes âgée, linux pour mamie, linux pour papy, linux pour personne âgée, linux pour grands-parents.

9 commentaires:

  1. Bravo Floflo !
    Tu ne peux pas savoir comme c'est utile et efficace de pouvoir discuter en "live" avec Mamie pour tous les pb du quotidien. La plus puissante de tes inventions est le scan automatique qui nous permet de lire les documents qu'elle nous envoie. On y gagne en efficacité et... en sérénité.
    Et en prime, ça l'occupe bien et diminue sérieusement ses phases d'ennui...
    Quel beau résultat.

    RépondreSupprimer
  2. Ce script ne marche pas chez moi et je ne comprends pas pourquoi
    Voici mon adaptation

    #!/bin/bash
    sleep 30
    cd /home/ubuntu/Dossier Mamie/Photos/.renommer
    rename 's/^/use POSIX qw(strftime);strftime("%Y-%m-%d_", localtime(time))/e' *
    mv * /home/ubuntu/Dossier Mamie/Photos
    exit 0;

    quand je lance le script il me renomme tous les fichiers qui se trouvent dans mon dossier script, ainsi que lui même et il ne me déplace rien...

    une idée ?

    RépondreSupprimer
  3. Bonjour,

    pour le "sleep 30" je ne sais pas si tu en as besoin chez toi, moi je l'ai mis pour attendre que toutes les photos soient extraie et copier sur le disque avant de lancer le renomage. Mais je ne sais pas si c'est utile ou si ce n'est pas trop long.

    Mais c'est pas ça le problème, c'est ton chemin qui ne doit pas marcher: cd /home/ubuntu/Dossier Mamie/Photos/.renommer

    Si le chemin ne marche pas, il ne change pas de dossier et donc applique le renommage dans le dossier actuel = dossier du script

    Pour tester ton chemin il suffit d'ouvrir un terminal http://doc.ubuntu-fr.org/terminal
    et tu écris ta ligne cd /home/ubuntu/Dossier Mamie/Photos/.renommer
    et tu tapes entrer.
    Si tu te déplace bien dans le dossier .renommer , en début de ligne de la console tu vas passer de ça
    mamie@ordi-mamie:~$
    à
    mamie@ordi-mamie:~/Dossier Mamie/Photos/ .renommer$

    Causes possibles du problème :
    Les majuscules/minuscules : attention le chemin est sensible à la casse
    les espaces : le chemin ne gère pas les espaces. Il vaut mieux ne pas mettre d'espaces ou alors mettre le chemin entre guillemets :
    cd /home/ubuntu/Dossier Mamie/Photos/.renommer => a remplacer par
    cd "/home/ubuntu/Dossier Mamie/Photos/.renommer"

    Je vois que le nom d'utilisateur est ubuntu et que tu as créé un "Dossier Mamie" dans ton dossier utilisateur. Tu aurais pu faire plus simple en créant directement comme utilisateur "Mamie" et ton dossier utilisateur est déjà celui de ta mamie et non un dossier à l'intérieur.

    Mais c'est sûr que ton problème vient du chemin. Attention aussi pour la commande mv qui va poser le même problème.

    De façon générale, il faut toujours tester le chemin/les commandes dans un terminal avant de les insérer dans les scripts.

    RépondreSupprimer
  4. PS: je te rappel que ~/ est l'équivalent de /home/nomutilisateur/ chez toi:

    ~/ = /home/ubuntu/

    Ca va plus vite et ça évite de se tromper

    RépondreSupprimer
  5. Bonjour,

    Je me relance dans la configuration de ce PC pour ma grand mère.
    J'ai un soucis avec la gestion des pièces jointes :
    - un mail avec une pièce jointe arrive
    - gnome intégration lance mon script renommer.
    - attachment extractor lance la sauvegarde des pièces jointes
    - Puis attachment extractor lance l'ouverture des pièces jointes
    - 30 secondes après le lancement de mon script renommer, il déplace les pièces jointes enregistrées
    - ce qui a été ouvert disparaît à ce moment !!!
    A priori attachment extractor ouvre le fichier dans le répertoire où il le sauvegarde, pas le fichier du mail donc quand je le déplace avec le script; il disparaît.

    As tu le même problème ? as tu une idée de comment le régler ?

    Merci

    RépondreSupprimer
  6. Bonjour,

    merci de ce retour. Non je n'ai pas constaté le problème car je n'ai pas regardé. Il faut que je vérifie, mais je n'aurait accès à l'ordi que la semaine prochaine.
    J'ai deux solutions à proposer :

    1) tu augmente la durée du sleep ( tu passe de 30s à plusieurs minutes par ex.) mais ta photo disparaitra de toutes façons au bout d'un certain temps... pas cool

    2)Tu laisses les photos dans le dossier temporaire en ne faisant que les copier sans les déplacer, mais ça encombre ... pas cool! (donc tu remplaces la commande mv par cp)

    3) Idem au n°2 mais tu écris un script qui vide ton dossier temporaire chaque fois que tu allume l'ordi.

    Moi j'opterai pour la troisième solution ^^.

    RépondreSupprimer
  7. Ok j'ai vérifié. Moi aussi les PJ disparaissent au bout de 30 sec quand elles sont déplacés.

    J'écris un script comme dans l'option 3 ci-dessus et j'éditerai l'article.

    A +

    RépondreSupprimer
  8. Merci de te pencher sur ce soucis.
    J'avais pensé à une solution de ce type mais j'ai un soucis en cas de la réception de plusieurs mails avec pièces jointes dans la même période d'allumage.
    En effet, les fichiers restants dans ".renommer" suite à la copie, seront réimpactés par le script de déplacement lors de son prochain lancement et alors on va tenter de faire une copie d'un fichier déjà existant et donc on va avoir un message d'avertissement.
    Je continue à réfléchir...

    RépondreSupprimer
  9. Bonne remarque, mais le problème n'est pas là où tu le crois : Avec la commande cp il copie et écrase le fichier sans rien demander (sans message d'avertissement).

    Par contre le problème c'est qu'il renomme à chaque fois les anciennes pièces jointe donc ça finit par donner :
    photo.jpg > 2011_07_28_photo.jpg >2011_07_28_2011_07_28_photo.jpg >2011_07_28_2011_07_28_2011_07_28_photo.jpg etc...

    Solution dans mon post suivant :
    http://ubuntu-pour-mamie.blogspot.com/2011/07/thunderbird-gestion-des-pieces-jointes.html

    RépondreSupprimer