Derniers codes sur codes-sources

Contenu du snippet

Ce script sert a visualiser les derniers codes qui ont été ajoutés sur les principaux sites du réseaux CodeS-SourceS. L'"addon" est entièrement réalisé en picture window, un peu plus compliqué que les dialogs, mais sans DLL et plus joli (a mon gout)
Exploite :
- Picture Windows
- Hash Table
- Regexp
- Sockets

Source / Exemple :


alias cs {
  var %w @cs
  if ($window(%w)) window -c %w
  window -hdokpBC +dL %w -1 -1 350 291
  drawfill -nr %w 15659197 15659197 0 0 | drawrect -nr %w 8421504 1 0 0 350 291 
  drawline -nr %w 16777215 1 1 289 1 21 348 21 1 21 1 1 291 1 291 19 291 1 349 1 | drawline -nr %w 13489468 1 2 289 348 289 348 19 290 19 290 2 290 19 2 19 348 19 348 1
  dr 7 5 11 11
  drawline -nr %w 8421504 1 0 20 350 20 | drawline -nr %w 8421504 1 291 0 291 20
  drawtext -pbnr %w 8421504 15659197 Verdana 11 23 4 Derniers scripts sur CodeS-SourceS
  drawtext -nr %w 8421504 Webdings 11 304 1 0 r
  drawdot %w
  hadd -m cs text Veuillez sélectionner un site du réseau CodeS-SourceS
  drawcs
}
menu @cs {
  sclick {
    if (!$hget(cs,combo)) {
      if ($inrect($mouse.x,$mouse.y,0,0,350,20)) {
        if ($mouse.x < 290) movewin @cs $calc($mouse.dx -$window(@cs).x) $calc($mouse.dy -$window(@cs).y)
        elseif ($mouse.x isnum 302-314) window -n @cs
        elseif ($mouse.x isnum 320-332) csclose
      }
      elseif ($inrect($mouse.x,$mouse.y,203,27,12,17)) { hadd -m cs combo 1 | drawcs }
      elseif ($inrect($mouse.x,$mouse.y,225,27,63,17)) { hadd -m cs bouton 1 | drawcs }
      elseif ($inrect($mouse.x,$mouse.y,145,265,60,20)) { hadd -m cs bouton2 1 | drawcs }
    }
    else {
      if ($inrect($mouse.x,$mouse.y,133,44,82,132)) hadd cs combotext $gettok($hget(cs,sites),$int($calc(($mouse.y - 32)/13)),59)
      hdel cs combo | drawcs
    }
  }
  uclick {
    if ($hget(cs,bouton)) { 
      hdel cs bouton
      if ($inrect($mouse.x,$mouse.y,225,27,63,17)) {
        if (!$hget(cs,combotext)) { hadd cs text Vous devez tout d'abord sélectionner un site ! }
        else {
          if (!$hget(cs,urls)) hadd -m cs urls http://www.ircfr.com/ http://www.vbfrance.com/ http://www.cppfrance.com/ http://www.csharpfr.com/ http://www.delphifr.com/ http://www.phpcs.com/ http://www.aspfr.com/ http://www.javascriptfr.com/ http://www.flashkod.com/ http://www.codes-sources.com/
          hadd -m cs site $gettok($hget(cs,urls),$findtok($hget(cs,sites),$hget(cs,combotext),1,59),32) | hadd cs host $gettok($gettok($hget(cs,site),2,47),2-,46)
          hadd -m cs text Tentative de connexion à $hget(cs,site)
          sockclose cs | sockopen cs $hget(cs,host) 80
        }
      }
      drawcs 
    }
    if ($hget(cs,bouton2)) { 
      hdel cs bouton2
      if ($inrect($mouse.x,$mouse.y,145,265,60,20)) csclose
      else drawcs
    }
  }
}
alias -l drawcs {
  var %w @cs
  drawrect -nrf %w 15659197 1 4 23 342 263
  if ($hget(cs,text)) drawtext -nr %w 8421504 Verdana 11 9 50 $ifmatch
  dr 225 27 63 17 $iif($hget(cs,bouton),1,0) Charger
  dr 145 265 60 20 $iif($hget(cs,bouton2),1,0) Fermer
  drawrect -nrf %w 16777215 1 9 70 330 190 | drawrect -nr %w 8421504 1 9 70 330 190 | drawrect -nr %w 16432045 1 10 71 328 188
  dr 12 73 40 16 0 Date
  dr 54 73 205 16 0 Nom de la source
  dr 261 73 74 16 0 Auteur
  var %a 1 | while ($hget(cs,code [ $+ [ %a ] ])) {
    tokenize 32 $ifmatch
    var %g $left($gettok($1-,$($+(2-,$calc($0 -1)),2),32),-3) , %p $right($left($gettok($1-,$0,32),-1),-1)
    drawtext -nr %w 8421504 Verdana 10 14 $calc(81+ 10*%a) $1
    drawtext -nr %w 8421504 Verdana 10 57 $calc(81+10*%a) $iif($wrap(%g,Verdana,10,191,0,1) == %g,%g,$+($ifmatch,...))
    drawtext -nr %w 8421504 Verdana 10 264 $calc(81+10*%a) $iif($wrap(%p,Verdana,10,60,0,1) == %p,%p,$+($ifmatch,...))
    inc %a
  }
  drawtext -nr %w 8421504 Verdana 11 9 28 Sites du réseau CS :
  drawrect -nr %w 8421504 1 133 27 82 17 | drawline -nr %w 8421504 1 203 27 203 44
  drawline -nr %w 15880237 1 134 42 202 42 202 27 | drawline -nr %w 16432045 1 134 41 134 28 202 28 | drawrect -nrf %w 16092278 1 135 29 67 13
  drawline -nr %w 16777215 1 204 42 204 28 214 28 | drawline -nr %w 13489468 1 205 42 213 42 213 28 | drawtext -nr %w 8421504 Terminal 13 206 30 $chr(25)
  if ($hget(cs,combotext)) drawtext -nr %w 0 Verdana 11 137 29 $ifmatch
  if ($hget(cs,combo)) {
    drawrect -nr %w 8421504 1 133 44 82 132 | drawrect -nrf %w 16777215 1 134 45 80 130
    if (!$hget(cs,sites)) hadd -m cs sites IrcFr;VBFrance;CPPFrance;C#;DelphiFr;PHPcs;ASPFr;JavaScript;Flash;Tout CS
    var %i 1 | while ($gettok($hget(cs,sites),%i,59)) { drawtext -nr %w 8421504 Verdana 11 137 $calc(%i *13 +32) $ifmatch | inc %i }
  }
  drawdot %w
}
alias -l movewin {
  window $1 $calc($mouse.dx -$2) $calc($mouse.dy -$3)
  if ($mouse.key & 1) .timer 1 0 movewin $1-
}
on *:SOCKOPEN:cs:{
  if ($sockerr) { hadd cs text La connexion avec $hget(cs,site) a échoué. | hdel cs site | drawcs }
  else {
    sockwrite -n cs GET /index.aspx HTTP/1.0 | sockwrite -n cs Host: $hget(cs,host) | sockwrite -n cs
    hadd cs text Liste des derniers codes sur $hget(cs,host) ... | drawcs
  }
}
on *:SOCKREAD:cs:{
  var %a | sockread %a
  if (<th class="H isin %a) { hadd cs temp 1 | halt }
  if ($hget(cs,temp)) {
    if ($deltags(%a)) {
      tokenize 32 $deliso($ifmatch)
      hinc cs i
      hadd cs code [ $+ [ $hget(cs,i) ] ] $gettok($1,1-2,47) $2-
      if ($hget(cs,i) == 16) { sockclose cs | hdel cs temp | hdel cs i | hadd -m cs text Connexion refermée avec $hget(cs,site) | drawcs | halt }
    }
  }
}
on *:SOCKCLOSE:cs:{ hadd -m cs text Connexion refermée avec $hget(cs,site) | hdel cs site | drawcs }
alias -l deltags { var %i, %b = $regsub($1-,/(?:<.+?>)/g,$chr(32),%i) | return $remove(%i,$chr(9)) }
alias -l deliso {
  var %x $1-
  while ($regex(%x,/&(\d+);/)) %x = $replace(%x,$+(&,$regml(1),;),$chr($regml(1)))
  return %x
}
alias -l dr {
  var %w $$window(@cs)
  drawrect -nr %w 8421504 1 $1-4
  drawrect -nrf %w 16092278 1 $calc(2+$1) $calc(2+$2) $calc($3 -4) $calc($4 -4)
  drawline -nr %w $iif($5 == 1,16432045,15880237) 1 $calc(2+$1) $calc($2 +$4 -2) $calc($1 +$3 -2) $calc($2 +$4 -2) $calc($1 +$3 -2) $calc(1+$2)
  drawline -nr %w $iif($5 == 1,15880237,16432045) 1 $calc(1+$1) $calc($2 +$4 -2) $calc(1+$1) $calc(1+$2) $calc($1 +$3 -1) $calc(1+$2)
  if ($6-) drawtext -nr %w 0 Verdana 11 $calc($1 +($3 -$width($6-,Verdana,11))/2) $calc($2 +($4 -$height($6-,Verdana,11))/2) $6-
}
alias -l csclose { hdel -w cs * | close -@ @cs }

Conclusion :


- Pour lancer l'addon tapez /cs
- J'ai laissé tomber les sites les moins importants de CS pour ne pas avoir un combo de 6 mètres de long :o)
- Pour l'instant, ce script ne fait que lister les derniers codes sur CS. Prévu : un petit popup en click droit pour lancer le navigateur, etc...
- Remerciements : PaDa pour l'alias "deliso"
- Désolé pour le screenshot pas très beau (jpeg oblige)
- Prochaine étape : le GUI :)

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.