Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


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.
#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
#3
Merci de la reponse Artix mais je ny connais vraiment rien avec le systeme http etc....


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Demande] besoin d'aide pour finaliser berni13 6 1,605 18/11/2020, 00:18
Last Post: berni13
  Besoin d'aide Eggdrop TCL Lien YouTube Zion 3 3,110 28/01/2019, 13:06
Last Post: CrazyCat
Big Grin demande d'aide pour codage KeeViiNou 4 4,608 04/07/2016, 07:55
Last Post: CrazyCat
  Besoin d'aide SVP KeeViiNou 10 5,773 17/06/2016, 18:48
Last Post: KeeViiNou
  aide pour un script svp s2drk 3 5,029 11/08/2014, 23:23
Last Post: CrazyCat
  [Demande] Besoin d'aide pour youtubeURL.tcl hades_48 4 5,125 01/07/2014, 15:41
Last Post: hades_48
  Besoin d'aide hades_48 3 4,268 21/05/2014, 20:08
Last Post: hades_48
  [Demande] aide pour une modification pour whois loulou7593 21 13,346 29/10/2013, 13:35
Last Post: loulou7593
  aide pour le script Nostromo1st 13 8,197 16/09/2013, 16:24
Last Post: Nostromo1st
  [aide] comment rajouter des hosts et des salons en plus pour sajoin Naruto 11 7,726 17/07/2013, 22:51
Last Post: aliasangelius

Forum Jump:


Users browsing this thread: 1 Guest(s)