begin process at 2012 02 10 17:43:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > QUOTES BASH ET BASHFR

QUOTES BASH ET BASHFR


 Information sur la source

Note :
Aucune note
Catégorie :Réseau & Internet Classé sous :quote, bash, bashfr, citation, socket Niveau :Initié Date de création :09/07/2008 Date de mise à jour :12/07/2008 17:33:08 Vu :3 841

Auteur : Flyswat

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce script permet d'afficher les quotes du site bashfr.org et bash.org sur le salon.
les commandes sont:
!bashfr [X] : affiche la quote numéro X
!bashfr last : affiche la dernière quote
!bashfr : affiche une quote au hasard
même chose pour bash.org:
!bash [X]
!bash last
!bash

Explication : le script récupère le code source de la page par socket et l'enregistre dans un fichier "perle.txt" avant de commencer à "parser" le code et à dégager la quote du reste.
L'alias  strip_html ,comme son nom l'indique, remplace les codes HTML des caractères (ex: > -> >, © -> ® ).

Source

  • alias bash {
  • if (%quote_lang = fr) {
  • if (%quote_num = aléatoire) set %link http://www.bashfr.org/?sort=random2
  • elseif (%quote_num = last) set %link http://www.bashfr.org/?sort=latest
  • else set %link http://www.bashfr.org/? $+ %quote_num
  • }
  • else {
  • if (%quote_num = aléatoire) set %link http://www.bash.org/?random1
  • elseif (%quote_num = last) set %link http://www.bash.org/?latest
  • else set %link http://www.bash.org/?quote= $+ %quote_num
  • }
  • write -c perle.txt
  • sockclose bash
  • if ( %quote_lang = fr ) sockopen bash 212.85.158.124 80
  • else sockopen bash www.bash.org 80
  • if ($sockerr > 0) { echo -ag 4 Error on openning socket. }
  • }
  • on *:sockopen:bash:{
  • if $sockerr {
  • if ($sockerr = 3) echo -ag 15Erreur de connection
  • halt
  • return
  • }
  • sockwrite -n $sockname GET %link HTTP/1.1
  • if ( %quote_lang = fr ) sockwrite -nt $sockname Host : 212.85.158.124
  • else sockwrite -nt $sockname Host : www.bash.org
  • sockwrite $sockname $crlf
  • }
  • on *:sockread:bash: {
  • sockread %perle
  • write perle.txt %perle
  • if (%perle = </html>) {
  • if ( %quote_lang = fr ) treatfr
  • else treateng
  • sockclose bash
  • }
  • }
  • alias treateng {
  • var %q_start = $read(perle.txt,w,<p class="quote">*)
  • if ($readn = 0) {
  • if (%quote_num = aléatoire) bash
  • else msg %quote_chan 5&#164; Quote7 %quote_num 5inexistante &#164;
  • halt
  • }
  • var %q_debut = $readn
  • var %parse_num = $regex(num,%q_start,<p class="quote"><a href="\?([0-9]*?)")
  • %parse_num = $regml(num,1)
  • var %strip_quote = $regex(strip,%q_start,.*<p class="qt">(.*))
  • var %quote = $regml(strip,1)
  • msg %quote_chan 5&#164; Quote7 $iif((%quote_num = aléatoire) || (%quote_num = last),%parse_num,%quote_num) 5&#164;
  • msg %quote_chan $strip_html(%quote)
  • inc %q_debut
  • var %lol = $read(perle.txt,w,*</p>)
  • var %q_fin = $readn
  • while (%q_debut <= %q_fin) {
  • %quote = $read(perle.txt,%q_debut)
  • msg %quote_chan $strip_html(%quote)
  • inc %q_debut
  • }
  • msg %quote_chan 5&#164; 14www.bash.org 5&#164;
  • }
  • alias treatfr {
  • var %lol = $read(perle.txt,w,*<div class="quote1">*)
  • var %parse_num = $regex(num,%lol,.*?<div class="quote1">#<a href="\?([0-9]*?)")
  • %parse_num = $regml(num,1)
  • if ($readn = 0) {
  • if (%quote_num = aléatoire) bash
  • else msg %quote_chan 5&#164; Quote7 %quote_num 5inexistante &#164;
  • halt
  • }
  • var %quote_strip = $regex(strip,%lol,.*<br />(.*)<br />)
  • var %quote = $regml(strip,1)
  • msg %quote_chan 5&#164; Quote7 $iif((%quote_num = aléatoire) || (%quote_num = last),%parse_num,%quote_num) 5&#164;
  • msg %quote_chan $strip_html(%quote)
  • var %q_debut = $readn
  • inc %q_debut
  • var %lol = $read(perle.txt,w,</div><div class="adsense">*)
  • var %q_fin = $readn
  • while (%q_debut < %q_fin) {
  • %quote = $read(perle.txt,%q_debut)
  • msg %quote_chan $strip_html(%quote)
  • inc %q_debut
  • }
  • msg %quote_chan 5&#164; 14www.bashfr.org 5&#164;
  • }
  • on *:TEXT:!bash*:#: {
  • set %quote_chan $chan
  • if ($1 = !bashfr) {
  • if ($2 isnum) set %quote_num $2
  • elseif (($2 = last) || ($2 = dernière)) set %quote_num last
  • else set %quote_num aléatoire
  • set %quote_lang fr
  • bash
  • }
  • if ($1 =!bash) {
  • if ($2 isnum) set %quote_num $2
  • elseif ($2 = last || $2 = dernière) set %quote_num last
  • else set %quote_num aléatoire
  • set %quote_lang eng
  • bash
  • }
  • }
  • on *:input:*: {
  • if ($1 = !bashfr) {
  • if ($2 isnum) set %quote_num $2
  • elseif (($2 = last) || ($2 = dernière)) set %quote_num last
  • else set %quote_num aléatoire
  • set %quote_chan $active
  • set %quote_lang fr
  • bash
  • }
  • if ($1 = !bash) {
  • if ($2 isnum) set %quote_num $2
  • elseif (($2 = last) || ($2 = dernière)) set %quote_num last
  • else set %quote_num aléatoire
  • set %quote_chan $active
  • set %quote_lang eng
  • bash
  • }
  • }
  • alias strip_html {
  • var %strip = $replace($1-,<br />,,</p>,)
  • while (*&*;* iswm %strip) {
  • var %escape_html = $regex(html,%strip,.*(&(.*?);).*)
  • if ( $right($regml(html,2),3) isnum ) var %escaped_chr = $chr($right($regml(html,2),3))
  • else {
  • if (gt = $regml(html,2)) var %escaped_chr = >
  • if (lt = $regml(html,2)) var %escaped_chr = <
  • if (quot = $regml(html,2)) var %escaped_chr = "
  • if (agrave = $regml(html,2)) var %escaped_chr = à
  • if (egrave = $regml(html,2)) var %escaped_chr = è
  • if (eacute = $regml(html,2)) var %escaped_chr = é
  • if (ccedil = $regml(html,2)) var %escaped_chr = ç
  • if (acirc = $regml(html,2)) var %escaped_chr = â
  • if (ocirc = $regml(html,2)) var %escaped_chr = ô
  • if (ucirc = $regml(html,2)) var %escaped_chr = û
  • if (icirc = $regml(html,2)) var %escaped_chr = î
  • if (auml = $regml(html,2)) var %escaped_chr = ä
  • if (iuml = $regml(html,2)) var %escaped_chr = ï
  • if (ouml = $regml(html,2)) var %escaped_chr = ö
  • if (uuml = $regml(html,2)) var %escaped_chr = ü
  • if (ugrave = $regml(html,2)) var %escaped_chr = ù
  • else return
  • }
  • %strip = $replace(%strip,$regml(html,1),%escaped_chr)
  • }
  • return %strip
  • }
alias bash {
  if (%quote_lang = fr) {
    if (%quote_num = aléatoire) set %link http://www.bashfr.org/?sort=random2
    elseif (%quote_num = last) set %link http://www.bashfr.org/?sort=latest    
    else set %link http://www.bashfr.org/? $+ %quote_num
  }
  else {
    if (%quote_num = aléatoire) set %link http://www.bash.org/?random1
    elseif (%quote_num = last) set %link http://www.bash.org/?latest
    else set %link http://www.bash.org/?quote= $+ %quote_num
  }
  write -c perle.txt 
  sockclose bash
  if ( %quote_lang = fr ) sockopen bash 212.85.158.124 80
  else sockopen bash www.bash.org 80
  if ($sockerr > 0) { echo -ag 4 Error on openning socket. }
}
on *:sockopen:bash:{
  if $sockerr {
    if ($sockerr = 3) echo -ag 15Erreur de connection
    halt
    return
  }
  sockwrite -n $sockname GET %link HTTP/1.1
  if ( %quote_lang = fr ) sockwrite -nt $sockname Host : 212.85.158.124
  else sockwrite -nt $sockname Host : www.bash.org
  sockwrite $sockname $crlf
}
on *:sockread:bash: {
  sockread %perle
  write perle.txt %perle
  if (%perle = </html>) {
    if ( %quote_lang = fr ) treatfr
    else treateng
    sockclose bash
  }
}

alias treateng {
  var %q_start = $read(perle.txt,w,<p class="quote">*)
  if ($readn = 0) {
    if (%quote_num = aléatoire) bash
    else msg %quote_chan 5&#164; Quote7 %quote_num 5inexistante &#164;
    halt
  }
  var %q_debut = $readn
  var %parse_num = $regex(num,%q_start,<p class="quote"><a href="\?([0-9]*?)")
  %parse_num = $regml(num,1)
  var %strip_quote = $regex(strip,%q_start,.*<p class="qt">(.*))
  var %quote = $regml(strip,1)

  msg %quote_chan 5&#164; Quote7 $iif((%quote_num = aléatoire) || (%quote_num = last),%parse_num,%quote_num) 5&#164;
  msg %quote_chan $strip_html(%quote)

  inc %q_debut
  var %lol = $read(perle.txt,w,*</p>)
  var %q_fin = $readn


  while (%q_debut <= %q_fin) {
    %quote = $read(perle.txt,%q_debut)
    msg %quote_chan $strip_html(%quote)
    inc %q_debut
  }

  msg %quote_chan 5&#164; 14www.bash.org 5&#164;

}


alias treatfr {
  var %lol = $read(perle.txt,w,*<div class="quote1">*)
  var %parse_num = $regex(num,%lol,.*?<div class="quote1">#<a href="\?([0-9]*?)")
  %parse_num = $regml(num,1)


  if ($readn = 0) {
    if (%quote_num = aléatoire) bash
    else msg %quote_chan 5&#164; Quote7 %quote_num 5inexistante &#164;
    halt
  }
  var %quote_strip = $regex(strip,%lol,.*<br />(.*)<br />)
  var %quote = $regml(strip,1)

  msg %quote_chan 5&#164; Quote7 $iif((%quote_num = aléatoire) || (%quote_num = last),%parse_num,%quote_num) 5&#164;
  msg %quote_chan $strip_html(%quote)

  var %q_debut = $readn
  inc %q_debut
  var %lol = $read(perle.txt,w,</div><div class="adsense">*)
  var %q_fin = $readn


  while (%q_debut < %q_fin) {
    %quote = $read(perle.txt,%q_debut)
    msg %quote_chan $strip_html(%quote)
    inc %q_debut
  }
  msg %quote_chan 5&#164; 14www.bashfr.org 5&#164;
}

on *:TEXT:!bash*:#: {
  set %quote_chan $chan
  if ($1 = !bashfr) {
    if ($2 isnum) set %quote_num $2
    elseif (($2 = last) || ($2 = dernière)) set %quote_num last
    else set %quote_num aléatoire
    set %quote_lang fr
    bash
  }
  if ($1 =!bash) {
    if ($2 isnum) set %quote_num $2
    elseif ($2 = last || $2 = dernière) set %quote_num last
    else set %quote_num aléatoire
    set %quote_lang eng
    bash
  }
}

on *:input:*: {
  if ($1 = !bashfr) {
    if ($2 isnum) set %quote_num $2
    elseif (($2 = last) || ($2 = dernière)) set %quote_num last
    else set %quote_num aléatoire
    set %quote_chan $active
    set %quote_lang fr
    bash
  }
  if ($1 = !bash) {
    if ($2 isnum) set %quote_num $2
    elseif (($2 = last) || ($2 = dernière)) set %quote_num last
    else set %quote_num aléatoire
    set %quote_chan $active
    set %quote_lang eng
    bash
  }
}
alias strip_html {
  var %strip = $replace($1-,<br />,,</p>,)

  while (*&*;* iswm %strip) {
    var %escape_html = $regex(html,%strip,.*(&(.*?);).*)
    if ( $right($regml(html,2),3) isnum ) var %escaped_chr = $chr($right($regml(html,2),3))
    else {
      if (gt = $regml(html,2)) var %escaped_chr = >
      if (lt = $regml(html,2)) var %escaped_chr = <
      if (quot = $regml(html,2)) var %escaped_chr = "
      if (agrave = $regml(html,2)) var %escaped_chr = à
      if (egrave = $regml(html,2)) var %escaped_chr = è
      if (eacute = $regml(html,2)) var %escaped_chr = é
      if (ccedil = $regml(html,2)) var %escaped_chr = ç
      if (acirc = $regml(html,2)) var %escaped_chr = â
      if (ocirc = $regml(html,2)) var %escaped_chr = ô
      if (ucirc = $regml(html,2)) var %escaped_chr = û
      if (icirc = $regml(html,2)) var %escaped_chr = î
      if (auml = $regml(html,2)) var %escaped_chr = ä
      if (iuml = $regml(html,2)) var %escaped_chr = ï
      if (ouml = $regml(html,2)) var %escaped_chr = ö
      if (uuml = $regml(html,2)) var %escaped_chr = ü
      if (ugrave = $regml(html,2)) var %escaped_chr = ù
      else return
    }
    %strip = $replace(%strip,$regml(html,1),%escaped_chr)
  }
  return %strip
}

 Conclusion

Remarque: on peut faire "!bashfr last" ou "!bashfr dernière" celà revient au même.
Sinon le site de bash.org est assez lent, donc l'obtention de la quote avec !bash est un peu lente.

S'il y a un bug ou si vous avez des propositions, n'hésitez pas à en faire part; je règlerais ça dès que possible ;]


 Historique

12 juillet 2008 17:33:08 :
"else return" mal placé dans l'alias strip_html

 Sources de la même categorie

Source avec Zip Source avec une capture FIREWALL par Bestdoud
ASPIRATEUR DE GALERIES INTERNET par PaDa
Source avec Zip MSN MESSENGER SUR IRC SCRIPT POUR COMPRENDRE LE FONCTIONEMEN... par synsun
Source avec Zip Source avec une capture PROGRAMME TV (PICWIN) par AgoRa_ScripT
Source avec une capture DERNIERES INFOS DU NET. (SITE PC INPACT) par AgoRa_ScripT

 Sources en rapport avec celle ci

Source avec une capture TORRENT VIEWER par kamikaze97441
SERVEUR FTP par hisoka2501
SYSTÈME DE QUOTES PUBLIC par MenzAgitat
SYSTÈME DE QUOTES par Mast3r
Source avec Zip Source avec une capture QUOTE SYSTEM par tidds

Commentaires et avis

Commentaire de RCA ArKanis le 11/07/2008 23:59:55

j'suis pas fan de ce qui suit :


while (...) {
if () {

}
else {
  if ()
  if ()
}
else {

}

deux else alignés ? t'es sûr que ça fonctionne ? ^^

je suis sûr que ton code est largement optimisable, et tu devrais à mon avis directement parser le code de la page plutôt que de le stocker dans un .txt

Commentaire de Flyswat le 12/07/2008 18:06:55

salut,
tu as raison il y a des trucs plutôt foireux dans l'alias strip_html en plus du fait que l'expression régulière devrait être comme ça pour pas prendre les chaînes contenant des espaces:  .*(&(\S*?);).*)
et puis le "else return" que j'ai déplacé n'a pas sa place là...
bref, je les corrigerais bientôt et merci pour ta remarque.

Commentaire de Tuni23 le 16/07/2008 20:34:11

finalement c'est de la pub pour http://www.bashfr.org/ non?

Commentaire de ZeroOo le 16/07/2008 23:57:20

Tuni23 : tu crois vraiment que ces deux sites ont encore besoin de pub ?

A propos de la source :

- regroupe tes var sur une même ligne (var %a = bla, %b = bla)
- le "halt return" (dans l'aliase /bash) je ne vois pas trop à quoi ça sert.
- la série de if pourrait être optimisée il me semble
- travailler directement sur le code de la page serait une meilleure idée comme l'a dit ArKanis. Ceci dit, si tu restes avec un document texte, utilise le file handling plutôt que le /write vu que tu vas écrire pas mal de chose dans ledit doc'.

Sinon c'est un bon exemple d'utilisation des sockets,

bonne continuation


Commentaire de Flyswat le 21/07/2008 18:12:19

Bonjour,
tout d'abord je tiens à te remercier ZERO0O pour tes conseils; le code est assez "moche" je l'avoue, à refaire donc.
puis pour Tuni23, non ce n'est pas de la pub; quelqu'un a ouvert un thread sur le forum ( http://www.ircfr.com/infomsg_BESOIN-PRO_781007.aspx ) où il demandait comment on pouvait s'y prendre pour afficher les quotes de bash[fr] et comme justement j'en avais fait un pour moi j'ai voulu partager la source.

Bonne programmation à tous.

Commentaire de sethgueko95 le 12/04/2009 18:54:58

Bonjour j'ai deux petits soucis avec ce code l'un c'est :

* /if: format erroné (ligne 111, script6.ini)

et l'autre * /write: ligne trop longue (ligne 31, script6.ini) ça me le fait a l'infini.

Si quelqu'un pouvait m'aider étant novice en la matière.

Merci beaucoup

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment connecter un Socket ( sock ) à travers un proxy ? [ par biggoude ] JE souhaite connecter un Socket sur un server IRC en le passant par un Proxy, comment faire cela ?Merci Plus aucun socket ne répond... [ par Kolibot ] Aucun socket ne répond depuis qqs jours... quelqu'un aurait'il une idée...By Koli probleme... [ par vesparo ] voila alors je fait un quote system et je vous montre mon blem:;edit %quote, 2, 25 10 200 10;;On *:DIALOG:quote:edit:2: { set %quote $did(2) }On *:DIA dcc send en socket [ par abdoulax ] yo j'aurai besoin que qlq1 m'explik ac précsion le protocole du dcc send . ou sinon il me faudrai un exemple d'addon ki reproduirai le dcc send en soc HelP [ par DarKiNg virus ] [blue][font=tahoma]g un Blem a mon input :on *:INPUT:*: { if $1 == .Add.Q { set %Quote.Nbr $calc(%Quote.Nbr+1) | set %Quote. $+ %Quote.Nbr $2- | echo commande de citation... [ par NiCeOn3 ] Donc j'ai déjà ca :alias /citation msg $active « $1- »mais j'aimerais, pour simplifier la tâche, à ne pas avoir à recopier la citation et qu'à la socket tokens avec gametiger.net [ par pcgpegase ] bjour / bsoir tout les gens ! :)Bon alors étant un newbie du scripting irc et n'ayant pas trouvé de réponses à mon problème je demande votre aide :&gt socket ! [ par Le_Corse ] Salut,Quelqun connaitrais pas un bon tuto pour les sockets Svp ?merci ^^» Le_Corse svp aidez moi pour socket news [ par nocomment ] Bonjour je cherche désésperement une remote sur plein de site qui serai capable de dire les news sur un canal en tapant par exemple !news sur le gener socket-pingpong [ par samsungman ] bijour je voudré savoir koment ne pas se faire deconecté a chaque foi kon ce connect a un server ?


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 14,430 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales