BaroqueW

BaroqueW

and his sidekick nikkitaa

BaroqueW RSS Feed
 
 
 
 

Posts tagged IRC

MeteoqueW – Script TCL pour eggdrop

En complément à mon article précédent, voici le script TCL MeteoqueW pour eggdrop qui permet d’afficher la mété des villes françaises dans votre salon (ou en privé) :

Merci de ne pas faire de copier/coller avec le code ci-dessous. J’ai dû modifier le code pour qu’il s’affiche proprement.

# MeteoqueW[IRC] 1.2
# Cree le 09/04/2006
# Modifie la derniere fois le 05/01/2009
# !meteo affiche la meteo sur [endroit par défaut]
# !meteo XXXX affiche la meteo pour la ville/code postal
# !aide affiche l’aide
#
# by BaroqueW
#
# 0.1 : affichage températures, prévisions, fonction de recherche "un seul mot"
# 0.2 : ajout de l’aide, gestion des villes inconnues, gestion des noms de ville avec apastrophe et espaces
# 0.3 : fonction de recherche multi mots avec gestion des "-[]()’ et autres espaces, ajout du dtcmode, ajout du mode debug
# 1.0 : mise-à-jour du script ‘future-proof’. Toutes les requêtes sont désormais faites par le site www.baroquew.info
#       pour éviter d’avoir à modifier un large nombre d’installations à chaque fois que Meteo France change son format de données
# 1.1 : possibilité de personnaliser le message d’aide en fonction de l’endroit par défaut
# 1.2 : possibilité pour les utilisateurs de définir leur propre niveau de détail (configurable par l’admin)

package require http

bind pub – !meteo pub:meteo
bind pub – !aide pub:aide

#0 n’affiche pas l’aide sur !aide et !help, 1 affiche l’aide
set affiche_aide 1

#0 pas de message spécifique sur !meteo XXX (XXX appartenant à dtcmatches), 1 mode cdtc (ie on répond dtcmessage à !meteo XXX)
set dtcmode 1
set dtcmessage "Il fait chaud et humide dtc !"
set dtcmatches {"dtc" "dans ton cul"}

#choisir où sera affichée la meteo
#1 -> sera affiché sur cette fenetre, 0 -> ne sera pas affiché sur cette fenetre
set chanpublic 1
set notice 0
set query 0

#choisir le niveau de verbosité
#2 -> affiche tout, 1 -> n’affiche pas les vents, 0 -> n’affiche pas les vents, ni la météo détaillée
set verbosity 1

#pour laisser choisir les utilisateurs leur niveau de verbosité
set freeverbosity 1

#code par défaut du lieu renvoyé par !meteo
#et nom du lieu pour le message d’aide
#75013/Paris XIIIème par défaut
set IDDefault "75013"
set nomvilledefaut "Paris XIIIème"

#1 -> affiche les print de debug, 0 -> ne les affiche pas
set debug 0

#NE RIEN MODIFIER EN DESSOUS DE CETTE LIGNE!

set agent "Mozilla"

if { ($freeverbosity == 1) } {
        bind pub – !meteo0 pub:meteo0
        bind pub – !meteo1 pub:meteo1
        bind pub – !meteo2 pub:meteo2
}

proc print { nick channel message} {
        global chanpublic
        global notice
        global query   

        if { ($chanpublic == 1) && ($query == 0) && ($notice == 0) } {
        putserv "PRIVMSG $channel :$message"
        } elseif { ($chanpublic == 0) && ($query == 1) && ($notice == 0) } {
        putserv "PRIVMSG $nick :$message"
        } elseif { ($chanpublic == 0) && ($query == 0) && ($notice == 1) } {
        putserv "NOTICE $nick :$message"
        }

}

proc printdebug { nick channel message} {
        global chanpublic
        global notice
        global query
        global debug

if {($debug == 1)} {
        if { ($chanpublic == 1) && ($query == 0) && ($notice == 0) } {
        putserv "PRIVMSG $channel :$message"
        } elseif { ($chanpublic == 0) && ($query == 1) && ($notice == 0) } {
        putserv "PRIVMSG $nick :$message"
        } elseif { ($chanpublic == 0) && ($query == 0) && ($notice == 1) } {
        putserv "NOTICE $nick :$message"
        }
 }
}

proc pub:aide { nick uhost handle channel arg } {
        global affiche_aide
        global nomvilledefaut
        global freeverbosity
        global verbosity

        if { ($affiche_aide == 1) } {
        print $nick $channel "!meteo pour avoir la météo sur $nomvilledefaut"
        print $nick $channel "!meteo code_postal ou !meteo ville pour rechercher la météo d’un autre endroit"
        print $nick $channel "Données fournies par Meteo France (http://www.meteofrance.com)"
        if { ($freeverbosity == 1) } {
                print $nick $channel "Utilisez !meteo0 pour avoir la météo abrégée"
                print $nick $channel "Utilisez !meteo1 pour avoir la météo détaillée"
                print $nick $channel "Utilisez !meteo2 pour avoir la météo détaillée avec les vents"
                print $nick $channel "Par défaut, !meteo affiche la météo comme !meteo$verbosity"
        }
        }
}

proc aplatir { vect } {

#si on a un code postal, pas de traitement
set first [lindex $vect 0]
set iscodepostal [regexp {[0-9][0-9][0-9][0-9][0-9]} $first codepostal]
 if {([llength vect] == 1) && ($iscodepostal == 1)} {
        set aplat $first
   } else {

   #traitement standard

        set space "%20"

        #on merge tous les arguments avec des %20 entre chaque (ie un espace)
        set aplat [join $vect $space]

        #on vire tous les chiffres puisque ce n’est pas un code postal
        regsub -all {[0-9]} $aplat "" aplat

        #on vire tous les "- et les espaces et on met un %20 à leur place
        regsub -all {[ -]+} $aplat $space aplat

        #on remplace les apostrophes par leur code HTML (%27)
        regsub -all {\} $aplat "%27" aplat

        #au cas où, on vire les parenthèses, crochets et accolades et on les remplace par des espaces (%20)
        set setbrackets {\[|\]|\(|\)|\{|\}}
        regsub -all $setbrackets+ $aplat $space aplat

        #on supprime les "%20" à répétition
        set aplat [split $aplat $space]
        set buffer {}
        foreach word $aplat {
                if { ( $word != $space ) && ( $word != "" ) } {
                        lappend buffer $word
                }
        }
        set aplat [join $buffer $space]
        #petite feinte
        regsub {%207} $aplat "%27" aplat
        }

        #dans tous les cas, on retourne aplat sans accents
        return [string map -nocase {
                "à" "a" "â" "a" "ä" "a"
                "é" "e" "è" "e" "ê" "e" "ë" "e"
                "î" "i" "ï" "i"
                "ô" "o" "ö" "o"
                "ù" "u" "û" "u" "ü" "u"
                "ç" "c" "ñ" "n" "ã" "a" "õ" "o"
        } $aplat]
}

proc pub:meteo { nick uhost handle channel arg } {
        global dtcmode
        global agent
        global IDDefault
        global dtcmessage
        global dtcmatches
        global verbosity

        set ID $IDDefault

        if {[llength $arg] == 0} {

        #par defaut : Paris Montsouris
                set query "http://www.baroquew.net/cgi-bin/meteo.cgi?ville=$ID&v=$verbosity&html=0"

                set token [::http::config -useragent $agent]
                set token [::http::geturl $query -timeout 3000]
                puts stderr ""
                set htmlFile [::http::data $token]
                set token [::http::cleanup $token]

                set result [split $htmlFile _]

                foreach i $result {
                        print $nick $channel $i
                }

        #si il y a des arguments
        } else {

                        #chercher la premiere ville correspondante
                        set ville [aplatir $arg]
                        printdebug $nick $channel $ville

                        #vérifier le dtc mode
                        regsub -all {%20} $ville " " villedtc
                        printdebug $nick $channel $villedtc

                        set dtctest [lsearch -exact $dtcmatches $villedtc]
                        if { ($dtctest >= 0) && ($dtcmode == 1) } {
                        print $nick $channel $dtcmessage
                        } else {

                        set pagesearch [::http::config -useragent $agent]
                        set urlsearch "http://www.baroquew.net/cgi-bin/meteo.cgi?ville=$ville&v=$verbosity&html=0"
                        set token [::http::config -useragent $agent]
                        set token [::http::geturl $urlsearch]
                        puts stderr ""
                        set htmlFile [::http::data $token]
                        set token [::http::cleanup $token]

                        set result [split $htmlFile _]

                        foreach i $result {
                                print $nick $channel $i
                        }
  }
 }
}

proc pub:meteo0 { nick uhost handle channel arg } {
        global dtcmode
        global agent
        global IDDefault
        global dtcmessage
        global dtcmatches
        global verbosity

        set ID $IDDefault

        if {[llength $arg] == 0} {

        #par defaut : Paris Montsouris
                set query "http://www.baroquew.net/cgi-bin/meteo.cgi?ville=$ID&v=0&html=0"

                set token [::http::config -useragent $agent]
                set token [::http::geturl $query -timeout 3000]
                puts stderr ""
                set htmlFile [::http::data $token]
                set token [::http::cleanup $token]

                set result [split $htmlFile _]

                foreach i $result {
                        print $nick $channel $i
                }

        #si il y a des arguments
        } else {

                        #chercher la premiere ville correspondante
                        set ville [aplatir $arg]
                        printdebug $nick $channel $ville

                        #vérifier le dtc mode
                        regsub -all {%20} $ville " " villedtc
                        printdebug $nick $channel $villedtc

                        set dtctest [lsearch -exact $dtcmatches $villedtc]
                        if { ($dtctest >= 0) && ($dtcmode == 1) } {
                        print $nick $channel $dtcmessage
                        } else {

                        set pagesearch [::http::config -useragent $agent]
                        set urlsearch "http://www.baroquew.net/cgi-bin/meteo.cgi?ville=$ville&v=$verbosity&html=0"
                        set token [::http::config -useragent $agent]
                        set token [::http::geturl $urlsearch]
                        puts stderr ""
                        set htmlFile [::http::data $token]
                        set token [::http::cleanup $token]

                        set result [split $htmlFile _]

                        foreach i $result {
                                print $nick $channel $i
                        }
  }
 }
}

proc pub:meteo1 { nick uhost handle channel arg } {
        global dtcmode
        global agent
        global IDDefault
        global dtcmessage
        global dtcmatches
        global verbosity

        set ID $IDDefault

        if {[llength $arg] == 0} {

        #par defaut : Paris Montsouris
                set query "http://www.baroquew.net/cgi-bin/meteo.cgi?ville=$ID&v=1&html=0"

                set token [::http::config -useragent $agent]
                set token [::http::geturl $query -timeout 3000]
                puts stderr ""
                set htmlFile [::http::data $token]
                set token [::http::cleanup $token]

                set result [split $htmlFile _]

                foreach i $result {
                        print $nick $channel $i
                }

        #si il y a des arguments
        } else {

                        #chercher la premiere ville correspondante
                        set ville [aplatir $arg]
                        printdebug $nick $channel $ville

                        #vérifier le dtc mode
                        regsub -all {%20} $ville " " villedtc
                        printdebug $nick $channel $villedtc

                        set dtctest [lsearch -exact $dtcmatches $villedtc]
                        if { ($dtctest >= 0) && ($dtcmode == 1) } {
                        print $nick $channel $dtcmessage
                        } else {

                        set pagesearch [::http::config -useragent $agent]
                        set urlsearch "http://www.baroquew.net/cgi-bin/meteo.cgi?ville=$ville&v=$verbosity&html=0"
                        set token [::http::config -useragent $agent]
                        set token [::http::geturl $urlsearch]
                        puts stderr ""
                        set htmlFile [::http::data $token]
                        set token [::http::cleanup $token]

                        set result [split $htmlFile _]

                        foreach i $result {
                                print $nick $channel $i
                        }
  }
 }
}

proc pub:meteo2 { nick uhost handle channel arg } {
        global dtcmode
        global agent
        global IDDefault
        global dtcmessage
        global dtcmatches
        global verbosity

        set ID $IDDefault

        if {[llength $arg] == 0} {

        #par defaut : Paris Montsouris
                set query "http://www.baroquew.net/cgi-bin/meteo.cgi?ville=$ID&v=2&html=0"

                set token [::http::config -useragent $agent]
                set token [::http::geturl $query -timeout 3000]
                puts stderr ""
                set htmlFile [::http::data $token]
                set token [::http::cleanup $token]

                set result [split $htmlFile _]

                foreach i $result {
                        print $nick $channel $i
                }

        #si il y a des arguments
        } else {

                        #chercher la premiere ville correspondante
                        set ville [aplatir $arg]
                        printdebug $nick $channel $ville

                        #vérifier le dtc mode
                        regsub -all {%20} $ville " " villedtc
                        printdebug $nick $channel $villedtc

                        set dtctest [lsearch -exact $dtcmatches $villedtc]
                        if { ($dtctest >= 0) && ($dtcmode == 1) } {
                        print $nick $channel $dtcmessage
                        } else {

                        set pagesearch [::http::config -useragent $agent]
                        set urlsearch "http://www.baroquew.net/cgi-bin/meteo.cgi?ville=$ville&v=$verbosity&html=0"
                        set token [::http::config -useragent $agent]
                        set token [::http::geturl $urlsearch]
                        puts stderr ""
                        set htmlFile [::http::data $token]
                        set token [::http::cleanup $token]

                        set result [split $htmlFile _]

                        foreach i $result {
                                print $nick $channel $i
                        }
  }
 }
}

putlog "MeteoqueW\[IRC\] 1.2 – LOADED!"

Notez les paramètres :

  • affiche_aide : 0 pour désactiver l’aide, 1 pour l’activer (trigger sur !aide)
  • dtcmode : 0 pour désactiver, 1 pour activer. Si le mode est activé, le bot répondra dtcmessage lorsqu’il sera interrogé sur la météo à un endroit listé dans dtcmatches
  • chanpublic, notice, query : 0/1 pour choisir où afficher les résultats
  • verbosity : 0/1/2 affichent respectivement les tendances du jour, les tendances ET la météo détaillée des jours à venir, les tendances ET la météo détaillée des jours à venir ET les vents (pour les villes qui bénéficient de ce genre d’informations
  • freeverbosity : 0/1 pour laisser les utilisateurs libres de choisir leur niveau de verbosité via les nouvelles commandes !meteo0, !meteo1, !meteo2
  • IDDefault : ville par défaut si !meteo est appelé sans argument
  • nomvilledefaut : nom de la ville par défaut affichée dans l’aide
  • debug : 0/1 pour activer les messages de debugging

Si vous utilisez ce script MeteoqueW, merci de me laisser un mot ! De même si vous décidez de le modifier, merci de toujours référer à mon site et de faire profiter tout le monde de vos modifications !

Creative Commons License
MeteoqueW by http://www.baroquew.info/wordpress/archives/meteoquew-script-tcl-pour-eggdrop is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.0 France License.
Based on a work at www.baroquew.info.

J’avoue avoir emprunté la table de mapping des lettres avec/sans accents au script “Motus” que vous pouvez trouver sur http://forum.egghelp.org/viewtopic.php?t=13665

  • Share/Save/Bookmark
Category: Articles en français, Tech >> Computer | Leave a comment

Autoregistration to Nickserv for your eggdrop bot

I guess when people set a bot for themselves, to use on IRC, they want it to identify its name, especially when it ends up managing a channel. Here is how to configure this (somewhat summarily, but at least you don’t have to install a script) for your eggdrop.

Edit eggdrop.conf to look like below, set nick “Mybot” and other lines are already present but at least you see where to add the lines:

# Set the nick the bot uses on IRC, and on the botnet unless you specify a
# separate botnet-nick, here.
set nick "Mybot"
set identpass "mypass"   # set the variables used to register (identpass, nickserv, identcmd)
set nickserv "NickServ@services.dal.net"   # It is safer to use the full nickserv identifier, not jut "nickserv"
set identcmd "IDENTIFY"

# Set the alternative nick which the bot uses on IRC if the nick specified
# by ’set nick’ is unavailable. All ‘?’ characters will be replaced by random
# numbers.
set altnick "MybotX?"

# Set what should be displayed in the real-name field for the bot on IRC.
# This can not be blank, it has to contain something.
set realname "It’s my bot"

# This is a Tcl script to be run immediately after connecting to a server.
bind evnt – init-server evnt:init_server

proc evnt:init_server {type} {
  global botnick nickserv identcmd identpass # don’t forget to tell the script to use the global variables we defined above
  putquick "MODE $botnick +i-ws"
  putquick "PRIVMSG $nickserv :$identcmd $identpass"  # we will identify on connect
}

# All this is new
# Upon receiving "*This nickname is owned by someone else.*", we will try to identify
bind notc – "*This nickname is owned by someone else.*" identify:notc
proc identify:notc { nick uhost handle text dest } {
 global botnick nickserv identcmd identpass
  if { $nick == $nickserv } {
    puthelp "PRIVMSG $nickserv :$identcmd $identpass"
      putlog "Identifying : $nickserv (as $botnick)"
       }
       }

  • Share/Save/Bookmark
Category: Articles in English, Tech >> Computer | Comments (2)

Basshunter – Boten Anna

Petit phénomène récent dans le monde de l’IRC un peu partout dans le monde et notamment en France, Basshunter est un auteur, compositeur, interprète, réalisateur (il fait tout de A à Z donc) suédois qui signe des titres assez dance, et gravitant souvent autour du thème de l’informatique (même s’il a aussi fait un titre reprenant la musique du “Lion est mort ce soir”).

Le dernier en date est Boten Anna, un titre qui parle d’un bot IRC qui s’avère être une fille en réalité. Regardez les videos (les sous-titres en français sont de mon fait) pour vous en rendre compte par vous-même et si cela vous séduit vraiment, voici les salons consacrés au phénomène :

sur irc.quakenet.org :

  • #Basshunter.se (le salon officiel en suédois, anglais, français …)
  • #Basshunter.fr (un spin-off du salon officiel en français)

Avant que vous ne me demandiez ce qu’est un take-over, allez ici, merci :)

EDIT : Pour les infos qu’on me demande souvent :

  • La fille du clip n’est pas Anna
  • Basshunter passe parfois sur #basshunter.se en effet, et il est op, ne parlez pas aux faux :p
  • La “vraie” Anna est également op sur #basshunter.se
  • Quelle est la nationalité de Basshunter ? Suédois, le monsieur est suédois !

Autres sites :

Les sous-titres : Sous-titres .ssa

  • Share/Save/Bookmark
Category: Articles en français, Tech >> Computer | Comments (1)

Script TCL pour afficher la Meteo sur IRC

Attention : ce script est désormais obsolète. Référez-vous aux nouveaux articles : Ruby et TCL

Voici un petit script pour bot Eggdrop en TCL qui réagit à la commande !meteo sur un salon.

Ce script réagit à !meteo en affichant la meteo fournie par MeteoFrance sur un lieu par défaut mais il peut également rechercher la meteo par ville ou code postale (en France uniquement). Il réagit à la commande !aide et peut également avoir une réaction spécifique pour des recherches particulières.

Le code est commenté et les paramètres de configuration sont en en-tête du fichier. Si vous l’utilisez ou le modifiez, merci de me prévenir. Si vous trouvez des bugs, n’hésitez pas à me le dire également.

P.S. Ce script tourne(ait ?) sur #enst@irc.rezosup.org

Archive du script : MeteoqueW

  • Share/Save/Bookmark
Category: Articles en français, Tech >> Computer | Comments (4)

Status

  • BaroqueW ecoute desproges dans les fjords
    1 day ago
  • BaroqueW : it is in fact NOT funny to point people in the wrong direction when they're lost
    1 day ago
  • BaroqueW : iphone 3gs, July 31st in Sweden - according to Telia
    3 days ago
  • BaroqueW had a quick look at the book keeping of the holidays... gloups
    3 days ago

Popular posts

My Social Networks

DandyID 43 Things Clipmarks coComment Dailymotion Delicious deviantART Digg Diigo Facebook Flickr Get Satisfaction Guitar Hero HelloTxt Hulu ICQ Imdb Imeem Kiva last.fm Linkedin Netvibes orkut PeoplePond Picasa Plaxo PostCrossing RockBand Scribd Stumbleupon Tagged TripAdvisor Twitpic Twitter Xbox LIVE YouTube

Expand the experience

Blogroll

Internet Map

Meta