besoin d'aide pour lire des pages html
#1
Bonjour
voila j'aurai besoin d'aide pour un petit script.

Je m'explique en allant sur ce site ==> http://www.ephemeride.com/ephemeride/ephemeride/11/

on vois plusieurs info sur le soleil, le jour de l'année, la fete du jour etc...

J'aimerais pouvoir annoncer sur mon salon avec la commande
!aujourdhui

que ca affiche sur mon salon:
Aujourd'hui nous somme le ==> date du jour
levé du soleil
couché du soleil
la saint du jour
le dicton du jour
le proverbe du jour
et si possiblele nombre de jour restant avant la fin de l'année.

jai un tcl qui etais censé le faire mais il m'indique une erreure:
tcl
[00:38] Tcl error [aujourd:hui]: bad index "html": must be integer or end?-integer?



J'ai essayé de changé l'adresse du site mais ren à faire.

Voici le script de base
tcl
##### CONFIGURATION #####

### nom du channel sur lequel le bot affichera les informations du jour :
set nouveaujour(channel) "#DeLiRiuM"

##### FIN DE LA CONFIGURATION #####

 
 
##### DEBUT DU PROGRAMME #####
 
 
bind pub - !aujourdhui aujourd:hui
 
proc aujourd:hui { nick uhost handle channel arg } {
	global nouveaujour
	if {$channel != $nouveaujour(channel)} { return 0 }
	putlog "#NOUVEAUJOUR# Consultation du jour par $nick sur $channel !"
	set res [catch { exec lynx -source http://www.ephemeride.com/ephemeride/ephemeride/11/ } x]
	if {$x != ""} {
		set reponse [string tolower $x]
	}
	set indextest [string first "img/sun.gif" $reponse]
 
	set test [bongettext "$reponse" "<td width=\"41\" class=\"info\">&nbsp;" "</td>" $indextest]
	set nouveaujour(leve_soleil) [lindex $test 0]
	set indextest [lindex $test 1]
 
	set test [bongettext "$reponse" "<td width=\"30\" class=\"info\">&nbsp;" "</td>" $indextest]
	set nouveaujour(couche_soleil) [lindex $test 0]
	set indextest [lindex $test 1]
 
        set indextest2 [string first "<font color=\"blue\">" $reponse]
 
        if { $indextest2 == -1 } {
                set test [bongettext "$reponse" "<font color=\"#ff5f5f\">" "</font>" $indextest]
        } else {
                set test [bongettext "$reponse" "<font color=\"blue\">" "</font>" $indextest]
        }
	set taille [llength $test]
	set nouveaujour(saint) [lrange $test 0 [expr $taille - 2]]
 
	set test [bongettext "$reponse" "«&nbsp;" "&nbsp;»" $indextest]
	regsub -all "\"" $test "-" test
	set taille [llength $test]
	set indextest [lindex $test [expr $taille - 1]]
	set nouveaujour(dicton) [lrange $test 0 [expr $taille - 2]]
 
	set test [bongettext "$reponse" "«&nbsp;" "&nbsp;»" $indextest]
	regsub -all "\"" $test "-" test
	set taille [llength $test]
	set indextest [lindex $test [expr $taille - 1]]
	set nouveaujour(proverbe) [lrange $test 0 [expr $taille - 2]]
 
	puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\] \003\0036Soleil\003 : levé à [traitementtexte [traitementhtml $nouveaujour(leve_soleil)]] et couché à [traitementtexte [traitementhtml $nouveaujour(couche_soleil)]] !"
	puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Fête du Jour\003 : [traitementtexte [traitementhtml $nouveaujour(saint)]]"
	puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Dicton du Jour\003 : \" [traitementtexte [traitementhtml $nouveaujour(dicton)]] \""
	puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Proverbe du Jour\003 : \" [traitementtexte [traitementhtml $nouveaujour(proverbe)]] \""
	foreach user [userlist $nouveaujour(channel)] {
		set un_anniv [un_anniv $user]
		if {$un_anniv != ""} {
			if {[lrange [ctime [unixtime]] 1 2] == "[lindex $un_anniv 1] [lindex [string trimleft $un_anniv 0] 0]" } {
				puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\] \003\0036Anniversaire du jour\003 : $user !!"
			}
		}
	}
	return 0
}
 
 
bind time - "* * * * *" nouveau_jour
 
proc nouveau_jour { min hour day month year } {
	global nouveaujour botnick
	set nouveaujour(ok) 0
	if {[lindex [ctime [unixtime]] 3] == "00:15:00"} {
		set nouveaujour(ok) 1
		puthelp "privmsg $nouveaujour(channel) :\002~~~~ Voila une nouvelle journée qui commence ! ~~~~\002"
	}
	if {[lindex [ctime [unixtime]] 3] == "10:45:00"} {
		set nouveaujour(ok) 1
		puthelp "privmsg $nouveaujour(channel) :\002~~~~ nouveaujour ! Voila pour les leves-tards ... ~~~~\002"
	}
	if {$nouveaujour(ok)} {
		set res [catch { exec lynx -source http://www.ephemeride.com/ephemeride/ephemeride/11/ } x]
		if {$x != ""} {
			set reponse [string tolower $x]
		}
		set indextest [string first "img/sun.gif" $reponse]
 
		set test [bongettext "$reponse" "<td width=\"41\" class=\"info\">&nbsp;" "</td>" $indextest]
		set nouveaujour(leve_soleil) [string range [lindex $test 0] 1 end]
		set indextest [lindex $test 1]
 
		set test [bongettext "$reponse" "<td width=\"30\" class=\"info\">&nbsp;" "</td>" $indextest]
		set nouveaujour(couche_soleil) [lindex $test 0]
		set indextest [lindex $test 1]
 
		set indextest2 [string first "<font color=\"blue\">" $reponse]
 
		if { $indextest2 == -1 } {
			set test [bongettext "$reponse" "<font color=\"#ff5f5f\">" "</font>" $indextest]
		} else {
			set test [bongettext "$reponse" "<font color=\"blue\">" "</font>" $indextest]
		}
		set taille [llength $test]
		set nouveaujour(saint) [lrange $test 0 [expr $taille - 2]]
 
		set test [bongettext "$reponse" "«&nbsp;" "&nbsp;»" $indextest]
		regsub -all "\"" $test "-" test
		set taille [llength $test]
		set indextest [lindex $test [expr $taille - 1]]
		set nouveaujour(dicton) [lrange $test 0 [expr $taille - 2]]
 
		set test [bongettext "$reponse" "«&nbsp;" "&nbsp;»" $indextest]
		regsub -all "\"" $test "-" test
		set taille [llength $test]
		set indextest [lindex $test [expr $taille - 1]]
		set nouveaujour(proverbe) [lrange $test 0 [expr $taille - 2]]
 
		puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\] \003\0036Soleil\003 : levé à [traitementtexte [traitementhtml $nouveaujour(leve_soleil)]] et couché à [traitementtexte [traitementhtml $nouveaujour(couche_soleil)]] !"
		puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Fête du Jour\003 : [traitementtexte [traitementhtml $nouveaujour(saint)]]"
		puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Dicton du Jour\003 : \" [traitementtexte [traitementhtml $nouveaujour(dicton)]] \""
		puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Proverbe du Jour\003 : \" [traitementtexte [traitementhtml $nouveaujour(proverbe)]] \""
		foreach user [userlist $nouveaujour(channel)] {
			set un_anniv [un_anniv $user]
			if {$un_anniv != ""} {
				if {[lrange [ctime [unixtime]] 1 2] == "[lindex $un_anniv 1] [lindex [string trimleft $un_anniv 0] 0]" } {
					puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\] \003\0036Anniversaire du jour\003 : $user !!"
				}
			}
		}
		return 0
	}
}

### /msg lebot monanniv <jj/mm/aaaa>
 
bind msg - monanniv monanniv:msg
 
proc monanniv:msg {nick host hand arg} {
	global botnick
	if {($arg == "") || ([string length $arg] != 10)} {
		puthelp "notice $nick :Commande : \002/msg $botnick monanniv <jj/mm/aaaa>\002"
		puthelp "notice $nick :Tapez : \002/msg $botnick finanniv\002 pour que votre date d'anniversaire soit supprimé de la mémoire du bot."
		return 0
	} else {
		set monanniv_jour [string range $arg 0 1]
		set monanniv_mois [string range $arg 3 4]
		set monanniv_annee [string range $arg 6 9]
		set monanniv_mois [datefr_dateus $monanniv_mois]
		setuser $hand XTRA ANNIV "$monanniv_jour $monanniv_mois $monanniv_annee"
		set monanniv_mois [dateus_datefr $monanniv_mois]
		puthelp "notice $nick :Votre anniversaire est le $monanniv_jour $monanniv_mois $monanniv_annee"
		save
		return 0
	}
}

### !anniv <handle>
 
bind pub - !anniv anniv:pub
 
proc anniv:pub {nick host hand chan arg} {
	global botnick
	if {$arg == ""} {
		puthelp "notice $nick :Commande : \002!anniv <nick_de_la_personne_dans_le_bot>\002"
		return 0
	} else {
		set handle [lindex $arg 0]
		if {![validuser $handle]} {
			puthelp "notice $nick :Désolé mais je ne connais pas $handle !"
			return 0
		} else {
			set anniv [un_anniv $handle]
			if {$anniv == ""} {
				puthelp "privmsg $chan :Désolé, mais $handle n'a pas d'anniversaire d'enregistré !"
				puthelp "privmsg $chan :Si vous voulez enregistrer votre date d'anniversaire, tapez : /msg $botnick monanniv <jj/mm/aaaa>"
				return 0
			} else {
				set anniv_mois [dateus_datefr [lindex $anniv 1]]
				puthelp "privmsg $chan :$handle est né le [lindex $anniv 0] $anniv_mois [lindex $anniv 2]"
				return 0
			}
		}
	}
	return 0
}

 
### Fonction pour convertir la date d'anniv des gens !
 
proc datefr_dateus { moisfr } {
	if {$moisfr == "01"} { return "Jan" }
	if {$moisfr == "02"} { return "Feb" }
	if {$moisfr == "03"} { return "Mar" }
	if {$moisfr == "04"} { return "Apr" }
	if {$moisfr == "05"} { return "May" }
	if {$moisfr == "06"} { return "Jun" }
	if {$moisfr == "07"} { return "Jul" }
	if {$moisfr == "08"} { return "Aug" }
	if {$moisfr == "09"} { return "Sep" }
	if {$moisfr == "10"} { return "Oct" }
	if {$moisfr == "11"} { return "Nov" }
	if {$moisfr == "12"} { return "Dec" } 
	return 0
}
 
proc dateus_datefr { moisus } {
	if {$moisus == "Jan"} { return "Janvier" }
	if {$moisus == "Feb"} { return "Fevrier" }
	if {$moisus == "Mar"} { return "Mars" }
	if {$moisus == "Apr"} { return "Avril" }
	if {$moisus == "May"} { return "Mai" }
	if {$moisus == "Jun"} { return "Juin" }
	if {$moisus == "Jul"} { return "Juillet" }
	if {$moisus == "Aug"} { return "Aout" }
	if {$moisus == "Sep"} { return "Septembre" }
	if {$moisus == "Oct"} { return "Octobre" }
	if {$moisus == "Nov"} { return "Novembre" }
	if {$moisus == "Dec"} { return "Decembre" }
}
 
proc un_anniv { handle } {
	set anniv [getuser $handle XTRA ANNIV]
	if {$anniv == ""} {
		return ""
	} else {
		return "$anniv"
	}
}

### bon anniversaire on join
bind join - * join:anniv
 
proc join:anniv {nick host handle channel} {
	global nouveaujour
	if {![validuser $handle]} { return 0 }
	if {$channel != $nouveaujour(channel)} { return 0 }
	set un_anniv [un_anniv $handle]
	if {$un_anniv != ""} {
		if {[lrange [ctime [unixtime]] 1 2] == "[lindex $un_anniv 1] [lindex [string trimleft $un_anniv 0] 0]" } {
			puthelp "privmsg $channel :Bon anniversaire $nick !!!"
		}
	}
	return 0	
}

 
### outils
 
proc traitementhtml { contenu } {
	regsub -all "&lt;" $contenu "<" contenu
	regsub -all "&gt;" $contenu ">" contenu
	regsub -all "&amp;" $contenu "et" contenu
	regsub -all "&quot;" $contenu "" contenu
	regsub -all "&Aacute;" $contenu "Á" contenu
	regsub -all "&Acirc;" $contenu "Â" contenu
	regsub -all "&Agrave;" $contenu "À" contenu
	regsub -all "&Aring;" $contenu "Å" contenu
	regsub -all "&Atilde;" $contenu "Ã" contenu
	regsub -all "&Auml;" $contenu "Ä" contenu
	regsub -all "&Ccedil;" $contenu "Ç" contenu
	regsub -all "&Eacute;" $contenu "É" contenu
	regsub -all "&Ecirc;" $contenu "Ê" contenu
	regsub -all "&Egrave;" $contenu "È" contenu
	regsub -all "&Iacute;" $contenu "͍" contenu
	regsub -all "&Icirc;" $contenu "Î" contenu
	regsub -all "&Igrave;" $contenu "í" contenu
	regsub -all "&Iuml;" $contenu "Ï" contenu
	regsub -all "&Ntilde;" $contenu "Ñ" contenu
	regsub -all "&Oacute;" $contenu "Ó" contenu
	regsub -all "&Ocirc;" $contenu "Ô" contenu
	regsub -all "&Ograve;" $contenu "Ò" contenu
	regsub -all "&Oslash;" $contenu "Ø" contenu
	regsub -all "&Otilde;" $contenu "Õ" contenu
	regsub -all "&Ouml;" $contenu "Ö" contenu
	regsub -all "&Uacute;" $contenu "Ú" contenu
	regsub -all "&Ucirc;" $contenu "Û" contenu
	regsub -all "&Ugrave;" $contenu "Ù" contenu
	regsub -all "&Uuml;" $contenu "í" contenu
	regsub -all "&Yacute;" $contenu "Ý" contenu
	regsub -all "&aacute;" $contenu "á" contenu
	regsub -all "&aelig;" $contenu "ae" contenu
	regsub -all "&oelig;" $contenu "oe" contenu
	regsub -all "&agrave;" $contenu "à" contenu
	regsub -all "&aring;" $contenu "å" contenu
	regsub -all "&atilde;" $contenu "ã" contenu
	regsub -all "&auml;" $contenu "ä" contenu
	regsub -all "&ccedil;" $contenu "ç" contenu
	regsub -all "&eacute;" $contenu "é" contenu
	regsub -all "&euml;" $contenu "ë" contenu
	regsub -all "&iacute;" $contenu "í" contenu
	regsub -all "&egrave;" $contenu "è" contenu
	regsub -all "&igrave;" $contenu "ì" contenu
	regsub -all "&iuml;" $contenu "ï" contenu
	regsub -all "&ntilde;" $contenu "ñ" contenu
	regsub -all "&oacute;" $contenu "ó" contenu
	regsub -all "&ocirc;" $contenu "ô" contenu
	regsub -all "&acirc;" $contenu "â" contenu
	regsub -all "&ecirc;" $contenu "ê" contenu
	regsub -all "&ograve;" $contenu "ò" contenu
	regsub -all "&icirc;" $contenu "î" contenu
	regsub -all "&otilde;" $contenu "õ" contenu
	regsub -all "&ouml;" $contenu "ö" contenu
	regsub -all "&uacute;" $contenu "ú" contenu
	regsub -all "&ucirc;" $contenu "û" contenu
	regsub -all "&ugrave;" $contenu "ù" contenu
	regsub -all "&uuml;" $contenu "ü" contenu
	regsub -all "&yuml;" $contenu "ÿ" contenu
	regsub -all "&AElig;" $contenu "AE" contenu
	regsub -all "&OElig;" $contenu "OE" contenu
	regsub -all "&reg;" $contenu "®" contenu
	regsub -all "&copy;" $contenu "©" contenu
	regsub -all "&trade;" $contenu "(tm)" contenu
	regsub -all "&plusmn;" $contenu "±" contenu
	regsub -all "&deg;" $contenu "°" contenu
	regsub -all "&sup1;" $contenu "¹" contenu
	regsub -all "&sup2;" $contenu "²" contenu
	regsub -all "&sup3;" $contenu "³" contenu
	regsub -all "&times;" $contenu "×" contenu
	regsub -all "&divide;" $contenu "÷" contenu
	regsub -all "&euro;" $contenu "euro" contenu
	regsub -all -nocase "<p>" $contenu "" contenu
	regsub -all -nocase "</p>" $contenu "" contenu
	regsub -all -nocase "<i>" $contenu "" contenu
	regsub -all -nocase "</i>" $contenu "" contenu
	regsub -all -nocase "<b>" $contenu "" contenu
	regsub -all -nocase "<u>" $contenu "" contenu
	regsub -all -nocase "</u>" $contenu "" contenu
	regsub -all -nocase "</b>" $contenu "" contenu
	regsub -all -nocase "<br>" $contenu "" contenu
	regsub -all -nocase "Å“" $contenu "oe" contenu
	regsub -all -nocase "&laquo;" $contenu "\"" contenu
	regsub -all -nocase "&raquo;" $contenu "\"" contenu
	regsub -all -nocase "{" $contenu "" contenu
	regsub -all -nocase "}" $contenu "" contenu
	return $contenu
}
 
 
proc traitementtexte { contenu } {
	regsub -all "{" $contenu "" contenu
	regsub -all "}" $contenu "" contenu
	regsub -all "\"" $contenu "\'" contenu
	return $contenu
}
 
proc bongettext { data start end index } {
	set index0 [string first $start $data $index]
	set index1 [expr $index0 + [string length $start]]
	set index2 [string first $end $data $index1]
	set index2 [expr $index2 - 1]
	set index  [expr $index2 + [string length $end]]
	return "[string range $data $index1 $index2] $index"
}



Si quelqu'un pouvais me donner un coup de main se serais tres sympas.

Merci d'avance pour votre futur aide.
Répondre Avertir
#2
le principe est globalement le meme que celui des systemes de quotes comme le script chuck, bashfr, bash.org, vdm, etc : il faut charger la page, trier les informations dans le code html, et afficher le résultat.
je n'ai pas regardé le script en détail, mais d'après l'allure du site, je pense qu'un tel script serait carrément plus simple à faire en utilisant un site plus simple (moins de mise en forme)
aussi, j'ai remarqué un "exec lynx" au début, et je trouve ça plutôt bizarre, le plus simple étant d'utiliser le package http fourni avec eggdrop
Répondre Avertir
#3
Merci de la reponse Artix mais je ny connais vraiment rien avec le systeme http etc....
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté