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

Amélioration de script (boucle et autre) [BASH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 18-12-2008 à 11:34:22    

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
Reply

Marsh Posté le 18-12-2008 à 11:34:22   

Reply

Marsh Posté le 18-12-2008 à 11:41:44    

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
Reply

Marsh Posté le 18-12-2008 à 11:45:21    

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
Reply

Marsh Posté le 18-12-2008 à 11:48:38    

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
Reply

Marsh Posté le 18-12-2008 à 11:49:19    

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
Reply

Marsh Posté le 18-12-2008 à 11:59:35    

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
Reply

Marsh Posté le 18-12-2008 à 12:08:40    

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
Reply

Marsh Posté le 18-12-2008 à 12:14:20    

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
Reply

Marsh Posté le 18-12-2008 à 12:20:56    

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
Reply

Marsh Posté le 18-12-2008 à 12:21:15    

il reste ma boucle maintenant wedge :o


---------------
Intermittent du GNU
Reply

Marsh Posté le 18-12-2008 à 12:21:15   

Reply

Marsh Posté le 18-12-2008 à 12:24:04    

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
Reply

Marsh Posté le 18-12-2008 à 12:41:46    

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
Reply

Marsh Posté le 18-12-2008 à 13:33:15    

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 !
Reply

Marsh Posté le 18-12-2008 à 13:56:22    

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
Reply

Marsh Posté le 18-12-2008 à 13:57:56    

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.
Reply

Marsh Posté le 18-12-2008 à 14:00:45    

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 !"
Reply

Marsh Posté le 18-12-2008 à 14:15:44    

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.
Reply

Marsh Posté le 18-12-2008 à 14:26:26    

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
Reply

Marsh Posté le 18-12-2008 à 14:58:35    

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
Reply

Marsh Posté le 18-12-2008 à 20:01:39    

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

Reply

Marsh Posté le 18-12-2008 à 20:26:01    

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 !
Reply

Marsh Posté le 18-12-2008 à 20:37:57    

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.
Reply

Marsh Posté le 18-12-2008 à 20:42:16    

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.
Reply

Marsh Posté le 18-12-2008 à 21:27:55    

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.
Reply

Marsh Posté le 18-12-2008 à 21:37:56    

[: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.
Reply

Marsh Posté le 18-12-2008 à 23:52:33    

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


---------------
Intermittent du GNU
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed