Scripting
Bonjour / Bonsoir,

Bienvenue sur ce forum.

Merci, de vous connectez si vous ne l'êtes pas.

Merci, de vous enregistrez si vous ne l'êtes pas. Ceci prend même pas une minute.

Cordialement,

Dylan

Rejoignez le forum, c’est rapide et facile

Scripting
Bonjour / Bonsoir,

Bienvenue sur ce forum.

Merci, de vous connectez si vous ne l'êtes pas.

Merci, de vous enregistrez si vous ne l'êtes pas. Ceci prend même pas une minute.

Cordialement,

Dylan
Scripting
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
AliExpress : Nouveaux codes promo (8€, 20€, ...
Voir le deal

News linuxfr

Aller en bas

News linuxfr Empty News linuxfr

Message  Dylan Mar 29 Déc - 5:02

Code:
# news-linuxfr (08/12/2003)                     #
#################################################################################
#    ___          ___          ___          ___          _____          #
#  /  /\        /  /\        /  /\        /  /\        /  /::\        #
#  /  /:/      /  /::\      /  /::\      /  /::\      /  /:/\:\        #
# /__/::\      /  /:/\:\    /  /:/\:\    /  /:/\:\    /  /:/  \:\       #
# \__\/\:\    /  /:/~/::\  /  /:/~/:/    /  /:/  \:\  /__/:/ \__\:|      #
#    \  \:\  /__/:/ /:/\:\ /__/:/ /:/___ /__/:/ \__\:\ \  \:\ /  /:/      #
#    \__\:\ \  \:\/:/__\/ \  \:\/:::::/ \  \:\ /  /:/  \  \:\  /:/       #
#    /  /:/  \  \::/      \  \::/~~~~  \  \:\  /:/    \  \:\/:/        #
#    /__/:/    \  \:\        \  \:\        \  \:\/:/      \  \::/        #
#    \__\/      \  \:\        \  \:\        \  \::/        \__\/          #
#                \__\/        \__\/        \__\/                        #
#                              #
#                              #
#                ___               #
#               ___        /  /\                           #
#               /  /\      /  /:/                           #
#             /  /:/    /  /:/      ___    ___          #
#             /  /:/    /  /:/  ___  /__/\  /  /\         #
#            /  /::\    /__/:/  /  /\ \  \:\ /  /:/         #
#          /__/:/\:\  \  \:\ /  /:/  \  \:\  /:/          #
#          \__\/  \:\  \  \:\  /:/    \  \:\/:/           #
#              \  \:\  \  \:\/:/      \  \::/           #
#                \__\/    \  \::/        \__\/             #
#                          \__\/                           #
#                              #
#                              #
#               web  : http://tcl.lagon-bleu.org   #
#               mail : jarod_angel@yahoo.fr      #
#               IRC  : Jarod_@IRCNet #buffy      #
#                     Asco@UNDERNet #tyranz      #
#                              #
#################################################################################
#                              #
# NEWS-LINUXFR.TCL vérifie toutes les 5 minutes si il y a de nouvelles news   #
# sur le site de http://linuxfr.org/ et les affiche sur le channel.      #
# Il est également possible de lire la derniere news. Commande : !linuxnews   #                        #
#                              #
# ATTENTION ! Ce TCL requiere HTTP.TCL                  #
#                              #
#################################################################################


##### CONFIGURATION #####

### Si vous voulez que le bot n'affiche les topics que sur un seul channel, l'indiquer ci-dessous :
### ( mettre sous la forme "#channel", mettre "*" pour tous les channels )
set linuxnews(channel) "#buffy"

### (1 oui/0 non) Si vous voulez que le bot envoi les news avec des couleurs :
set linuxnews(couleur) 1

### Indiquez le nbre de mots qui seront visibles lors de l'affichage de la news
### (genre pour eviter ke le bot affiche un article en entier qui ferait 1000 lignes...)
### (le but est de juste voir le debut de l'article pour voir si c interessant !)
set linuxnews(mots) 25

### Indiquer le nom et le repertoire de http.tcl (par défaut le fichier "http.tcl" est mis dans le repertoire "scripts")
set loadhttp "scripts/http.tcl"

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




##### DEBUT DU PROGRAMME #####

### Verifie la presence de http.tcl
if {![file exists $loadhttp]} {
   putlog "\002 \037/!\\ ATTENTION VOUS N'AVEZ PAS HTTP.TCL ! CE SCRIPT NE POURRA DONC PAS MARCHER CORRECTEMENT !! /!\\ \002"
}

### A ne pas changer :-)
# Nom du site
set linuxnews(site) "http://linuxfr.org/"

bind pub - !linuxnews pub:linuxnews
bind pub - !newslinux pub:linuxnews


proc pub:linuxnews { nick uhost handle channel arg } {
   global linuxnews encorebis
   if {$linuxnews(channel) != "*"} {
      if {$linuxnews(channel) != "$channel"} {
         return 0
      }
   }
   set encore [unixtime]
   if {[info exists encorebis]} {
      set trop [expr $encore - $encorebis]
      if {$trop < 15} {
         putquick "notice $nick :Désolé, une demande de !linuxnews toutes les 15 secondes"
         return 0
      }
   }
   set encorebis $encore
   
   ### on regarde la date du jour
   set date [clock format [unixtime] -format %Y/%m/%d]
   
   set token [http::geturl $linuxnews(site)$date/index.html -timeout 10000]
   if {[http::status $token] != "ok"} {
      puthelp "notice $nick :#NEWS-LINUXFR# Error : [http::status $token]"
      return 0
   }
   set reponse [http::data $token]
   http::cleanup $token

   putlog "#NEWS-LINUXFR# Demandes de lecture de la derniere news par $nick ..."   
   
   set indextest [string first "centraldiv" $reponse]
   
   ### recupertation de l'url associee
   set test [linuxnewsgettext "$reponse" "href=\"" "\"" $indextest]
   set indextest [lindex $test 1]
   set linuxnews(url) [lindex $test 0]
   set linuxnews(url) [lindex [split $linuxnews(url) /] end]
      
   ### recuperation du topic de la news
   set test [linuxnewsgettext "$reponse" ">" "</a>" $indextest]
   regsub -all -nocase "\"" $test "\'" test
   set taille [llength $test]
   set indextest [lindex $test [expr $taille - 1]]
   set linuxnews(topic) [lrange $test 0 [expr $taille - 2]]
   set linuxnews(topic) [traitementhtml $linuxnews(topic)]
   regsub -all -nocase "{" $linuxnews(topic) "" linuxnews(topic)
   regsub -all -nocase "}" $linuxnews(topic) "" linuxnews(topic)

   ### recuperation des X premieres lettres de la news
   set test [linuxnewsgettext "$reponse" "</span>." "<br/>" $indextest]
   if { $test == -1 } { return 0 }
   regsub -all -nocase "\"" $test "\'" test
   set taille [llength $test]
   set indextest [lindex $test [expr $taille - 1]]
   set linuxnews(contenu) [lrange $test 0 [expr $taille - 2]]
   set linuxnews(contenu) [traitementhtml $linuxnews(contenu)]
   set taille [llength $linuxnews(contenu)]
   if {$taille > $linuxnews(mots)} {
      set linuxnews(contenu) "[lrange $linuxnews(contenu) 0 $linuxnews(mots)] ..."
   }

   if {$linuxnews(couleur) == 0} {
      regsub -all -nocase "{" $linuxnews(contenu) "" linuxnews(contenu)
      regsub -all -nocase "}" $linuxnews(contenu) "" linuxnews(contenu)
      regsub -all -nocase "{" $linuxnews(topic) "" linuxnews(topic)
      regsub -all -nocase "}" $linuxnews(topic) "" linuxnews(topic)
      puthelp "privmsg $channel :(NEWS-LINUXFR) \002 $linuxnews(topic) : \002 $linuxnews(linuxnews(contenu)) \00315\[$linuxnews(site)$date/$linuxnews(url)\]\00315"
   }
   if {$linuxnews(couleur) != 0} {
      regsub -all -nocase "{" $linuxnews(contenu) "" linuxnews(contenu)
      regsub -all -nocase "}" $linuxnews(contenu) "" linuxnews(contenu)
      regsub -all -nocase "{" $linuxnews(topic) "" linuxnews(topic)
      regsub -all -nocase "}" $linuxnews(topic) "" linuxnews(topic)
      puthelp "privmsg $channel :\0033 (NEWS-LINUXFR) \0032\002$linuxnews(topic) : \002\0036$linuxnews(contenu) \003\00315\[$linuxnews(site)$date/$linuxnews(url)\]\00315"
   }

   return 0
}

bind time - "00 * * * *" time:linuxnews
bind time - "05 * * * *" time:linuxnews
bind time - "10 * * * *" time:linuxnews
bind time - "15 * * * *" time:linuxnews
bind time - "20 * * * *" time:linuxnews
bind time - "25 * * * *" time:linuxnews
bind time - "30 * * * *" time:linuxnews
bind time - "35 * * * *" time:linuxnews
bind time - "40 * * * *" time:linuxnews
bind time - "45 * * * *" time:linuxnews
bind time - "50 * * * *" time:linuxnews
bind time - "55 * * * *" time:linuxnews

proc time:linuxnews { min hour day month year } {
   global linuxnews
   set channel $linuxnews(channel)
   if {![info exists linuxnews(url)]} {
      set linuxnews(url) "rien"
   }
   if {![info exists linuxnews(old)]} {
      set linuxnews(old) "rien"
   }
   
   ### on regarde la date du jour
   set date [clock format [unixtime] -format %Y/%m/%d]
   
   set token [http::geturl $linuxnews(site)$date/index.html -timeout 10000]
   if {[http::status $token] != "ok"} {
      putlog "#NEWS-LINUXFR# Error : [http::status $token]"
      return 0
   }
   set reponse [http::data $token]
   http::cleanup $token

   set indextest [string first "centraldiv" $reponse]   

   if {$indextest == -1} { return 0 }
   
   set ok 0
   
   while {1} {
      ### recupertation de l'url associee
      set test [linuxnewsgettext "$reponse" "href=\"" "\"" $indextest]

      if {$test == ""} { break }
   
      set indextest [lindex $test 1]
      set linuxnews(url) [lindex $test 0]
      set linuxnews(url) [lindex [split $linuxnews(url) /] end]
      
      if {$linuxnews(url) == "www.templeet.org"} { break }
      
      if {$ok == 0} {
         if {$linuxnews(url) == $linuxnews(old)} { break }
         set linuxnews(oldold) $linuxnews(old)
         set linuxnews(old) $linuxnews(url)
         putlog "#NEWS-LINUXFR# Nouvelle linux news ..."
         set ok 1
      } else {
         if {$linuxnews(url) == $linuxnews(old)} { break   }
         if {$linuxnews(url) == $linuxnews(oldold)} { break }
      }

      ### recuperation du topic de la news
      set test [linuxnewsgettext "$reponse" ">" "</a>" $indextest]
      regsub -all -nocase "\"" $test "\'" test
      set taille [llength $test]
      set indextest [lindex $test [expr $taille - 1]]
      set linuxnews(topic) [lrange $test 0 [expr $taille - 2]]
      set linuxnews(topic) [traitementhtml $linuxnews(topic)]
      regsub -all -nocase "{" $linuxnews(topic) "" linuxnews(topic)
      regsub -all -nocase "}" $linuxnews(topic) "" linuxnews(topic)

      ### recuperation des X premieres lettres de la news
      set test [linuxnewsgettext "$reponse" "</span>." "<br/>" $indextest]
      if { $test == -1 } { return 0 }
      regsub -all -nocase "\"" $test "\'" test
      set taille [llength $test]
      set indextest [lindex $test [expr $taille - 1]]
      set linuxnews(contenu) [lrange $test 0 [expr $taille - 2]]
      set linuxnews(contenu) [traitementhtml $linuxnews(contenu)]
      set taille [llength $linuxnews(contenu)]
      if {$taille > $linuxnews(mots)} {
         set linuxnews(contenu) "[lrange $linuxnews(contenu) 0 $linuxnews(mots)] ..."
      }

      set reponse [string range $reponse $indextest end]

      if {$linuxnews(couleur) == 0} {
         regsub -all -nocase "{" $linuxnews(contenu) "" linuxnews(contenu)
         regsub -all -nocase "}" $linuxnews(contenu) "" linuxnews(contenu)
         regsub -all -nocase "{" $linuxnews(topic) "" linuxnews(topic)
         regsub -all -nocase "}" $linuxnews(topic) "" linuxnews(topic)
         puthelp "privmsg $channel :(NEWS-LINUXFR) \002 $linuxnews(topic) : \002 $linuxnews(contenu) \00315\[$linuxnews(site)$date/$linuxnews(url)\]\00315"
      }
      if {$linuxnews(couleur) != 0} {
         regsub -all -nocase "{" $linuxnews(contenu) "" linuxnews(contenu)
         regsub -all -nocase "}" $linuxnews(contenu) "" linuxnews(contenu)
         regsub -all -nocase "{" $linuxnews(topic) "" linuxnews(topic)
         regsub -all -nocase "}" $linuxnews(topic) "" linuxnews(topic)
         puthelp "privmsg $channel :\0033 (NEWS-LINUXFR) \0032\002$linuxnews(topic) : \002\0036$linuxnews(contenu) \003\00315\[$linuxnews(site)$date/$linuxnews(url)\]\00315"
      }
      
      # on passe à la news suivante ..
      set test [linuxnewsgettext "$reponse" "archivelin" "\"" 0]
      if {$test == ""} { break }
      set indextest [lindex $test [expr [llength $test] - 1]]
   }
   
   return 0
}
   

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 "&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 "&icirc;" $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 "<sup>" $contenu "" contenu
   regsub -all -nocase "</sup>" $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 linuxnewsgettext { data start end index } {
   set index0 [string first $start $data $index]
   if {$index0 == -1} {
      return
   }
   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"
}


putlog "\0032NEWS-LINUXFR.TCL\003 (\0031308/12/2003\003) par Jarod_"
Dylan
Dylan
Administrateur

Messages : 221
Date d'inscription : 23/11/2009
Age : 29
Localisation : Chez moi ...

https://scripting.forumactif.com

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum