[zenity] dossier récemment utilisés (résolu)

Applications, problèmes de configuration réseau
Avatar de l’utilisateur
mimile
Maître du Kyudo
Messages : 1507
Inscription : lun. 14 nov. 2011, 10:21
Localisation : Seraing (Belgique)

[zenity] dossier récemment utilisés (résolu)

Message par mimile »

Bonjour,

J'ai un petit script bash qui permet d'uploader de manière très simple une image quelconque.

Le principe est que le programme de capture d'écran est configuré pour stocker la capture dans un dossier ~/Screenshots sous forme d'une image *.png

Mon script qui démarre d'un clic de souris sur un raccourci dans la barre des tâches est sensé se loger dans le dossier ~/Screenshots pour afficher son contenu.

Pour cela, il y a une instruction cd ~/Screenshots dans le script qui ensuite affiche son contenu.

On sélectionne l'image souhaitée et on valide ; le reste du script upload l'image vers imageshack.us qui renvoie non seulement l'URL de l'image normale mais également l'URL du thumbnail qui lui est associé.

Illustration :

Image

Voici le script pour ceux que ça intéresse :

Code : Tout sélectionner

##!/bin/bash
# 

myver='0.2'
CURL=$(which curl)

LINK1=$(mktemp /tmp/link1.XXXXXXXXXX)
TMPFILE=$(mktemp /tmp/imageshack.XXXXXXXXXX) || exit 1

cleanup() {
        rm -rf $TMPFILE && rm -rf $LINK1
        [ "$1" ] && exit $1
}

## Choix dans le répertoire ~/screenshots de l'image à uploader

         cd ~/Screenshots 
   
	 IMAGE=$(zenity --title="Cliquez sur l'image à uploader" --file-selection)

	 if [ "${PIPESTATUS[0]}" != "0" ]; then
  	 zenity --msgbox="aucune image sélectionnée ! fin de programme "
         cleanup
	 exit
	 fi

## Conversion du fichier *.png en *.jpg pour compatibilité avec imageshack-us - extrapolé du script
## convert-jpg.sh qui se trouve dans /home/okapi/.gnome2/nautilus-scripts

jpg_file=`echo "$IMAGE" | sed 's/\.\w*$/.jpg/'`

## La ligne ci-dessus remplace l'extension de l'image par jpg sans toutefois modifier son format, ce qui
## suffit parfois à tromper imageshack-us qui rejette les images avec extension *.png. Toutefois,
## on peut effectivement créer une version de l'image au format jpg en exécutant la ligne ci-dessous

	/usr/bin/convert -quality 90 "$IMAGE" jpeg:"$jpg_file"

## pour ne pas encombrer le répertoire screenshots avec des doublons *.png / *.jpg on supprime alors l'image *.png

	rm $IMAGE

## On uploade l'image convertie puis on prélève les URL (thumbnail et image) et on met dans le clipboard l'URL
## de l'image

img="$jpg_file"

	$CURL -H Expect: -F fileupload="@${img}" -F xml=yes -# http://www.imageshack.us/index.php > $TMPFILE

link0=$(cat $TMPFILE | grep -E "<thumb_link>(.*)</thumb_link>" | sed 's|<thumb_link>\(.*\)</thumb_link>|\1|')
link1=$(cat $TMPFILE | grep -E "<image_link>(.*)</image_link>" | sed 's|<image_link>\(.*\)</image_link>|\1|')
	cat $TMPFILE | grep -E "<image_link>(.*)</image_link>" | sed 's|<image_link>\(.*\)</image_link>|\1|' > $LINK1

	xclip -in -selection c < $LINK1

zenity --info --width=350 --height=75 title="Téléchargement réussi" --text="l'image $IMAGE a été uploadée correctement: \n\n Thumbnail: \n $link0 \n\n Image: \n $link1"

## Si on a pas converti l'image, on lui rend son extension d'origine : *.png

# png_file=`echo "$jpg_file" | sed 's/\.\w*$/.png/'`

cleanup
exit


Or, de toute évidence, l'instruction cd ~/Screenshots ne s'exécute pas et l'instruction suivante ouvre alors un dossier nommé "récemment utilisés" ce qui m'oblige à partir à la recherche de mon image et qui rend donc le script moins souple.

Je précise que ce script fonctionne parfaitement sous toutes les versions de Linux que j'ai en multiple boot (Lenny, Squeeze, LMDE).

Si quelqu'un pouvait m'expliquer pourquoi cette instruction n'est pas exécutée correctement ...

Merci d'avance
Dernière modification par mimile le jeu. 01 déc. 2011, 12:54, modifié 2 fois.
La TV ? J'adore la TV. Je peux rester des heures devant la TV ... et même, parfois, il m'arrive de l'allumer ...
Image
(Jean-Luc GODARD)
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [script bash] problème de loggin

Message par tuxce »

cd n'ouvre rien, il ne fait que changer de dossier.
Par contre, la fenêtre de sélection de fichier de GTK qui est ouverte par zenity propose ces dossiers virtuels par défaut.
Modifies:

Code : Tout sélectionner

IMAGE=$(zenity --title="Cliquez sur l'image à uploader" --file-selection)
par

Code : Tout sélectionner

IMAGE=$(zenity --title="Cliquez sur l'image à uploader" --file-selection --filename 123)
le "123" est complètement aléatoire, il permet juste d'indiquer à zenity qu'on veut un fichier dans le dossier courant.
mimile a écrit :Je précise que ce script fonctionne parfaitement sous toutes les versions de Linux que j'ai en multiple boot (Lenny, Squeeze, LMDE).
Tu spécifies cela à chacun de tes posts, pourquoi pas, seulement, il faut garder à l'esprit que c'est rarement la distribution (et non versions de Linux) qui fait qu'il y a un changement mais le soft que t'utilises; en l'occurrence, ni lenny, ni squeeze et encore moins lmde (mint ?), n'ont gtk3.
Avatar de l’utilisateur
mimile
Maître du Kyudo
Messages : 1507
Inscription : lun. 14 nov. 2011, 10:21
Localisation : Seraing (Belgique)

Re: [script bash] problème de loggin (résolu)

Message par mimile »

Merci pour ta réponse qui est la bonne.

Maintenant, mon script ouvre bel et bien le dossier ~/Screenshots.

Il est vrai que dans mon message initial, j'avais bêtement écrit que cd ouvrait le dossier visé ; c'était évidemment une faute d'attention.

Maintenant, si je prends la peine de préciser que tel ou tel script fonctionne bien sur d'autres versions de Linux, c'est uniquement pour éviter d'avoir des réponses qui viseraient des points de détail sans intérêt.

Cela dit, je ne le ferai plus. Promis :humour:

A ma décharge, il faut dire que je n'ai strictement aucune formation en informatique et que ce que je sais, je l'ai appris sur le tas, ce qui implique évidemment des lacunes qu'un expert comme toi doit trouver ridicules.

Par exemple, des notions comme GTK2 ou GTK3 et d'innombrables autres n'ont pour moi strictement aucune signification.

Je fais ce que je peux avec mes petits moyens ...

Quoi qu'il en soit, merci encore.

Amicalement
La TV ? J'adore la TV. Je peux rester des heures devant la TV ... et même, parfois, il m'arrive de l'allumer ...
Image
(Jean-Luc GODARD)
Répondre