30/07/2009, 02:00
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:
J'ai essayé de changé l'adresse du site mais ren à faire.
Voici le script de base
Si quelqu'un pouvais me donner un coup de main se serais tres sympas.
Merci d'avance pour votre futur aide.
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\"> " "</td>" $indextest]
set nouveaujour(leve_soleil) [lindex $test 0]
set indextest [lindex $test 1]
set test [bongettext "$reponse" "<td width=\"30\" class=\"info\"> " "</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" "« " " »" $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" "« " " »" $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\"> " "</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\"> " "</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" "« " " »" $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" "« " " »" $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 "<" $contenu "<" contenu
regsub -all ">" $contenu ">" contenu
regsub -all "&" $contenu "et" contenu
regsub -all """ $contenu "" contenu
regsub -all "Á" $contenu "Ã" contenu
regsub -all "Â" $contenu "Â" contenu
regsub -all "À" $contenu "À" contenu
regsub -all "Å" $contenu "Å" contenu
regsub -all "Ã" $contenu "Ã" contenu
regsub -all "Ä" $contenu "Ä" contenu
regsub -all "Ç" $contenu "Ç" contenu
regsub -all "É" $contenu "É" contenu
regsub -all "Ê" $contenu "Ê" contenu
regsub -all "È" $contenu "È" contenu
regsub -all "Í" $contenu "Í" contenu
regsub -all "Î" $contenu "Î" contenu
regsub -all "Ì" $contenu "í" contenu
regsub -all "Ï" $contenu "Ã" contenu
regsub -all "Ñ" $contenu "Ñ" contenu
regsub -all "Ó" $contenu "Ó" contenu
regsub -all "Ô" $contenu "Ô" contenu
regsub -all "Ò" $contenu "Ò" contenu
regsub -all "Ø" $contenu "Ø" contenu
regsub -all "Õ" $contenu "Õ" contenu
regsub -all "Ö" $contenu "Ö" contenu
regsub -all "Ú" $contenu "Ú" contenu
regsub -all "Û" $contenu "Û" contenu
regsub -all "Ù" $contenu "Ù" contenu
regsub -all "Ü" $contenu "í" contenu
regsub -all "Ý" $contenu "Ã" contenu
regsub -all "á" $contenu "á" contenu
regsub -all "æ" $contenu "ae" contenu
regsub -all "œ" $contenu "oe" contenu
regsub -all "à" $contenu "à" contenu
regsub -all "å" $contenu "å" contenu
regsub -all "ã" $contenu "ã" contenu
regsub -all "ä" $contenu "ä" contenu
regsub -all "ç" $contenu "ç" contenu
regsub -all "é" $contenu "é" contenu
regsub -all "ë" $contenu "ë" contenu
regsub -all "í" $contenu "í" contenu
regsub -all "è" $contenu "è" contenu
regsub -all "ì" $contenu "ì" contenu
regsub -all "ï" $contenu "ï" contenu
regsub -all "ñ" $contenu "ñ" contenu
regsub -all "ó" $contenu "ó" contenu
regsub -all "ô" $contenu "ô" contenu
regsub -all "â" $contenu "â" contenu
regsub -all "ê" $contenu "ê" contenu
regsub -all "ò" $contenu "ò" contenu
regsub -all "î" $contenu "î" contenu
regsub -all "õ" $contenu "õ" contenu
regsub -all "ö" $contenu "ö" contenu
regsub -all "ú" $contenu "ú" contenu
regsub -all "û" $contenu "û" contenu
regsub -all "ù" $contenu "ù" contenu
regsub -all "ü" $contenu "ü" contenu
regsub -all "ÿ" $contenu "ÿ" contenu
regsub -all "Æ" $contenu "AE" contenu
regsub -all "Œ" $contenu "OE" contenu
regsub -all "®" $contenu "®" contenu
regsub -all "©" $contenu "©" contenu
regsub -all "™" $contenu "(tm)" contenu
regsub -all "±" $contenu "±" contenu
regsub -all "°" $contenu "°" contenu
regsub -all "¹" $contenu "¹" contenu
regsub -all "²" $contenu "²" contenu
regsub -all "³" $contenu "³" contenu
regsub -all "×" $contenu "×" contenu
regsub -all "÷" $contenu "÷" contenu
regsub -all "€" $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 "«" $contenu "\"" contenu
regsub -all -nocase "»" $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.