Journal Script inintéressant

Posté par  .
Étiquettes : aucune
0
30
oct.
2004
C'est un script perso qui sert à redimensionner et envoyer par mail une série d'images sélectionnées dans nautilus. Il m'a été offert généreusement il y a quelques temps dans ces pages, je l'ai un peu trafiqué, et je le met à disposition parce qu'une âme égarée m'a demandé si c'était possible. Il manque plein de choses, par exemple vérifier qu'on est pas en train de redimensionner des fichiers word, vérifier qu'on essaye pas d'écrire des images redimensionnées sur un Cd-rom, vérifier que les images originales ne sont pas ridiculement petites, ce genre de choses. Je vous avais prévenu dans le titre que c'était inintéressant, ne venez pas vous plaindre.

Toute âme généreuse qui voudrait contribuer à rendre ce programme plus robuste, plus élégant, plus pratique, etc... est invitée à le faire ici même. Je suis preneur d'une traduction en python, vu que j'aimerais me mettre à ce langage.


#!/bin/sh
# On choppe le répertoire courant... depuis Nautilus, aucun problème
# sauf si vous êtes assez tordus pour faire des sélections sur plusieurs
# répertoires.
# Par contre si vous utilisez ce script dans un shell il prend le
# répertoire courant, donc ne vous amusez pas avec des invocations
# exotiques, ou réparez ça d'abord..
if [ "x$NAUTILUS_SCRIPT_CURRENT_URI" = "x" ]; then
workdir=$(pwd) #FIXME
else
workdir=$(echo $NAUTILUS_SCRIPT_CURRENT_URI| sed 's/file:\/\///g')
fi

res=$(zenity --list --title "$workdir" --height=200 --radiolist --column "" --column "Taille" TRUE 200x200 FALSE 150x150 FALSE 100x100)

[ "x$res" == "x" ] && exit

# On fait un répertoire pour les images redimensionnées
# Au final, on peut aussi les coller dans /tmp
mkdir -p $workdir/$res

# On bosse...
while [ $# -gt 0 ];
do
f=$1
file=$(echo $f | sed 's/"$NAUTILUS_SCRIPT_CURRENT_URI"//g')
# On place une copie redimensionnée de l'image dans le répertoire
convert $workdir/$file -scale $res $workdir/$res/$file
# On prépare la liste de fichiers à attacher
file=$(echo file://$workdir/$res/$file)
if [ "x$attachments" = "x" ]; then
attachments=$(echo $file)
else
attachments=$(echo $attachments, $file)
fi
shift
done
# On rajoute des quotes autour des arguments pour limiter certaines
# catastrophes...
attachments=$(echo \'$attachments\')

# On invoque le mailer avec les fichiers à attacher en argument
# Le bête mozilla-thunderbird -remote est buggé, d'où le chemin complet vers
# xremote-client
/usr/lib/mozilla-thunderbird/mozilla-thunderbird-xremote-client "xfeDoCommand(composeMessage,attachment=$attachments)"

# Malgré tout, le truc se vautre en beauté si les noms de fichier sont bizarres,
# comportent des espaces ou ce genre de chose.
# Le stripping est laissé en exercice au lecteur.

  • # C'est plus possible

    Posté par  . Évalué à 0.

    Je ne suis pas un intaigriste en général mais je trouve surprenant que des gens parlant de Linux parle sans cesse de fichier Word au lieux de dire traitement de texte ou texte etc...

    Pour exemple ce journal :
    redimensionner des fichiers word

    Ou le LOGIN n° 121 (Octobre 2004) page 18 (en haut à droite) :
    Les derniers documents Word que j'ai ouverts

    S'il vous plait, un petit effort. C'est vraiment pas dur, Microsoft Word ne tourne pas nativement sur Linux...
    • [^] # Re: C'est plus possible

      Posté par  (site web personnel) . Évalué à 1.

      C'est vrai que dire "Fichier d'un traitement de texte de Microsoft qui ne tourne que sous un système d'exploitation propriétaire" c'est tout de suite plus facile à dire et à comprendre que "Fichier Word" que personne ne comprend.
      • [^] # Re: C'est plus possible

        Posté par  . Évalué à -1.

        Un simple "fichier texte" serait parfait. C'est ce genre de paroles qui emmènent les gens à confondre traitement de texte et MS Word ou Internet et Internet Explorer ou même pire ordinateur et MS Windows (bien que ce dernier cas doit être assez rare, je l'admet).
        • [^] # Re: C'est plus possible

          Posté par  . Évalué à 4.

          Non pour moi un fichier texte c'est un fichier qui contient de l'ASCII ou l'encoding que tu veux qui peut s'ouvrir avec n'importe quel editeur de texte. Mais certainement pas un tas de données binaires necessitant l'application adequat pour etre ouverte.

          Un fichier texte ca se manipule avec cat, grep, awk, sed, perl, des pipes, des redirections de flux etc.

          Ta solution est pire que le mal !
    • [^] # Re: C'est plus possible

      Posté par  . Évalué à -1.

      Je suis d'accord avec toi !
      Il suffit de dire un document texte, ou OpenOffice (qui lui tourne sous windows!).
      Alors un effort !
    • [^] # Re: C'est plus possible

      Posté par  . Évalué à 6.

      Tu réagis vite, dis-moi. Il peut bien avoir des fichiers .doc dans son répertoire avec des images. C'est peut-être même une anecdote arrivée pendant qu'il travaillait sur ce script.

      Les fichiers .doc sont bien des fichiers Word parce que nous savons ici que .doc est un mauvais format d'échange et qu'il devrait se cantonner à Word.

      Si tu me prouves qu'il a parlé de fichier Word pour tout sauf du .doc, là je serai d'accord avec toi.
    • [^] # Woucha !

      Posté par  . Évalué à 4.

      Si, là t'es un peu intégriste, quand même. J'ai écrit "un fichier word" au sens "un fichier qui n'a pas vocation à être modifié avec convert, par exemple un fichier .doc", de la même manière que quand j'écris "vérifier qu'on est pas en train d'écrire sur le cd-rom", ça sous-entend "vérifier qu'on est pas en train d'essayer d'écrire sur un média accessible en lecture seule, par exemple le lecteur de cd-rom".

      Je suis pour l'évangélisme, et j'aurais pû choisir un autre exemple, mais la rigidité de certains zélotes ne fait sûrement pas avancer les choses. Par exemple, j'ai pas lu le login dont tu parles, mais apparemment, en contexte, il ne s'agit pas de n'importe quel fichier de texte: il s'agit de fichiers au format microsoft word, type mime "application/ms-word", raccourci sémantique "Fichier Word". Appelons un chat, un chat, une pipe, une pipe, et un fichier word, un fichier word.

      Alors, personne pour me le traduire en python ?
      • [^] # Re: Woucha !

        Posté par  . Évalué à 2.

        Ben puisque tu voulais t'y mettre, voilà un bon sujet pour débuter ! :-)
  • # C'est moi l'âme égarée ...

    Posté par  . Évalué à 1.

    ah ,bien, merci beaucoup !!

    Ce script prend toute sa puisance si on l'intègre à nautilus :
    je cite ton commentaire dans le forum (pour ceux qui ne lirons que ce journal) :"(le) rendre éxécutable et (le) placer dans .gnome2/nautilus-scripts pour qu'il devienne accessible du clic droit" .

    pour le contrôle des erreurs , peut-être pourrait-tu utiliser les codes d'erreur de convert ?
  • # Pour améliorer la portabilité

    Posté par  . Évalué à 3.

    On peut peut-être remplacer /usr/lib/mozilla-thunderbird/mozilla-thunderbird-xremote-client par `which mozilla-thunderbird-xremote-client` .
  • # Mailer

    Posté par  . Évalué à 1.

     # On invoque le mailer avec les fichiers à attacher en argument
    
    # Le bête mozilla-thunderbird -remote est buggé, d'où le chemin complet vers
    
    # xremote-client
    
    /usr/lib/mozilla-thunderbird/mozilla-thunderbird-xremote-client "xfeDoCommand(composeMessage,attachment=$attachments)" 
    
    et si on a Evolution quel est la syntaxe ?
    
    stephane
    • [^] # Re: Mailer

      Posté par  . Évalué à 1.

      evolution mailto:?attachment=$attachments

      Mais la forme des fichiers attachés doit être un peu différente, il n'accepte pas les listes de fichiers séparées par une virgule, j'ai réussi à lui faire avaler une chaine avec la syntaxe:

      attachment=file:///chemin/du/fichier/un&attachment=file:///chemin/du/fichier/deux etc...

      donc dans la boucle il faut rajouter "&attachment=" au lieu de ",".

      Pour le commentaire sur le mozilla-thunderbird-xremote-client en dur, effectivement, j'aurais bien voulu remplacer ça par un $(which mozilla-thunderbird-xremote-client), malheureusement /usr/lib n'est pas dans mon $PATH (et la plupart du temps, c'est comme ça, et à juste titre). À la limite on peut essayer avec un $(locate mozilla-thunderbird-xremote-client), mais sur ma machine ça renvoie deux lignes, et sur d'autres, pour peu que la base ne soit pas à jour, ça peut donner des résultats pittoresques.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.