08/07/2010, 23:00 (Modification du message : 08/07/2010, 23:03 par MenzAgitat.)
(?:.*?) = parenthèse non-capturante, non-greedy.
Toute l'actualité de mes scripts ici (dernière mise à jour le 14/07/2018)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
set useragent "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
set url "http://www.viedemerde.fr/aleatoire"
::http::config -useragent $useragent
set token [::http::geturl "$url" -timeout 6000]
if {[::http::status $token] == "ok"} {
regexp {<div class="post" id=(?:.*?)>(.+?)</p>} [::http::data $token] res
regsub {\n} $res "" res
regsub -all {<[^>]+>} $res "" res
regsub {VDM$} $res "\002VDM\002" res
set result [vdm::string_filter $res]
puthelp "privmsg $chan :$result"
} else {
puthelp "privmsg $chan :\00314La connexion à \002Vie de merde\002 n'a pu être établie. Peut-être le site rencontre-t-il des difficultés techniques. Veuillez réessayer plus tard.\003"
}
}
}
18/07/2010, 15:29 (Modification du message : 18/07/2010, 15:31 par cestlemien.)
Re .. salut
fais un petit ctrl +f quand ton tcl VDM.tcl est ouvert, et rechercher la ligne
Citation : regexp {<div class="post">(.+?)</p>} [::http::data $token] res
Tu devrais la trouver trés vite , puis remplace comme dis précèdement . ( bien entendu un .rehash ou même mieux, un restart de l'eggdrop vas de soit pour que ça soit pris en compte.)
ps: j'espere que tu as bien http.tcl, sinon ça risque fort de ne jamais fonctionner.
La joie le pouvoir d'aimer , le plus triste des sentiments
re salut nan mais le tcl je l'avais déjà puis il c'est mis a ne plus fonctionner j'ai donc modifier la ligne dite la mais dans le tcl elle ne s'y trouve qu'une fois donc je ne vois pas de quel 2ème ligne a modifier que tu me parle justement on est bien d'accord que celle la a été remplacer
et le problème reste entier
Code :
[15:36] Tcl error [::vdm::pub_disp_vdm]: can't read "res": no such variable
# -> Tout les combiens de minutes voulez vous que la publicité soit envoyé ?proc ::AutoMsgVdm{min hour args}{global botnick
foreach chan $vdm::allowed_chans{set useragent "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"set url "http://www.viedemerde.fr/aleatoire"
::http::config -useragent $useragentset token [::http::geturl"$url" -timeout 6000]if{[::http::status$token] == "ok"}{
##### regexp {<div class="post">(.+?)</p>} [::http::data $token] res <---- ici l'ancienne ligne commentée,##### puis dessous celle modifiée.regexp{<div class="post" id=(?:.*?)>(.+?)</p>}[::http::data$token] res
regsub{\n}$res"" res
regsub -all {<[^>]+>}$res"" res
regsub{VDM$}$res"\002VDM\002" res
set result [vdm::string_filter$res]
puthelp "privmsg $chan :$result"}else{
puthelp "privmsg #chanlog : blablablablablablablablalba"
La joie le pouvoir d'aimer , le plus triste des sentiments
re,
non, je ne le metrait pas en fichier en join, c'est la solution de facilité à mon humble avis, il faut plutot trouver d'ou viens la "panne".
• As tu bien rederammé ton eggdrop apres modifications ?
• Quelle version d'eggdrop as tu ?
• Quel version http.tcl ?
eventuellement poses nous ton TCL complet entre les balises [ tcl ] [ /tcl ] peut etre que ce n'est qu'une petite erreure .
La joie le pouvoir d'aimer , le plus triste des sentiments
Je suis un peu offtopic, mais c'était pour parler de l'histoire des parenthèses non capturantes.... puisque l'on récupère tout ce qu'est matché (premier argument après le texte à matcher et la regexp), est ce que c'est pas plus simple d'utiliser des parenthèses standard ?
Ou même, pas du tout de parenthèses pour le coup.
N'ayant que peu de temps et d'envie de m'occuper des mises à jour du script, je viens de mettre en ligne (cela devrait être publié très rapidement) la version 2.0 que m'a généreusement fournie ealexp et qui est l'adaptation de la version originale.
Cette nouvelle version ajoute :
- Correction suite à un changement du payload du site.
- Commandes !vdm last[- nombre] et !vdm <numéro>.
- Paramètres supplémentaires (urls du site, et couleurs de la VDM).
- Diverses optimisations
N'hésitez pas à tout de même faire remonter vos commentaires et problèmes, même si ce n'est pas moi, quelqu'un finira bien par vous répondre^^