Sockets des jeux olympiques (2004 - athènes) : classement des médailles par pays

Contenu du snippet

Ce code permet d'avoir le classement de tous les pays ayant des médailles aux JO, avec leur rang par total, par nombre de médailles d'or, ...

Page scannée : http://www.athens2004.com/fr/OlympicMedals/medals

Commandes : /jo (pour actualiser le classement), et l'afficher en écho. Pour arrêter l'affichage, il faut retapper /jo
Le classement est sauvegardé dans un .txt (jo.txt), dans le dossier mIRC.
/jo "abréviation du pays" (celle qui est a la fin de l'url). Exemple : /jo FRA, pour afficher le score des français :)
/jo "place" (pour afficher tous les pays à cette place). Exemple : /jo 9 vous donnera au moment ou j'écris ce code, les score de la grèce, de la roumanie, et de la turquie.

Un exemple : (pris totalement au hazard :) )
[ Place : 6e :: Pays : France :: Médailles : Or : 3 - Argent : 2 - Bronze : 4 - Total : 9 :: Rang par total : 6 :: Lien : www.athens2004.com/fr/OlympicMedals/medals?noc=FRA (By ArKanis) ]

Source / Exemple :


alias jo {
  if ($1) {
    if (!$read(jo.txt,1)) { echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Le fichier JO.txt n'existe pas. Tapez /jo pour le créer. 12] | return }
    if ($1 !isnum) {
      var %t = 1
      var %c = $1
      var %n = -0.9
echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Sockets des Jeux Olympiques (www.Athens2004.com) 12::0 Script by ArKanis 12]
      while $read(jo.txt,%t) {
        tokenize 32 $read(jo.txt,%t)
        if ($2 == %c) { inc %n 3 | jo.say %t %n say }
        inc %t
      }
    }
    if ($1 isnum) {
      var %t = 1
      var %c = $1
      var %n = -0.9
echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Sockets des Jeux Olympiques (www.Athens2004.com) 12::0 Script by ArKanis 12]
      while $read(jo.txt,%t) {
        tokenize 32 $read(jo.txt,%t)
        if ($remove($1,=) == %c) { inc %n 3 | jo.say %t %n say }
        inc %t
      }
    }
    return
  }
  if ($timer(jo.40)) { .timerjo.* off | echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Classement arrêté 12] | return }
  sockclose jo | write -c jo.txt | sockopen jo www.athens2004.com 80
}

on *:sockopen:jo:{
  sockwrite -nt $sockname GET http://www.athens2004.com/fr/OlympicMedals/medals HTTP/1.0
  sockwrite -nt $sockname $crlf
}

on *:sockread:jo:{
  sockread %a
  if ((<td align="center"> isin %a) && (</td><td align="left"><img src="/images/results/ isin %a)) {
    var %b = $remove(%a,<td,/td>,<td,align="left">,<img src="/images/results/,.gif",alt="">&nbsp;<a,title=",</a>," href=")
    var %b = $remove($replace(%b,< align="center">,$chr(165),$+(<,$chr(32)),$chr(32)),align="center">)
    var %b = $replace(%b,è,è,é,é,ô,ô,ût,û,à,à,ù,ù,ç,ç,ï,ï,USA_big,USA)
    write jo.txt $left(%b,-1)
  }
}

on *:sockclose:jo:{
  if (!$read(jo.txt,1)) { return }
  var %t = 1
  var %n = 0
echo -a 2 $+ $asctime([HH:nn:ss]) 12,1[ 0Sockets des Jeux Olympiques (www.Athens2004.com) 12::0 Script by ArKanis 12]
  while (%t <= $lines(jo.txt)) {
    jo.say %t %n echo
    inc %n
    inc %t
  }
}

alias jo.say {
  if (!$1) { return }
  var %n = 0
  if ($2) { var %n = $2 }
  var %m = $3-
  if ($3 == echo) { var %m = echo -a }
  var %h = 0
  tokenize 32 $read(jo.txt,$1)
  var %p = $1
;cette partie a été réalisée car il y a des pays qui sont composés de plusieurs mots
  :pays
  if ((/fr/ !isin $ [ $+ [ $calc(3 + %h) ] ]) && (%h < $0)) { inc %h | goto pays }
  var %e = $+($calc($0 -%h),-)
  var %e = $ [ $+ [ %e ] ]
  var %a = $replace($ [ $+ [ $calc(3 + %h) ] ],/fr/,$chr(165),">,$chr(165))
  tokenize 165 %a
  var %l = $+(www.athens2004.com/fr/,$2)
  tokenize 165 %e
  var %e = $1
  var %m1 = $2
  var %m2 = $3
  var %m3 = $4
  var %s = $5
  var %r = $6
  .timerjo. $+ %n 1 %n %m 12,1[ 14P15lace0 : $+(%p,e) 12::14 P15ays0 : %e 12::14 M15édailles0 :8 Or : %m1 12- 15Argent : %m2 12- 7Bronze : %m3 12-15 Total0 : %s 12::14 R15ang par total 0 : %r 12::14 Lien0 : %l (By ArKanis) 12]
}

Conclusion :


Si vous avez un problème avec ce script, merci de mettre des commentaires :)

Cette socket ne marchera que le temps des jeux olympiques, très probablement :), c'est à dire jusqu'au 28 aout je crois ...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.