Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/11/2005, à 19:20

camboui

Cherche conseils pour script nautilus

Bonjour à vous !

Je suis un novice total en programation et je voudrais réaliser un script nautilus afin de vérifier et réparer un par2 d'un simple clic droit.

De ce que je comprend et désire ça devrait ressembler à un truc comme :
Ouvrir le terminal en le pointant sur le fichier sélectionné lors du clic droit
Exécuter automatiquement la commande par2 r sur le dit fichier


Est il possible de réaliser cela ?

Quels sont les connaissances requises pour faire un tel script ?

Hors ligne

#2 Le 19/11/2005, à 15:25

camboui

Re : Cherche conseils pour script nautilus

Ah ben j'ai encore une question stupide...

Un bash script peut il être utilisé comme script nautilus ?

Hors ligne

#3 Le 19/11/2005, à 15:41

Golgoth

Re : Cherche conseils pour script nautilus

camboui a écrit :

Ah ben j'ai encore une question stupide...

Un bash script peut il être utilisé comme script nautilus ?

oui!

un exemple: le script écrit par Mathieu Vilaplana qui permet de redimensionner des images automatiquement.

#!/bin/sh
# Author : Mathieu Vilaplana <mathieu@creationgif.com>
# Date : 09/03/2005
#depends: imagemagick, zenity
# thanks to coffe
#version 0.4
#	- check mime type
#since v 0.4, solve bug with filename spaces
#version 0.6
#	- correct bug in filename with spaces
#     - create a subdirectory to create images

#test if a file has been selected
if [ $# -eq 0 ]; then
	zenity --error --title="error" --text="You must select at least 1 file to process"
	exit 1
fi


#Select only images
nb_images=0;
selection="";
while [ $# -gt 0 ]; do
	isimage=`file -bi "$1" | grep image | wc -l` 
	if [ $isimage -eq 1 ]; then
		selection[$nb_images]=$1
		let "nb_images++"
	fi
	shift
done

#if user choose files but no images, print an error and exit
if [ $nb_images -eq 0 ]; then
	zenity --error --title="error" --text="You must select at least 1 image to process"
	exit 1
fi


#CHECK IMAGE MAGICK ==================
convert_path=`which convert`
if [ ! "$convert_path" ] || [ ! -x "$convert_path" ] ;then
	zenity --error --title="error" --text="Cannot find \"convert\" executable.\nPlease install image magick package."
fi
#================================

#=========================
#       SELECT SIZE DIALOG
title="Choose which sizes to scale to"
imgsize=`zenity --title "$title"  --list --separator=" " --column="size" "160x120" "320x240" "640x480" "800x600" "800x600" "1024x768" `

#if $? != 0, user click on cancel button, so exit
if [ "$?" != 0 ] ; then
	exit
fi

#user must select a target size
imgsize=`echo $imgsize | sed 's/ max//g'`
if [ ! "$imgsize" ]; then
	zenity --error --title="error" --text="select a target size"
	exit
fi

#transform 640x480 en 640x640 for convert to respect proportions
himgsize=$imgsize
val1=`echo "$imgsize" | awk -F'x' '{ print $1  }'`
imgsize="${val1}x${val1}"

#       END SELECT SIZE DIALOG
#=========================




#create directory if not exist and at least one image to process
if [ ! -d $himgsize  ] && [ "$nb_images" -gt "0" ];then
		mkdir $himgsize
fi

#Process
#=============================================
n=$nb_images
let "n=n-1"
(for i in `seq 0 $n`;do
	picture=${selection[$i]}
	let "compteur += 1"
	echo "# Processing image $compteur / $nb_images $picture ..."
	convert -quality 80 -resize $imgsize "$picture" $himgsize/"$picture"
	let "progress = compteur*100/nb_images"
	echo $progress
done
) | zenity --progress --auto-close --title="Scaling images"  --text="Processing images ..."  --percentage=0

tu colles ton code ds un fichier, tu le rends executable et tu copies ce fichier dans .gnome2/nautilus-scripts/


Dell Dimension 9200: E6420 + 8600GTS + 2Go RAM

Hors ligne

#4 Le 19/11/2005, à 15:50

camboui

Re : Cherche conseils pour script nautilus

Magnifique ! Ainsi tout ce que l'on pourrait apprendre ici (par exemple) http://www.bsdbooks.net/shells/scripting/fr serait utilisable dans nautilus smile

Merci pour ton aide!

Me reste plus qu'à me retourner les manches et mettre les mains dans le camboui ^^
... bien que je ne saches toujours pas si mon projet est réaliste ...

Hors ligne

#5 Le 20/11/2005, à 00:52

camboui

Re : Cherche conseils pour script nautilus

Il l'est big_smile
Grâce à un conseil de script de Poptones ici : http://ubuntuforums.org/showthread.php?t=47037&highlight=script+par2
j'ai bidouillé ceci:

#!/bin/sh
_DIR="$#"
cd "${_DIR%/*}"
/usr/bin/par2 r "$1"
if [[ $? -gt 0 ]]; then 
 zenity --error --title="Damnation" --text="La réparation de $1 a échoué."
else
 zenity --info --title="Cool" --text="$1 a été correctement réparé."
fi

Cela marche correctement ! (quel plaisir de croire qu'on peut faire des choses hihi)
Mais j'aimerais plus...
Comment demander à zenity d'afficher dans la boite d'erreur qui s'ouvre le cas échéant à la fin du processus les infos de par2 ?

Ce serait la cerise sur le gateau !

Dernière modification par camboui (Le 20/11/2005, à 01:13)

Hors ligne

#6 Le 20/11/2005, à 12:44

jks

Re : Cherche conseils pour script nautilus

Bonjour !

Sympa ce truc ! smile

Merci bcp!

Hors ligne

#7 Le 20/11/2005, à 12:55

jks

Re : Cherche conseils pour script nautilus

Voilà mon script (2 lignes ! wink) qui affiche les infos en cours de réparation :

#!/bin/sh
par2repair -q $1 | zenity --text-info --title "PAR2" --width=500 --height=500

Modification du script : ajout des guillemets à $1 (pour ne plus avoir de problèmes avec les espaces dans les noms des par2)

#!/bin/sh
par2repair -q "$1" | zenity --text-info --title "PAR2" --width=500 --height=500

Dernière modification par jks (Le 20/11/2005, à 19:02)

Hors ligne

#8 Le 20/11/2005, à 17:47

camboui

Re : Cherche conseils pour script nautilus

Excellent ! ^^ Merci !
J'ai testé en vitesse et ça répond au problème de l'affichage des infos, c'est trop bon big_smile
Par contre il bloque sur les pars qui ont des espaces dans leur nom, comme quand on se sert du terminal d'ailleurs... Etrangement "mon" script n'a pas ce problème.
Dès que j'aurai un ti peu de temps je vais tenter de marrier les deux.

Merci infiniment pour cette piste !
Tu l'as trouvée comment ?

Dernière modification par camboui (Le 20/11/2005, à 17:48)

Hors ligne

#9 Le 20/11/2005, à 18:45

jks

Re : Cherche conseils pour script nautilus

camboui a écrit:
Merci infiniment pour cette piste !
Tu l'as trouvée comment ?

De rien ! smile
En fait c'est en regardant le manpage de zenity.
Il a des options bien pratiques comme afficher les infos, mettre une progress bar, etc.

Par contre il bloque sur les pars qui ont des espaces dans leur nom

Effectivement !
Voici le script corrigé : il suffit juste de mettre entre guillemets la variable $1 (comme tu l'as fait dans ton script):

#!/bin/sh
par2repair -q "$1" | zenity --text-info --title "PAR2" --width=500 --height=500

PS: je vais modifier mon post précédent...

Dernière modification par jks (Le 20/11/2005, à 18:46)

Hors ligne

#10 Le 20/11/2005, à 22:54

camboui

Re : Cherche conseils pour script nautilus

Y'a deux trucs de cool grâce à ton aide...
D'une part ça résoud un problème d'utilisation de par2
D'autre part ça m'a fait comprendre deux trois choses et ça m'a donné envie d'aller plus loin smile

J'vais voir à quel point on peut rendre l'opération fun

Merci tout plein, à pluch'

Hors ligne

#11 Le 21/11/2005, à 00:12

jks

Re : Cherche conseils pour script nautilus

De rien ! It's my pleasure. smile
J'ai d'ailleurs découvert l'existence de zenity gràce à ton post ! Lol!

Si tu trouves d'autres choses interessantes, fait le partager à la communauté !

Hors ligne

#12 Le 21/11/2005, à 18:38

borsk

Re : Cherche conseils pour script nautilus

Bravo pour ce script , je ne suis pas vraiment un pro de la programmation et là c'est le bonheur, je vois enfin ce qui se passe quand je répare...:D


ubuntu gusty
AMD 2600+, 1024 ddr, 6600gt, CM asus a7n8x, kit bidalo 75, friteuse seb,

Hors ligne

#13 Le 23/11/2005, à 01:16

jks

Re : Cherche conseils pour script nautilus

Thx !

Petit bémol toutefois : hmm

les infos affichés dans la fenêtre sont les infos de vérification du par2, c'est à dire :
le nb de blocks disponibles, les rar défectueux, etc...

Puis au moment de la réparation à proprement parler, il n'y a plus d'infos... juste une phrase : "Repair is possible."

Il n'y a pas de % affiché, on a aucun moyen de suivre l'état d'avancement de la réparation.
On a alors l'impression que le processus est arrêté et on serait tenté de cliquer sur "Fermer".
Mais en fait le processus tourne toujours ! Il faut donc attendre les phrases :
"Verifying repaired files:" et enfin "Repair complete." pour pouvoir quitter sinon la réparation ne sera pas effectuée !
(Cet inconvénient passe inaperçu lorsque la réparation est courte).

On peut contourner le pblm en augmentant le "verbose" de par2repair : il suffit d'enlever l'option "-q". Mais l'affichage des infos sera plus longue (avec bcp de %) et  moins esthétique.

Voilà en attendant de nvl innovations...
J'espère que vous avez tout lu ! big_smile

Hors ligne

#14 Le 24/11/2005, à 22:00

camboui

Re : Cherche conseils pour script nautilus

J'en ai pas perdu une miette wink

Pour régler le problème que tu soulèves il faudrait se prendre le choux à trouver une (des) solution(s) pour bidouiller l'affichage dans zenity ou gdialog... ou ne pas s'en servir du tout et parvenir à déclancher l'affichage de la console au démarrage de l'opération... ou encore d'autres solutions qui me dépassent ^^

J'vais farfouiller su côté de perl pour voir si ça avance la gestion des pars2. Ce serait cool, ça permettrait en plus de proposer une solution fonctionnant que ce soit sur gnome ou kde (ou même sur autre chose qu'ubuntu ke suppose...)

Vais prendre une aspirine par anticipation...

Hors ligne

#15 Le 21/12/2005, à 07:14

Mohegan

Re : Cherche conseils pour script nautilus

J'ai trouvé une solution en lançant gnome-terminal. Voici le script à mettre danst ~/.gnome2/nautilus-scripts (Intitulé par exemple Par2repair) :

#!/bin/bash
gnome-terminal --hide-menubar --title=Par2repair -x :home/jack/Logiciels\ Linux/Scripts/Par2repair "$1"

Et voici le script que j'ai mis dans le fichier /home/jack/Logiciels\ Linux/Scripts/Par2repair :

#!/bin/bash
par2repair "$1"
echo
echo Appuyer sur entrée pour quitter
read

Cela permet de voir l'état d'avancement de par2repair.
Nota : Il ne faut pas oublier de rendre les deux scripts exécutables par la commande chmod u+x.


"Lorsqu’un adulte entre dans le monde des fables, il ne peut plus en sortir." Bouche Dorée

Hors ligne

#16 Le 22/12/2005, à 11:04

lakhdar

Re : Cherche conseils pour script nautilus

Bonjour,
je sis nouveau ici je commence à peine à surfer sur linux j'ai ubuntu et j'aimerai savoir comment faire un script car j'ai surfé sur le net j'ai trouvé des choses mais ça ne fonctionne pas .Mon premier sujet est le suivant:


Nom de l'exécutable :                       friends.sh
Répertoire de rendu :                       ~/rendu/piscine/j2/friends
Droit sur ~/rendu/piscine/j2/friends :      750

   Faites un script shell qui prend en arguments une liste d'amis et
qui affiche le nombre d'amis ainsi que le leurs noms.

   Le script doit retourner le nombre d'amis.

   Exemple:

     $ ./friends.sh
     Vous n'avez pas d'ami.
     $ echo $?
     0
     $ ./friends.sh Reeb
     Vous avez 1 ami: Reeb.
     $ echo $?
     1
     $ ./friends.sh Reeb Ruben "les acus"
     Vous avez 3 amis: Reeb, Ruben, les acus.
     $ echo $?
     3

j'espère avoir une réponse favorable à ma question.bonne journée et à plus

Hors ligne

#17 Le 11/03/2008, à 14:53

tocks

Re : Cherche conseils pour script nautilus

Bonjours, ce sujet m'intéraisse énormement, j'essaie de faire cela sans y arriver, je voudrais comme vous le dite que juste avec le clik droit sous nautilus je eput lancer la reparation, et quand la reparation est terminer extraire automatiquement les fichiers. Avec une boite de commande qui souvre pour suivre l'avancement de la vérification, puis avancement de la réparation et enfin l'avancement de la décompression.
Si vous pouvez m'aider sa serais cool. Merci

Hors ligne