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 / Exemple :
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¤ Quote7 %quote_num 5inexistante ¤
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¤ Quote7 $iif((%quote_num = aléatoire) || (%quote_num = last),%parse_num,%quote_num) 5¤
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¤ 14www.bash.org 5¤
}
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¤ Quote7 %quote_num 5inexistante ¤
halt
}
var %quote_strip = $regex(strip,%lol,.*<br />(.*)<br />)
var %quote = $regml(strip,1)
msg %quote_chan 5¤ Quote7 $iif((%quote_num = aléatoire) || (%quote_num = last),%parse_num,%quote_num) 5¤
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¤ 14www.bashfr.org 5¤
}
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 ;]
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.