Communauté Eggdrop

Version complète : Lire une ligne précise sur une page html
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
J'ai un petit souci:

Je sais faire lire une page web a mon egg, cependant il lit toujours la premiere.
Ce que je voudrais c'est lui donné la ligne a lire, et non pas automatiquement la premiere ...

Voila le code que j'utilise:

Code :
bind pub mn !test pub:test
proc pub:test { nick uhost handle chan arg } {
set lsl(avant) "l'url du site"
set key [http::geturl $lsl(avant)]
set line [http::data $key]
putserv "PRIVMSG $chan : \00302,00$line"
}

Merci d'avance : )
C'est normal, ta variable $line contient en fait l'intégralité de ta source html, tu ne vois que la première ligne car le caractère de nouvelle ligne (\n) est interprété.
Donc, il te faut transformer ta page html en un tableau de lignes pour pouvoir aller lire la bonne:
Code :
bind pub mn !test pub:test
proc pub:test { nick uhost handle chan arg } {
   set lsl(avant) "l'url du site"
   set key [http::geturl $lsl(avant)]
   set arrlines [split [http::data $key] "\n"]
   incr arg -1
   putserv "PRIVMSG $chan : \00302,00$arrlines($arg)"
}
Je pars bien sur du principe que $arg est le N° de la ligne que tu veux lire.
Je test et je te dis si c'est mon bonheur ! Merci : )

(la classe ton nom de domaine ^^Wink
Je n'arrive pas a avoir ce que je veux.

L'url ou l'egg va chercher des infos: ici

Je veux pouvoir recuperer les 10 lignes ensemble ou separement, ou sont les titres, mais a la demande.

Merci d'avance CrazyCat : )
ah oui, le code html est mal foutu, difficile à parser...
Il faudrait que tu puisses modifier le générateur pour ajouter un caractère particulier devant chaque ligne intéressante.
Sinon, il faut aller récupérer une chaine particulière (<b>Song Title</b> par exemple), et faire une regexp qui permette de récupèrer les autres lignes, du genre "<td>(*)<\/td>"...

J'essayerais de voir ça demain Smile
j'ai toujours pas reussi Sad
Le plus simple que je vois, c'est de traiter ta chaine ainsi ($webpage contient ta source)
Code :
# on récupère ce qui est entre "<b>Song Title</b></td></tr>" et le premier "</table>" situé après
regsub -all {.*<b>Song Title</b></td></tr>(.*)</table>} $webpage "\\1" webpage
# on sépare sur les "</tr>"
foreach line [split $webpage "</tr>"] {
   # on supprime les balises HTML
   regsub -all {<[^>]>} $line "" line
   # on affiche
   putserv "PRIVMSG $chan :$line"
}
Bon, c'est fait à l'arrache, je ne promet rien Smile
j'vais m'en débrouiller, merci : )