Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1533 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [BASH] Amélioration de script (boucle et autre)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BASH] Amélioration de script (boucle et autre)

n°1098224
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 11:34:22  profilanswer
 

Bon voila,
après avoir quelque peu galéré dans la gestion des paquets de smileys HFRCerveau j'ai décidé de mettre ne place un script bash permettant de faciliter un tant soit peu la maintenance de l'ensemble: le paquet de smileys actuelle gère 5 clients de messagerie instantanée différente avec évidemment des différences claires au niveau des fichiers de configuration et parfois des particularités pour certains (mon regard se tourne notamment vers pidgin!)
A l'heure actuelle je bute sur deux choses :

  • je veux échapper le code \ pour les smileys inclus dans le fichier de configuration de pidgin :

  un code du genre \o/ ne sera pas pris en compte par pidgin car le \ n'est pas  échappé
   il faudrait donc récupérer la valeur du code avant de l'insérer dans le fichier texte correspondant.
   je pensais m'en sortir en me servant de  'expr substr' afin de récupérer la première lettre mais j'ai probablement des erreurs de syntaxe

  • la boucle while permettant de récupérer les codes de smileys dans le fichier 'maitre' de smileys est pour l'heure limité à 3

   je la trouve un peu lourde il doit je pense être possible d'améliorer la chose.

 

Je n'ai pas fait ce script en perl/python/ruby/whatelse car je ne les connaits pas du tout, d'ailleurs je ne connais que peu le script bash :o
le script a l'heure actuelle (pondu dans la nuit d'hier soir)

 
Code :
  1. #!/bin/bash
  2. #
  3. #Script de création automatique de paquets de Smileys
  4. #pour les clients de messagerie suivants :
  5. # Psi, Jabbim, Kopete, Gajim, Pidgin
  6. #
  7. #
  8. # Balcaen John ( mikala@jabber.littleboboy.net )
  9. # crée le 17/12/2008
  10. #License GPLv3
  11. #
  12. # Définition des variables
  13. fichierjabbim="exemple-smileys.cfg"
  14. fichiergajim="exemple-emoticons.py"
  15. fichierpsi="exemple-icondef.xml"
  16. fichierkopete="exemple-emoticons.xml"
  17. fichierpidgin="exemple-theme"
  18. numeroversion="0.5"
  19. description="Pack de smilies \"HFRCerveau\" du forum Hardware.fr"
  20. nompack="HFRCerveau"
  21. iconedefaut="D.png"
  22. repertoiredest="HFRCerveau"
  23. repertoireorig=`pwd`
  24. # Vérification de l'existence du fichier de configuration des smileys
  25. # Pour mémoire la syntaxe du fichier est la suivante
  26. # nomfichier.extension*code1*code2*code3
  27. cd $repertoiredest
  28. if [ ! -e fichierorigine ]
  29.   then
  30.       echo "pas de fichier theme existant";
  31.       exit
  32. fi
  33. #######################################################
  34. # Définition des fonctions initialisation des fichiers#
  35. #######################################################
  36. #### Jabbim ####
  37. init_fichier_jabbim() {
  38. echo "[header]"  > $fichierjabbim
  39. echo "'type'= 'emoticons'" >> $fichierjabbim
  40. echo "'name'= '$nompack'" >> $fichierjabbim
  41. echo "'frontImage'='$iconedefaut'" >> $fichierjabbim
  42. echo "'version'='$numeroversion'" >> $fichierjabbim
  43. echo "'description' = '$description" >> $fichierjabbim
  44. echo "'licence' ='GPL'" >> $fichierjabbim
  45. echo "'author' = ''" >> $fichierjabbim
  46. echo "" >> $fichierjabbim
  47. echo "[emoticons]" >> $fichierjabbim
  48. }
  49. ajout_fichier_jabbim() {
  50. if [ "$no_code_emoticon" == "1" ]
  51.  then
  52.      echo "'$code1' = '$nomemoticon' " >> $fichierjabbim
  53. fi
  54. if [ "$no_code_emoticon" == "2" ]
  55.  then echo "'$code2' = '$nomemoticon' " >> $fichierjabbim
  56. fi
  57. if [ "$no_code_emoticon" == "3" ]
  58.  then echo "'$code3' = '$nomemoticon' " >> $fichierjabbim
  59. fi
  60. }
  61. #### Gajim ####
  62. init_fichier_gajim() {
  63. echo "emoticons = {" > $fichiergajim
  64. }
  65. ajout_fichier_gajim() {
  66.  if [ "$no_code_emoticon" == "1" ]
  67.        then
  68.        echo "\"$code1\" = \"$nomemoticon\"," >> $fichiergajim
  69.  fi
  70.  if [ "$no_code_emoticon" == "2" ]
  71.        then echo "\"$code2\" = \"$nomemoticon\", " >> $fichiergajim
  72.  fi
  73.      if [ "$no_code_emoticon" == "3" ]
  74.        then echo "\"$code3\" = \"$nomemoticon\", " >> $fichiergajim
  75.  fi
  76. }
  77. #### Psi #####
  78. init_fichier_psi() {
  79. echo "<?xml version='1.0' encoding='UTF-8'?>" > $fichierpsi
  80. echo "<icondef>" >> $fichierpsi
  81. echo "<meta>" >> $fichierpsi
  82. echo "<name>$nompack</name>" >> $fichierpsi
  83. echo "<version>$numeroversion</version>">> $fichierpsi
  84. echo "<description>$description</description>" >> $fichierpsi
  85. echo "<author>Jérôme Dubois</author>" >> $fichierpsi
  86. echo "<author>John Balcaen</author>" >> $fichierpsi
  87. echo "<home>http://www.jerrycrazy.be.cx</home>" >> $fichierpsi
  88. echo "</meta>" >> $fichierpsi
  89. }
  90. ajout_fichier_psi () {
  91.     extension=`echo $nomemoticon |cut -d "." -f 2`
  92.     if [ "$no_code_emoticon" == "1" ]
  93.       then
  94.   echo "<icon><text>$code1</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  95.     fi
  96.     if [ "$no_code_emoticon" == "2" ]
  97.       then
  98.   echo "<icon><text>$code1</text><text>$code2</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  99.     fi
  100.      if [ "$no_code_emoticon" == "3" ]
  101.       then
  102.   echo "<icon><text>$code1</text><text>$code2</text><text>$code3</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  103.     fi
  104. }
  105. ### Kopete ######
  106. init_fichier_kopete () {
  107. echo "<?xml version=\"1.0\"?>" > $fichierkopete
  108. echo "<messaging-emoticon-map>" >> $fichierkopete
  109. }
  110. ajout_fichier_kopete () {
  111. emoticon=`echo $nomemoticon | cut -d "." -f 1`
  112. if [ "$no_code_emoticon" == "1" ]
  113.       then
  114.   echo "<emoticon file=\"$emoticon\"><string>$code1</string></emoticon>" >> $fichierkopete
  115. fi
  116. if [ "$no_code_emoticon" == "2" ]
  117.       then
  118.   echo "<emoticon file=\"$emoticon\"><string>$code1</string><string>$code2</string></emoticon>" >> $fichierkopete
  119. fi
  120. if [ "$no_code_emoticon" == "3" ]
  121.       then
  122.   echo "<emoticon file=\"$emoticon\"><string>$code1</string><string>$code2</string><string>$code3</string></emoticon>" >> $fichierkopete
  123. fi
  124. }
  125. #Pidgin
  126. init_fichier_pidgin () {
  127. echo "Name=$nompack $numeroversion" > $fichierpidgin
  128. echo "Description=$description " >> $fichierpidgin
  129. echo "Icon=$iconedefaut" >> $fichierpidgin
  130. echo "Author=Jérôme Dubois & John Balcaen" >> $fichierpidgin
  131. echo "" >> $fichierpidgin
  132. echo "[default]" >> $fichierpidgin
  133. }
  134. ajout_fichier_pidgin () {
  135. if [ "$no_code_emoticon" == "1" ]
  136.     then
  137. echo "$nomemoticon $code1" >> $fichierpidgin
  138. fi
  139. if [ "$no_code_emoticon" == "2" ]
  140.     then
  141. echo "$nomemoticon $code1 $code2" >> $fichierpidgin
  142. fi
  143. if [ "$no_code_emoticon" == "3" ]
  144.     then
  145. echo "$nomemoticon $code1 $code2 $code3" >> $fichierpidgin
  146. fi
  147. }
  148. cloture_fichiers() {
  149. # Gajim
  150. echo "}" >> $fichiergajim
  151. # Psi
  152. echo "</icondef> " >> $fichierpsi
  153. # Kopete
  154. echo "</messaging-emoticon-map>" >> $fichierkopete
  155. }
  156. creation_archives () {
  157. cd "$repertoireorig"
  158. tar czf "$nompack-$numeroversion.tar.gz" "$repertoiredest"
  159. zip  "$nompack-$numeroversion.jisp" "$repertoiredest/"
  160. }
  161. ##########################################
  162. ## Début du script d'ajout des smileys  ##
  163. ##########################################
  164. ### Initialisation des fichiers de configuration des smileys
  165. init_fichier_jabbim
  166. init_fichier_gajim
  167. init_fichier_psi
  168. init_fichier_kopete
  169. init_fichier_pidgin
  170. # Lecture du fichier de smileys pour ajout des codes
  171. cat fichierorigine |
  172. while read ligne
  173. do
  174.   nomemoticon=`echo $ligne|/bin/cut -d "*" -f 1`
  175.   code1=`echo $ligne|/bin/cut -d "*" -f 2`
  176.   code2=`echo $ligne|/bin/cut -d "*" -f 3`
  177.   no_code_emoticon=1
  178.  
  179. if [ "$code2" == "" ]
  180.       then
  181.    ajout_fichier_jabbim
  182.    ajout_fichier_gajim 
  183.    ajout_fichier_psi
  184.    ajout_fichier_kopete
  185.    ajout_fichier_pidgin
  186.       else
  187.     no_code_emoticon=$((no_code_emoticon+1))
  188.     code3=`echo $ligne|/bin/cut -d "*" -f 4`
  189.     if [ "$code3" == "" ]
  190.       then
  191.      ajout_fichier_jabbim
  192.      ajout_fichier_pidgin
  193.      ajout_fichier_gajim
  194.      ajout_fichier_psi
  195.      ajout_fichier_kopete
  196.    else 
  197.      no_code_emoticon=$((no_code_emoticon+1))
  198.      ajout_fichier_psi
  199.      ajout_fichier_jabbim
  200.      ajout_fichier_gajim
  201.      ajout_fichier_pidgin 
  202.      ajout_fichier_kopete
  203.     fi
  204.           fi
  205. done
  206. # Cloture des balises dans les fichiers le nécessitant
  207. cloture_fichiers
  208. # Création des fichiers.
  209. creation_archives


Message édité par mikala le 18-12-2008 à 11:41:49

---------------
Intermittent du GNU
mood
Publicité
Posté le 18-12-2008 à 11:34:22  profilanswer
 

n°1098229
wedgeant
Da penguin inside
Posté le 18-12-2008 à 11:41:44  profilanswer
 

Histoire de se faire une idée, tu pourrais poster un bout de fichier conf pour pidgin et les messages d'erreur que te sort ton script ? [:opus dei]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1098232
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 11:45:21  profilanswer
 

en fait je n'ai pas d'erreur de conf, c'est simplement que pidgin ne considera pas l'entrée  \ comme valide dans la gestion d'un code de smiley si celui ci n'est pas échappé, c'est hélas par empirisme que j'ai appris cela.
je vais voir si éventuellement pidgin n'a pas un peu progressé de manière a ce que je puisse utiliser des "" pour les codes de smileys.
 
pour un fichier de conf de pidgin cela donne ceci  
 

Citation :


Shay.png :shay: \\o/


je me demande d'ailleurs si il ne faut pas echapper également les espaces tiens...


---------------
Intermittent du GNU
n°1098235
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 11:48:38  profilanswer
 

Le fichier que je considère d'origine pour la gestion des smileys a sa syntaxe similaire

 
Citation :


Shay.png*:shay:*\\o/
Tongue.png*:p*:P*:-p*:-P


j'ai explicitement rajouté le caractère *, afin de pouvoir utiliser cut plus facilement :D
de même j'échappe dès ce moment là le \ afin qu'il soit correctement inséré.

 

par ailleurs tu peux noter que certains smileys ont 4 codes, comment parser cela facilement dans une boucle ?
un while $code="" fonctionnerait
en incrémentant le -f du cut mais après pour récupérer mes codes ? je fais comment ?
$code($i) ?


Message édité par mikala le 18-12-2008 à 11:50:09

---------------
Intermittent du GNU
n°1098236
wedgeant
Da penguin inside
Posté le 18-12-2008 à 11:49:19  profilanswer
 

tu peux traiter tes lignes d'entrées en les passant dans un script sed du genre:

Code :
  1. echo "\o/" | sed -e 's@\\@\\\\@g'


en gros, tu remplaces chaque "\" par "\\" :jap:
 
peux pas tester mon sed ici, mais ça devrait le faire je pense [:dawa]
 
Pour le while, je comprends pas trop la question en fait [:god]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1098246
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 11:59:35  profilanswer
 

sed: -e expression n°1, caractère 8: commande `s' inachevée
sed: -e expression n°1, caractère 8: commande `s' inachevée
avec  

Citation :

ajout_fichier_pidgin () {
 
code1=`echo $code1|sed -e 's@\\@\\\\@g'`


 
pour le while j'avais édité mon post précédent :o


---------------
Intermittent du GNU
n°1098253
wedgeant
Da penguin inside
Posté le 18-12-2008 à 12:08:40  profilanswer
 

grmphbl ...
 
fais voir ton fichier d'origine (celui que tu cherches à parser), chuis sur que ça peut se faire bien plus facilement que ton usine à gaz :o
 
pour le sed, faudrait essayer sans doubler les "\", je sais plus s'il le fait automatiquement ou pas :/
 

Code :
  1. sed 's@\@\\@g'


 
pis remplacer ces immondes `...` par $(...) [:romf]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1098254
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 12:14:20  profilanswer
 

et donc maintenant avec

 
Citation :

code1=$(echo $code1 |sed 's@\@\\@g' )
code2=$(echo $code2 |sed 's@\@\\@g')
code3=$(echo $code3 |sed 's@\@\\@g' )


j'ai droit a du

Citation :

sed: -e expression n°1, caractère 8: commande `s' inachevée
sed: -e expression n°1, caractère 8: commande `s' inachevée

 

le fichier d'origine

Smile.png*:)*:-)
D.png*:D*:d
Wink.png*;)*;-)*;o)
Sad.png*:(*:-(*
SadNoir.png*:sadnoir:
No.png*:|*:-|
Arf.png*:arf:
Arg.png*:arg:
Erf.png*:/*:-/
Ohill.gif*:'(
Tongue.png*:p*:P*:-p*:-P
O.png*:o*:-o
Confused.png*:??:
Sweat.png*:sweat:
Mmmfff.png*:mmmfff:
Sol.png*:sol:
Dawa.png*:dawa:
Dawak.png*:dawak:
DawaHello.gif*:dawahello:
DawaNon.gif*:dawanon:
DawaNoel.png*:dawanoel:
God.png*:god:
Love.gif*:love:
Boidleau.png*:boidleau:
Chacal_One333.png*:chacal_one333:
Autobot.png*:autobot:
Cupra.png*:cupra:
Ddr555.png*:ddr555:
Fou.png*:fou:
Fuck.png*:fuck:
Kneu.png*:kneu:
Mlc.png*:mlc:*:mlc2:
Ouch.png*:ouch:
Pingouino.png*:pingouino:
Kiki.png*:kiki:
Huit.png*:huit:
Neuf.png*:neuf:
Tinostar.png*:tinostar:
Haha.png*:haha:
Hahaguy.png*:hahaguy:
Petrus.png*:petrus75:
Shay.png*:shay:*\\o/
Ciler.png*:ciler:
TT.png*:tt:
Vomi.gif*:vomi:
Drapal.png*:drapal:
-1.png*:-1:
+1.png*:+1:*:wedgeant:
Ban.png*:ban:
Boulay.png*:boulay:
Thalis.png*:thalis:
Afrojojo.png*:afrojojo:
Pouah.png*:pouah:
Nico54.png*:nico54:
Yvele.png*:yvele:
Joce.png*:joce:
Popcorn.png*:popcorn:
Shut.png*:x
Neriki.png*:neriki:
Cry.gif*:cry:
Whistle.gif*:whistle:
Heink.gif*:heink:
Jap.gif*:jap:
Sleep.gif*:sleep:
Pt1Cable.gif*:pt1cable:
Arn0.gif*:arn0:
Spamafote.gif*:spamafote:
Eonwe.gif*:eonwe:
Delight.gif*:delight:
Violon.gif*:violon:
Zebra.gif*:zebra33:
Discobeck.gif*:discobeck:
Bounce.gif*:bounce:
Merdocu.gif*:merdocu:
Zoubi.gif*:zoubi:
Wam.gif*:wam:*:hebe:
Branlette.gif*:branlette:
Elmoricq.gif*:elmoricq:
Roi.gif*:roi:
Kahn21.gif*:kahn21:
Adodonicoco.gif*:adodonicoco:
Totoz.gif*:totoz:*:alph-one:
Prodigy.png*:prodigy:
Makokotte.gif*:makokotte:
Simchevelu.gif*:simchevelu:
Bernadette.png*:bernadette:
Sisicaivrai.gif*:sisicaivrai:
Perchut2.gif*:perchut2:
Obawi.gif*:obawi:
Kukron.gif*:kukron:
Skyzor.gif*:skyzor:
Atsuko.gif*:atsuko:
Zeusy.png*:zeusy:
Lol.gif*:lol:
Rofl.gif*:rofl:
Rofl2.gif*:rofl2:
Toad666.gif*:toad666:
Sarcastic.gif*:sarcastic:
DawaCube.gif*:dawacube:
Aloy.png*:aloy:
Debarquement.png*:debarquement:
Grilled.gif*:grilled:
Hello.gif*:hello:
Hurle.png*:hurle:
Prozac.png*:prozac:
Daria.png*:daria:
Bresse.png*:bresse:
Gnoufou.gif*:gnoufou:
Volta.png*:volta:
Chaleur_Intempestive.gif*:chaleur intempestive:*:datoune:
Grisemine.png*:grisemine:
Sherlock.png*:sherlock:
Ndi76.gif*:ndi76:
Blackmetal.png*:blackmetal:
Cawa.gif*:cawa:
Klem.png*:klem:
OCube.png*:ocube:
Picole.gif*:picole:
Rhetorie_Du_Chaos.png*:rhetorie du chaos:
Sadistyk.png*:sadistyk:
Tang.gif*:tang:
TristanF.gif*:tristanf:
ITM.png*:itm:
Non.gif*:non:
Gratgrat.gif*:gratgrat:
Phenos.png*:phenos:
Cosmoschtroumpf.png*:cosmoschtroumpf:
Tibo2002.png*:tibo2002:
Draculax.png*:draculax:
Calin.gif*:calin:
BriseParpaing.gif*:briseparpaing:
Blessure.png*:blessure:
Golden_Blessure.png*:golden blessure:
Jaffax.png*:jaffax:
Tarlooze.gif*:tarlooze:
Jalouse.png*:jalouse:*:classe++:
HFRBaxter.gif*:hfrbaxter:
NiniPC.gif*:ninipc:
Sinking.png*:sinking:*:nerd:*:xxantoinexx:
Sarko.png*:sarko:
Delarue.png*:delarue:
Delarue2.png*:delarue2:
Delarue3.png*:delarue3:
Delarue4.png*:delarue4:
Delarue5.png*:delarue5:
Delarue6.png*:delarue6:
Wahoo.gif*:wahoo:
Kryten.png*:kryten:
DTC.png*:dtc:


Message édité par mikala le 18-12-2008 à 12:15:03

---------------
Intermittent du GNU
n°1098258
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 12:20:56  profilanswer
 

bon c'est résolu pour le \
par le biais de http://forum.hardware.fr/hfr/OSAlt [...] 1933_1.htm \o/
 
j'ai mis cela :

Citation :

FILTRE='s/\\/\\\\/'
code1=$(echo "$code1" |sed -e "$FILTRE" )
code2=$(echo "$code2" |sed -e "$FILTRE" )
code3=$(echo "$code3" |sed -e "$FILTRE"  )


---------------
Intermittent du GNU
n°1098259
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 12:21:15  profilanswer
 

il reste ma boucle maintenant wedge :o


---------------
Intermittent du GNU
mood
Publicité
Posté le 18-12-2008 à 12:21:15  profilanswer
 

n°1098263
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 12:24:04  profilanswer
 

le fichier a jour :o)

Code :
  1. #!/bin/bash
  2. #
  3. #Script de création automatique de paquets de Smileys
  4. #pour les clients de messagerie suivants :
  5. # Psi, Jabbim, Kopete, Gajim, Pidgin
  6. #
  7. #
  8. # Balcaen John ( mikala@jabber.littleboboy.net )
  9. # crée le 17/12/2008
  10. #License GPLv3
  11. #
  12. # Définition des variables
  13. fichierjabbim="exemple-smileys.cfg"
  14. fichiergajim="exemple-emoticons.py"
  15. fichierpsi="exemple-icondef.xml"
  16. fichierkopete="exemple-emoticons.xml"
  17. fichierpidgin="exemple-theme"
  18. numeroversion="0.5"
  19. description="Pack de smilies \"HFRCerveau\" du forum Hardware.fr"
  20. nompack="HFRCerveau"
  21. iconedefaut="D.png"
  22. repertoiredest="HFRCerveau"
  23. repertoireorig=`pwd`
  24. # Vérification de l'existence du fichier de configuration des smileys
  25. # Pour mémoire la syntaxe du fichier est la suivante
  26. # nomfichier.extension*code1*code2*code3
  27. cd $repertoiredest
  28. if [ ! -e fichierorigine ]
  29.   then
  30.       echo "pas de fichier theme existant";
  31.       exit
  32. fi
  33. ###########################
  34. # Définition des fonctions#
  35. ###########################
  36. #### Jabbim ####
  37. init_fichier_jabbim() {
  38. echo "[header]"  > $fichierjabbim
  39. echo "'type'= 'emoticons'" >> $fichierjabbim
  40. echo "'name'= '$nompack'" >> $fichierjabbim
  41. echo "'frontImage'='$iconedefaut'" >> $fichierjabbim
  42. echo "'version'='$numeroversion'" >> $fichierjabbim
  43. echo "'description' = '$description" >> $fichierjabbim
  44. echo "'licence' ='GPL'" >> $fichierjabbim
  45. echo "'author' = ''" >> $fichierjabbim
  46. echo "" >> $fichierjabbim
  47. echo "[emoticons]" >> $fichierjabbim
  48. }
  49. ajout_fichier_jabbim() {
  50. if [ "$no_code_emoticon" == "1" ]
  51.  then
  52.      echo "'$code1' = '$nomemoticon' " >> $fichierjabbim
  53. fi
  54. if [ "$no_code_emoticon" == "2" ]
  55.  then echo "'$code2' = '$nomemoticon' " >> $fichierjabbim
  56. fi
  57. if [ "$no_code_emoticon" == "3" ]
  58.  then echo "'$code3' = '$nomemoticon' " >> $fichierjabbim
  59. fi
  60. }
  61. #### Gajim ####
  62. init_fichier_gajim() {
  63. echo "emoticons = {" > $fichiergajim
  64. }
  65. ajout_fichier_gajim() {
  66.  if [ "$no_code_emoticon" == "1" ]
  67.        then
  68.        echo "\"$code1\" = \"$nomemoticon\"," >> $fichiergajim
  69.  fi
  70.  if [ "$no_code_emoticon" == "2" ]
  71.        then echo "\"$code2\" = \"$nomemoticon\", " >> $fichiergajim
  72.  fi
  73.      if [ "$no_code_emoticon" == "3" ]
  74.        then echo "\"$code3\" = \"$nomemoticon\", " >> $fichiergajim
  75.  fi
  76. }
  77. #### Psi #####
  78. init_fichier_psi() {
  79. echo "<?xml version='1.0' encoding='UTF-8'?>" > $fichierpsi
  80. echo "<icondef>" >> $fichierpsi
  81. echo "<meta>" >> $fichierpsi
  82. echo "<name>$nompack</name>" >> $fichierpsi
  83. echo "<version>$numeroversion</version>">> $fichierpsi
  84. echo "<description>$description</description>" >> $fichierpsi
  85. echo "<author>Jérôme Dubois</author>" >> $fichierpsi
  86. echo "<author>John Balcaen</author>" >> $fichierpsi
  87. echo "<home>http://www.jerrycrazy.be.cx</home>" >> $fichierpsi
  88. echo "</meta>" >> $fichierpsi
  89. }
  90. ajout_fichier_psi () {
  91.     extension=$(echo $nomemoticon |cut -d "." -f 2)
  92.     if [ "$no_code_emoticon" == "1" ]
  93.       then
  94.   echo "<icon><text>$code1</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  95.     fi
  96.     if [ "$no_code_emoticon" == "2" ]
  97.       then
  98.   echo "<icon><text>$code1</text><text>$code2</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  99.     fi
  100.      if [ "$no_code_emoticon" == "3" ]
  101.       then
  102.   echo "<icon><text>$code1</text><text>$code2</text><text>$code3</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  103.     fi
  104. }
  105. ### Kopete ######
  106. init_fichier_kopete () {
  107. echo "<?xml version=\"1.0\"?>" > $fichierkopete
  108. echo "<messaging-emoticon-map>" >> $fichierkopete
  109. }
  110. ajout_fichier_kopete () {
  111. emoticon=$(echo $nomemoticon | cut -d "." -f 1)
  112. if [ "$no_code_emoticon" == "1" ]
  113.       then
  114.   echo "<emoticon file=\"$emoticon\"><string>$code1</string></emoticon>" >> $fichierkopete
  115. fi
  116. if [ "$no_code_emoticon" == "2" ]
  117.       then
  118.   echo "<emoticon file=\"$emoticon\"><string>$code1</string><string>$code2</string></emoticon>" >> $fichierkopete
  119. fi
  120. if [ "$no_code_emoticon" == "3" ]
  121.       then
  122.   echo "<emoticon file=\"$emoticon\"><string>$code1</string><string>$code2</string><string>$code3</string></emoticon>" >> $fichierkopete
  123. fi
  124. }
  125. #### Pidgin ####
  126. init_fichier_pidgin () {
  127. echo "Name=$nompack $numeroversion" > $fichierpidgin
  128. echo "Description=$description " >> $fichierpidgin
  129. echo "Icon=$iconedefaut" >> $fichierpidgin
  130. echo "Author=Jérôme Dubois & John Balcaen" >> $fichierpidgin
  131. echo "" >> $fichierpidgin
  132. echo "[default]" >> $fichierpidgin
  133. }
  134. ajout_fichier_pidgin () {
  135. #Gestion du \ pour le fichier de configuration de pidgin.
  136. FILTRE='s/\\/\\\\/'
  137. codepidgin1=$(echo "$code1" |sed -e "$FILTRE" )
  138. codepidgin2=$(echo "$code2" |sed -e "$FILTRE" )
  139. codepidgin3=$(echo "$code3" |sed -e "$FILTRE"  )
  140. if [ "$no_code_emoticon" == "1" ]
  141.     then
  142. echo "$nomemoticon $codepidgin1" >> $fichierpidgin
  143. fi
  144. if [ "$no_code_emoticon" == "2" ]
  145.     then
  146. echo "$nomemoticon $codepidgin1 $codepidgin2" >> $fichierpidgin
  147. fi
  148. if [ "$no_code_emoticon" == "3" ]
  149.     then
  150. echo "$nomemoticon $codepidgin1 $codepidgin2 $codepidgin3" >> $fichierpidgin
  151. fi
  152. }
  153. #### Boucle Cloture Fichiers ####
  154. cloture_fichiers() {
  155. # Gajim
  156. echo "}" >> $fichiergajim
  157. # Psi
  158. echo "</icondef> " >> $fichierpsi
  159. # Kopete
  160. echo "</messaging-emoticon-map>" >> $fichierkopete
  161. }
  162. #### Boucle Création des archives ####
  163. creation_archives () {
  164. cd "$repertoireorig"
  165. tar czf "$nompack-$numeroversion.tar.gz" "$repertoiredest"
  166. #zip  "$nompack-$numeroversion.jisp" "$repertoiredest"
  167. }
  168. #### Créations des fonctions générales ####
  169. creations_fichiers_conf () {
  170. init_fichier_jabbim
  171. init_fichier_gajim
  172. init_fichier_psi
  173. init_fichier_kopete
  174. init_fichier_pidgin
  175. }
  176. ajouts_fichiers_conf () {
  177. ajout_fichier_jabbim
  178. ajout_fichier_gajim 
  179. ajout_fichier_psi
  180. ajout_fichier_kopete
  181. ajout_fichier_pidgin
  182. }
  183. ##########################################
  184. ## Début du script d'ajout des smileys  ##
  185. ##########################################
  186. ### Initialisation des fichiers de configuration des smileys
  187. creations_fichiers_conf
  188. # Lecture du fichier de smileys pour ajout des codes
  189. cat fichierorigine |
  190. while read ligne
  191. do
  192.   nomemoticon=$(echo $ligne|/bin/cut -d "*" -f 1)
  193.   code1=$(echo $ligne|/bin/cut -d "*" -f 2)
  194.   code2=$(echo $ligne|/bin/cut -d "*" -f 3)
  195.   no_code_emoticon=1
  196.  
  197. if [ "$code2" == "" ]
  198.       then
  199.    ajouts_fichiers_conf
  200.       else
  201.     no_code_emoticon=$((no_code_emoticon+1))
  202.     code3=$(echo $ligne|/bin/cut -d "*" -f 4)
  203.     if [ "$code3" == "" ]
  204.       then
  205.     ajouts_fichiers_conf
  206.    else 
  207.      no_code_emoticon=$((no_code_emoticon+1))
  208.   ajouts_fichiers_conf
  209.     fi
  210.           fi
  211. done
  212. # Cloture des balises dans les fichiers le nécessitant
  213. cloture_fichiers
  214. # Création des fichiers.
  215. creation_archives


Message édité par mikala le 18-12-2008 à 12:39:57

---------------
Intermittent du GNU
n°1098268
wedgeant
Da penguin inside
Posté le 18-12-2008 à 12:41:46  profilanswer
 

ouaip [:prodigy]
 
en fait, tu devrais construire ta variable contenant la ligne à écrire au préalable, et ne faire l'echo qu'au dernier moment :jap:
1. tu parses chaque ligne en découpant, le découpage surnuméraire te rendra une variable vide si le code n'existe pas :jap: :

Code :
  1. nomemoticon=$(echo $ligne|/bin/cut -d "*" -f 1)
  2. code1=$(echo $ligne|/bin/cut -d "*" -f 2)
  3. code2=$(echo $ligne|/bin/cut -d "*" -f 3)
  4. code3=$(echo $ligne|/bin/cut -d "*" -f 4)


 
2. ensuite, tu formattes ta ligne en fonction de l'IM:

Code :
  1. lignepidgin="$nomemoticon $code1 $code2 $code3"
  2. lignekopete="<emoticon file=\"$emoticon\"><string>$code1</string>"
  3. lignepsi="<icon><text>$code1</text>"
  4. lignejabbim="'$code1' = '$nomemoticon' "
  5. lignegajim="\"$code1\" = \"$nomemoticon\", "
  6. if [ "${code2}x" != "x" ]; then
  7.     lignekopete="${lignekopete}<string>$code2</string>"
  8.     lignepsi="${lignepsi}<text>$code2</text>"
  9.     lignejabbim="${lignejabbim}\n'$code2' = '$nomemoticon' "
  10.     lignegajim="${lignegajim}\n\"$code2\" = \"$nomemoticon\", "
  11. fi
  12. if [ "${code3}x" != "x" ]; then
  13.     lignekopete="${lignekopete}<string>$code3</string>"
  14.     lignepsi="${lignepsi}<text>$code3</text>"
  15.     lignejabbim="${lignejabbim}\n'$code3 = '$nomemoticon' "
  16.     lignegajim="${lignegajim}\n\"$code3\" = \"$nomemoticon\", "
  17. fi
  18. lignekopete="${lignekopete}</emoticon>"
  19. lignepsi="${lignepsi}<object mime="image/$extension">$nomemoticon</object></icon>"


 
3. Tu écris tes lignes dans tes fichiers de conf :

Code :
  1. echo "$lignepidgin" >> "$fichierpidgin"
  2. echo -e "$lignegajim" >> "$fichiergajim"
  3. echo -e "$lignejabbim" >> "$fichierjabbim"
  4. echo "$lignekopete" >> "$fichierkopete"
  5. echo "$lignepsi" >> "$fichierpsi"


 
Et tu mets tout ça dans ta boucle while :jap:


Message édité par wedgeant le 18-12-2008 à 12:52:22

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1098275
Hrolf
Posté le 18-12-2008 à 13:33:15  profilanswer
 

Ce genre de truc c'est moche et c'est le mal :
 

Code :
  1. #     if [ "$no_code_emoticon" == "1" ]
  2. #       then
  3. #   echo "<icon><text>$code1</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  4. #     fi
  5. #     if [ "$no_code_emoticon" == "2" ]
  6. #       then
  7. #   echo "<icon><text>$code1</text><text>$code2</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  8. #     fi
  9. #      if [ "$no_code_emoticon" == "3" ]
  10. #       then
  11. #   echo "<icon><text>$code1</text><text>$code2</text><text>$code3</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  12. #     fi


 
Si c'est vraiment des numériques il mieux utiliser "-eq" et pas "==" pour une chaine de caractère.
Mais de toute façon dans ce cas précis j'utiliserais un truc avec "case" :

Code :
  1. case "$no_code_emoticon" in
  2.         '1')
  3.         echo "<icon><text>$code1</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  4.         ;;
  5.         '2')
  6.         echo "<icon><text>$code1</text><text>$code2</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  7.         ;;
  8.         '3')
  9.         echo "<icon><text>$code1</text><text>$code2</text><text>$code3</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  10.        ;;
  11.         *)
  12.        ...
  13.        ...
  14.        ...
  15.         ;;
  16. esac


---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
n°1098287
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 13:56:22  profilanswer
 

je rappelle que je suis nul en bash :o
bon j'adopte le case  de hrolf dans un premier temps,
ensuite on va intégrer les modifs de wedge :D


---------------
Intermittent du GNU
n°1098289
e_esprit
Posté le 18-12-2008 à 13:57:56  profilanswer
 

http://www.python.org
 
De rien [:cerveau dr]
 
(et sérieusement, tu te prends la tête à utiliser bash là ou un truc un poil plus avancé serait tellement plus adapté, maintenable, et lisible)


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°1098291
Fork Bomb
Obsédé textuel
Posté le 18-12-2008 à 14:00:45  profilanswer
 

e_esprit a écrit :

http://www.python.org
 
De rien [:cerveau dr]
 
(et sérieusement, tu te prends la tête à utiliser bash là ou un truc un poil plus avancé serait tellement plus adapté, maintenable, et lisible)


Il code TRES peu, uniquement en Bash et a besoin d'une solution right here, right now.
Il a pas le temps d'apprendre le python (mais si t'as le code tout fait, vas-y fépété)


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°1098300
e_esprit
Posté le 18-12-2008 à 14:15:44  profilanswer
 

Fork Bomb a écrit :


Il code TRES peu, uniquement en Bash et a besoin d'une solution right here, right now.
Il a pas le temps d'apprendre le python (mais si t'as le code tout fait, vas-y fépété)


Ok Mikala :o


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°1098305
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 14:26:26  profilanswer
 

Code :
  1. #!/bin/bash
  2. #
  3. #Script de création automatique de paquets de Smileys
  4. #pour les clients de messagerie suivants :
  5. # Psi, Jabbim, Kopete, Gajim, Pidgin
  6. #
  7. #
  8. # Balcaen John ( mikala@jabber.littleboboy.net )
  9. # crée le 17/12/2008
  10. #License GPLv3
  11. #
  12. ######################################
  13. ####   Définition des variables   ####
  14. ######################################
  15. fichierjabbim="exemple-smileys.cfg"
  16. fichiergajim="exemple-emoticons.py"
  17. fichierpsi="exemple-icondef.xml"
  18. fichierkopete="exemple-emoticons.xml"
  19. fichierpidgin="exemple-theme"
  20. numeroversion="0.5"
  21. description="Pack de smilies \"HFRCerveau\" du forum Hardware.fr"
  22. nompack="HFRCerveau"
  23. iconedefaut="D.png"
  24. repertoiredest="HFRCerveau"
  25. repertoireorig=`pwd`
  26. # Vérification de l'existence du fichier de configuration des smileys
  27. # Pour mémoire la syntaxe du fichier est la suivante
  28. # nomfichier.extension*code1*code2*code3
  29. cd $repertoiredest
  30. if [ ! -e fichierorigine ]
  31.   then
  32.       echo "pas de fichier theme existant";
  33.       exit
  34. fi
  35. ###################################
  36. ##### Définition des fonctions ####
  37. ###################################
  38. #############################################
  39. ## Fonctions d'initialisation des fichiers ##
  40. #############################################
  41. # Jabbim #
  42. init_fichier_jabbim() {
  43. echo "[header]"  > $fichierjabbim
  44. echo "'type'= 'emoticons'" >> $fichierjabbim
  45. echo "'name'= '$nompack'" >> $fichierjabbim
  46. echo "'frontImage'='$iconedefaut'" >> $fichierjabbim
  47. echo "'version'='$numeroversion'" >> $fichierjabbim
  48. echo "'description' = '$description' " >> $fichierjabbim
  49. echo "'licence' ='GPL'" >> $fichierjabbim
  50. echo "'author' = ''" >> $fichierjabbim
  51. echo "" >> $fichierjabbim
  52. echo "[emoticons]" >> $fichierjabbim
  53. }
  54. # Gajim #
  55. init_fichier_gajim() {
  56. echo "emoticons = {" > $fichiergajim
  57. }
  58. # Psi #
  59. init_fichier_psi() {
  60. echo "<?xml version='1.0' encoding='UTF-8'?>" > $fichierpsi
  61. echo "<icondef>" >> $fichierpsi
  62. echo "<meta>" >> $fichierpsi
  63. echo "<name>$nompack</name>" >> $fichierpsi
  64. echo "<version>$numeroversion</version>">> $fichierpsi
  65. echo "<description>$description</description>" >> $fichierpsi
  66. echo "<author>Jérôme Dubois</author>" >> $fichierpsi
  67. echo "<author>John Balcaen</author>" >> $fichierpsi
  68. echo "<home>http://www.jerrycrazy.be.cx</home>" >> $fichierpsi
  69. echo "</meta>" >> $fichierpsi
  70. }
  71. # Kopete #
  72. init_fichier_kopete () {
  73. echo "<?xml version=\"1.0\"?>" > $fichierkopete
  74. echo "<messaging-emoticon-map>" >> $fichierkopete
  75. }
  76. # Pidgin #
  77. init_fichier_pidgin () {
  78. echo "Name=$nompack $numeroversion" > $fichierpidgin
  79. echo "Description=$description" >> $fichierpidgin
  80. echo "Icon=$iconedefaut" >> $fichierpidgin
  81. echo "Author=Jérôme Dubois & John Balcaen" >> $fichierpidgin
  82. echo "" >> $fichierpidgin
  83. echo "[default]" >> $fichierpidgin
  84. }
  85. #################################
  86. ## Fin initialisation Fichiers ##
  87. #################################
  88. ##################################
  89. ## Fonctions d'ajout de smileys ##
  90. ##################################
  91. # Jabbim #
  92. ajout_fichier_jabbim() {
  93. case "$no_code_emoticon" in
  94.     '1')
  95.     echo "'$code1' = '$nomemoticon' " >> $fichierjabbim
  96.     ;;
  97.     '2')
  98.     echo "'$code2' = '$nomemoticon' " >> $fichierjabbim
  99.       ;;
  100.     '3')
  101.    echo "'$code3' = '$nomemoticon' " >> $fichierjabbim
  102.       ;;
  103.       *)
  104. esac
  105. }
  106. # Gajim #
  107. ajout_fichier_gajim() {
  108. case "$no_code_emoticon" in
  109.     '1')
  110.         echo "\"$code1\" = \"$nomemoticon\"," >> $fichiergajim
  111. ;;
  112.     '2')
  113. echo "\"$code2\" = \"$nomemoticon\"," >> $fichiergajim
  114. ;;
  115.     '3')
  116. echo "\"$code3\" = \"$nomemoticon\"," >> $fichiergajim
  117.         ;;
  118. *)
  119. esac
  120. }
  121. # Psi #
  122. ajout_fichier_psi () {
  123. extension=$(echo $nomemoticon |cut -d "." -f 2)
  124. case "$no_code_emoticon" in
  125.    '1')
  126.       echo "<icon><text>$code1</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  127.     ;;
  128.     '2')
  129.        echo "<icon><text>$code1</text><text>$code2</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  130.     ;;
  131.     '3')
  132.          echo "<icon><text>$code1</text><text>$code2</text><text>$code3</text><object mime="image/$extension">$nomemoticon</object></icon>" >> $fichierpsi
  133.     ;;
  134.     *)
  135. esac
  136. }
  137. # Kopete #
  138. ajout_fichier_kopete () {
  139. emoticon=$(echo $nomemoticon | cut -d "." -f 1)
  140. case "$no_code_emoticon" in
  141.   '1')
  142.       echo "<emoticon file=\"$emoticon\"><string>$code1</string></emoticon>" >> $fichierkopete
  143.    ;;
  144.   '2')
  145.       echo "<emoticon file=\"$emoticon\"><string>$code1</string><string>$code2</string></emoticon>" >> $fichierkopete
  146.    ;;
  147.    '3')
  148.      echo "<emoticon file=\"$emoticon\"><string>$code1</string><string>$code2</string><string>$code3</string></emoticon>" >> $fichierkopete
  149.    ;;
  150.   *)
  151. esac
  152. }
  153. # Pidgin #
  154. ajout_fichier_pidgin () {
  155. #Gestion du \ pour le fichier de configuration de pidgin.
  156. FILTRE='s/\\/\\\\/'
  157. codepidgin1=$(echo "$code1" |sed -e "$FILTRE" )
  158. codepidgin2=$(echo "$code2" |sed -e "$FILTRE" )
  159. codepidgin3=$(echo "$code3" |sed -e "$FILTRE" )
  160. case "$no_code_emoticon" in
  161.   '1')
  162.      echo "$nomemoticon $codepidgin1" >> $fichierpidgin
  163.    ;;
  164.   '2')
  165. echo "$nomemoticon $codepidgin1 $codepidgin2" >> $fichierpidgin
  166.    ;;
  167.   '3')
  168.       echo "$nomemoticon $codepidgin1 $codepidgin2 $codepidgin3" >> $fichierpidgin
  169.    ;;
  170.    *)
  171. esac
  172. }
  173. ################################
  174. ## Fin Ajouts d'émoticons     ##
  175. ################################
  176. ##########################################
  177. #### Fonction Boucle Cloture Fichiers ####
  178. ##########################################
  179. cloture_fichiers() {
  180. # Gajim
  181. echo "}" >> $fichiergajim
  182. # Psi
  183. echo "</icondef> " >> $fichierpsi
  184. # Kopete
  185. echo "</messaging-emoticon-map>" >> $fichierkopete
  186. }
  187. ######################################
  188. #### Boucle Création des archives ####
  189. ######################################
  190. creation_archives () {
  191. cd "$repertoireorig"
  192. tar czf "$nompack-$numeroversion.tar.gz" "$repertoiredest"
  193. #zip  "$nompack-$numeroversion.jisp" "$repertoiredest"
  194. }
  195. ##################################################
  196. #### Boucles d'appels aux précédentes boucles ####
  197. ##################################################
  198. creations_fichiers_conf () {
  199. init_fichier_jabbim
  200. init_fichier_gajim
  201. init_fichier_psi
  202. init_fichier_kopete
  203. init_fichier_pidgin
  204. }
  205. ajouts_fichiers_conf () {
  206. ajout_fichier_jabbim
  207. ajout_fichier_gajim 
  208. ajout_fichier_psi
  209. ajout_fichier_kopete
  210. ajout_fichier_pidgin
  211. }
  212. ##########################################
  213. ## Début du script d'ajout des smileys  ##
  214. ##########################################
  215. ### Initialisation des fichiers de configuration des smileys
  216. creations_fichiers_conf
  217. # Lecture du fichier de smileys pour ajout des codes
  218. cat fichierorigine |
  219. while read ligne
  220. do
  221.   nomemoticon=$(echo $ligne|/bin/cut -d "*" -f 1)
  222.   code1=$(echo $ligne|/bin/cut -d "*" -f 2)
  223.   code2=$(echo $ligne|/bin/cut -d "*" -f 3)
  224.   no_code_emoticon=1
  225.  
  226. if [ "$code2" == "" ]
  227.       then
  228.    ajouts_fichiers_conf
  229.       else
  230.     no_code_emoticon=$((no_code_emoticon+1))
  231.     code3=$(echo $ligne|/bin/cut -d "*" -f 4)
  232.     if [ "$code3" == "" ]
  233.       then
  234.     ajouts_fichiers_conf
  235.    else 
  236.      no_code_emoticon=$((no_code_emoticon+1))
  237.   ajouts_fichiers_conf
  238.     fi
  239.           fi
  240. done
  241. # Cloture des balises dans les fichiers le nécessitant
  242. cloture_fichiers
  243. # Création des fichiers.
  244. creation_archives


bon voila pour l'instant après l'intégration de case \o/
on va voir pour la suite après la balade.

 

Pour le python ou le perl je ne connais pas *du* tout :/


Message édité par mikala le 18-12-2008 à 14:27:28

---------------
Intermittent du GNU
n°1098318
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 14:58:35  profilanswer
 

wedge> bon j'ai copié/collé tes trucs et je vais relire car il y a quelques soucis :)
pour le fichier psi

Citation :


<text>:-)</text><object mime=image/>Smile.png</object></icon>
<text>:-)</text><object mime=image/>Smile.png</object></icon><text>:d</text><object mime=image/>D.png</object></icon>
<text>:-)</text><object mime=image/>Smile.png</object></icon><text>:d</text><object mime=image/>D.png</object></icon><text>;-)</text><text>;-)</text><object mime=image/>Wink.png</object></icon>
<text>:-)</text><object mime=image/>Smile.png</object></icon><text>:d</text><object mime=image/>D.png</object></icon><text>;-)</text><text>;-)</text><object mime=image/>Wink.png</object></icon><text>:-(</text><object mime=image/>Sad.png</object></icon>
<text>:-)</text><object mime=image/>Smile.png</object></icon><text>:d</text><object mime=image/>D.png</object></icon><text>;-)</text><text>;-)</text><object mime=image/>Wink.png</object></icon><text>:-(</text><object mime=image/>Sad.png</object></icon><object mime=image/>SadNoir.png</object></icon>
<text>:-)</text><object mime=image/>Smile.png</object></icon><text>:d</text><object mime=image/>D.png</object></icon><text>;-)</text><text>;-)</text><object mime=image/>Wink.png</object></icon><text>:-(</text><object mime=image/>Sad.png</object></icon><object mime=image/>SadNoir.png</object></icon><text>:-|</text><object mime=image/>No.png</object></icon>
<text>:-)</text><object mime=image/>Smile.png</object></icon><text>:d</text><object mime=image/>D.png</object></icon><text>;-)</text><text>;-)</text><object mime=image/>Wink.png</object></icon><text>:-(</text><object mime=image/>Sad.png</object></icon><object mime=image/>SadNoir.png</object></icon><text>:-|</text><object mime=image/>No.png</object></icon><object mime=image/>Arf.png</object></icon>


pour le fichier gajim

Citation :


":-)" = "Smile.png",
":d" = "D.png",
";-)" = "Wink.png",
";-)" = "Wink.png",
 
":-)" = "Smile.png",
":d" = "D.png",
";-)" = "Wink.png",
";-)" = "Wink.png",
":-(" = "Sad.png",
 
":-)" = "Smile.png",
":d" = "D.png",
";-)" = "Wink.png",
";-)" = "Wink.png",
":-(" = "Sad.png",
 
":-)" = "Smile.png",
":d" = "D.png",
";-)" = "Wink.png",
";-)" = "Wink.png",
":-(" = "Sad.png",
":-|" = "No.png",
 
":-)" = "Smile.png",
":d" = "D.png",
";-)" = "Wink.png",
";-)" = "Wink.png",
":-(" = "Sad.png",
":-|" = "No.png",



---------------
Intermittent du GNU
n°1098401
Taz
bisounours-codeur
Posté le 18-12-2008 à 20:01:39  profilanswer
 

set -eu
 
 
première ligne
 
cd $repertoiredest
 
déjà si ça foire ça t'es mal.

n°1098406
Hrolf
Posté le 18-12-2008 à 20:26:01  profilanswer
 

ouep un petit test de retour serait pas mal :p
 
if [ $? -eq 0 ] ... ( "$?"  c'est le test du code retour de la commande ;) )


Message édité par Hrolf le 18-12-2008 à 20:33:22

---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
n°1098410
e_esprit
Posté le 18-12-2008 à 20:37:57  profilanswer
 

Je peux jouer en Python ? [:cerveau dr]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°1098412
e_esprit
Posté le 18-12-2008 à 20:42:16  profilanswer
 

T'as un bug là :


Sad.png*:(*:-(*
 


y a un * en trop à la fin :whistle:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°1098425
e_esprit
Posté le 18-12-2008 à 21:27:55  profilanswer
 

Code :
  1. #! /usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. #
  4. #Script de création automatique de paquets de Smileys
  5. #pour les clients de messagerie suivants :
  6. # Psi, Jabbim, Kopete, Gajim, Pidgin
  7. #
  8. #
  9. # Balcaen John ( mikala@jabber.littleboboy.net )
  10. # crée le 17/12/2008
  11. # Pythonification : Eesprit :p
  12. #License GPLv3
  13. #
  14. import os.path
  15. import os
  16. import sys
  17. import subprocess
  18.  
  19. # Vérification de l'existence du fichier de configuration des smileys
  20. # Pour mémoire la syntaxe du fichier est la suivante
  21. # nomfichier.extension*code1*code2*code3
  22. if not os.path.exists('origine.txt'):
  23.    print "pas de fichier theme existant"
  24.    sys.exit(-1)
  25.  
  26. # Définition des variables
  27. repertoire_dest = "HFRCerveau"
  28. if not os.path.exists(repertoire_dest):
  29.    print "Creation du repertoire : %s" % (repertoire_dest)
  30.    os.mkdir(repertoire_dest)
  31.  
  32. fichier_jabbim = open(os.path.join(repertoire_dest, "exemple-smileys.cfg" ), 'w')
  33. fichier_gajim = open(os.path.join(repertoire_dest, "exemple-emoticons.py" ), 'w')
  34. fichier_psi = open(os.path.join(repertoire_dest, "exemple-icondef.xml" ), 'w')
  35. fichier_kopete = open(os.path.join(repertoire_dest, "exemple-emoticons.xml" ), 'w')
  36. fichier_pidgin = open(os.path.join(repertoire_dest, "exemple-theme" ), 'w')
  37. numero_version = "0.5"
  38. description="Pack de smilies \"HFRCerveau\" du forum Hardware.fr"
  39. nom_pack="HFRCerveau"
  40. icone_defaut="D.png"
  41.  
  42. fichier_origine = open('origine.txt')
  43.  
  44. #######################################################
  45. # Définition des fonctions initialisation des fichiers#
  46. #######################################################
  47. #### Jabbim ####
  48. def init_fichier_jabbim():
  49.    print >> fichier_jabbim, "[header]"
  50.    print >> fichier_jabbim, "'type'= 'emoticons'"
  51.    print >> fichier_jabbim, "'name'= '%s'" % (nom_pack)
  52.    print >> fichier_jabbim, "'frontImage'='%s'" % (icone_defaut)
  53.    print >> fichier_jabbim, "'version'='%s'"  % (numero_version)
  54.    print >> fichier_jabbim, "'description' = '%s'" % (description)
  55.    print >> fichier_jabbim, "'licence' ='GPL'"
  56.    print >> fichier_jabbim, "'author' = ''"
  57.    print >> fichier_jabbim, ""
  58.    print >> fichier_jabbim, "[emoticons]"
  59.  
  60. def ajout_fichier_jabbim(icon, codes):
  61.    for code in codes:
  62.        print >> fichier_jabbim, '"%s" = "%s"' % (code, icon)
  63.  
  64.  
  65. #### Gajim ####
  66. def init_fichier_gajim():
  67.    print >> fichier_gajim, "emoticons = {"
  68.  
  69. def ajout_fichier_gajim(icon, codes):
  70.    for code in codes:
  71.        print >> fichier_gajim, '"%s" = "%s",' % (code, icon)
  72.  
  73. #### Psi #####
  74. def init_fichier_psi():
  75.    print >> fichier_psi, "<?xml version='1.0' encoding='UTF-8'?>"
  76.    print >> fichier_psi, "<icondef>"
  77.    print >> fichier_psi, "<meta>"
  78.    print >> fichier_psi, "<name>%s</name>" % (nom_pack)
  79.    print >> fichier_psi, "<version>%s</version>" % (numero_version)
  80.    print >> fichier_psi, "<description>%s</description>" % (description)
  81.    print >> fichier_psi, "<author>Jérôme Dubois</author>"
  82.    print >> fichier_psi, "<author>John Balcaen</author>"
  83.    print >> fichier_psi, "<home>http://www.jerrycrazy.be.cx</home>"
  84.    print >> fichier_psi, "</meta>"
  85.  
  86. def ajout_fichier_psi (icon, codes):
  87.    extension = os.path.splitext(icon)[1]
  88.    print >> fichier_psi, "<icon>",
  89.    for code in codes:
  90.        print >> fichier_psi, "<text>%s</text>" % (code),
  91.    print >> fichier_psi, '<object mime="image/%s">%s</object></icon>' % (extension, icon)
  92.  
  93. ### Kopete ######
  94. def init_fichier_kopete ():
  95.    print >> fichier_kopete, "<?xml version=\"1.0\"?>"
  96.    print >> fichier_kopete, "<messaging-emoticon-map>"
  97.  
  98. def ajout_fichier_kopete (icon, codes):
  99.    emoticon = os.path.splitext(icon)[0]
  100.    print >> fichier_kopete, '<emoticon file="%s">' % (emoticon),
  101.    for code in codes:
  102.        print >> fichier_kopete, "<string>%s</string>" % (code),
  103.    print >> fichier_kopete, "</emoticon>"
  104.  
  105. #Pidgin
  106. def init_fichier_pidgin ():
  107.    print >> fichier_pidgin, "Name=%s %s" % (nom_pack, numero_version)
  108.    print >> fichier_pidgin, "Description=%s " % (description)
  109.    print >> fichier_pidgin, "Icon=%s" % (icone_defaut)
  110.    print >> fichier_pidgin, "Author=Jérôme Dubois & John Balcaen"
  111.    print >> fichier_pidgin, ""
  112.    print >> fichier_pidgin, "[default]"
  113.  
  114. def ajout_fichier_pidgin (icon, codes):
  115.    print >> fichier_pidgin, icon,
  116.    for code in codes:
  117.        print >> fichier_pidgin, code,
  118.    print >> fichier_pidgin
  119.  
  120. def cloture_fichiers():
  121.    # Gajim
  122.    print >> fichier_gajim, "}"
  123.    # Psi
  124.    print  >> fichier_psi, "</icondef> "
  125.    # Kopete
  126.    print >> fichier_kopete, "</messaging-emoticon-map>"
  127.    fichier_jabbim.close()
  128.    fichier_gajim.close()
  129.    fichier_psi.close()
  130.    fichier_kopete.close()
  131.    fichier_pidgin.close()
  132.  
  133.  
  134. def creation_archives ():
  135.    subprocess.call(['tar', 'czf', "%s-%s.tar.gz" % (nom_pack, numero_version), repertoire_dest])
  136.    subprocess.call(['zip', '-r', "%s-%s.jisp" % (nom_pack, numero_version), repertoire_dest])
  137.    
  138. ##########################################
  139. ## Début du script d'ajout des smileys  ##
  140. ##########################################
  141. ### Initialisation des fichiers de configuration des smileys
  142. init_fichier_jabbim()
  143. init_fichier_gajim()
  144. init_fichier_psi()
  145. init_fichier_kopete()
  146. init_fichier_pidgin()
  147. # Lecture du fichier de smileys pour ajout des codes
  148.  
  149. lines = fichier_origine.readlines()
  150. for line in lines:
  151.    # Suppression \n :
  152.    line = line[:-1]
  153.    icon, codes = line.split('*')[0], line.split('*')[1:]
  154.    ajout_fichier_jabbim(icon, codes)
  155.    ajout_fichier_gajim(icon, codes)
  156.    ajout_fichier_psi(icon, codes)
  157.    ajout_fichier_kopete(icon, codes)
  158.    ajout_fichier_pidgin(icon, codes)
  159.    
  160. # Cloture des balises dans les fichiers le nécessitant
  161. cloture_fichiers()
  162. # Création des fichiers.
  163. creation_archives()


Ton fichier source doit s'appeller origine.txt :o
Je pense pas que ce soit plus dur à maintenir que ton script bash :o


Message édité par e_esprit le 18-12-2008 à 21:29:20

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°1098429
Mjules
Modérateur
Parle dans le vide
Posté le 18-12-2008 à 21:37:56  profilanswer
 

[:jar jar]

 

je le savais !


Message édité par Mjules le 18-12-2008 à 21:38:07

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1098452
mikala
Souviens toi du 5 Novembre...
Posté le 18-12-2008 à 23:52:33  profilanswer
 

bon, il est clairement plus simple et puissant que mon pauvre bash [:totoz]


---------------
Intermittent du GNU
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [BASH] Amélioration de script (boucle et autre)

 

Sujets relatifs
Shell boucle et condition[bash] effectuer un ls sans afficher chemin des fichiers
comment enchainer des sed sur un fichier script[bash] trouver le fichier le plus recent dans un dossier avec find
[bash] commande lors de l'ouverture d'un terminalScript qui change l'extension d'un fichier
[script zsh] possibilité de faire ça en une ligne ?Redirection de script avec arguments
envoyer le flux d'erreur d'un script dans un mail[Resolu] expect Script
Plus de sujets relatifs à : [BASH] Amélioration de script (boucle et autre)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR