All pastes #64141 Raw Edit

Stuff

public text v1 · immutable
#64141 ·published 2006-06-11 07:06 UTC
rendered paste body
alias rsstats {
  if ($1) {
    /var %i 1

    while ($sock(rsstats. $+ %i)) {
      /inc %i
    }

    /set %rsstats. $+ %i $+ .user $1-
    /set %rsstats. $+ %i $+ .self 1

    /sockopen rsstats. $+ %i hiscore.runescape.com 80
  }
}

#rsstats on
on $*:text:/^[!@]stats */Si:#: {
  var %send = $iif($left($1,1) == @,msg $chan,notice $nick)
  if ($2) {
    /var %i 1

    while ($sock(rsstats. $+ %i)) {
      /inc %i
    }

    /set %rsstats. $+ %i $+ .user $2-

    if ($chan) {
      /set %rsstats. $+ %i $+ .target $chan
    }
    else {
      /set %rsstats. $+ %i $+ .target $nick
    }

    /sockopen rsstats. $+ %i hiscore.runescape.com 80
  }
}
#rsstats end

on *:SOCKOPEN:rsstats.*:{
  /sockwrite -t $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $eval(% $+ $sockname $+ .user, 2) HTTP/1.1 $+ $crlf
  /sockwrite -t $sockname Host: hiscore.runescape.com $+ $crlf
  /sockwrite -t $sockname $crlf
}

on *:SOCKREAD:rsstats.*:{
  if ($sockerr) {
    if ($eval(% $+ $sockname $+ .self, 2)) {
      /echo -s Socket error while looking up $eval(% $+ $sockname $+ .user, 2) $+ : $sockerr
    }
    else {
      /msg $eval(% $+ $sockname $+ .target, 2) Socket error while looking up $eval(% $+ $sockname $+ .user, 2) $+ : $sockerr
    }

    /cleanup $sockname
  }
  else {
    /sockread &read
    /bwrite $sockname -1 -1 &read

    if ($bfind(&read, 1, </html>).text) {
      /results $sockname
    }
  }
}

on *:SOCKCLOSE:rsstats.*:{
  /cleanup $sockname
}

alias -l results {
  if ($1) {
    /bread $1 1 $file($1).size &statspage

    /var %statsstring $chr(91) 04 $+ $upper($eval(% $+ $1 $+ .user, 2)) $+  $chr(93) $+ :

    if ($bfind(&statspage, 1, does not feature in the hiscores.).text) {
      %statsstring = %statsstring does not feature in the hiscores.
    }
    else {
      /var %currentstat
      /var %i 0

      while (1) {
        %i = $bfind(&statspage, $calc(%i + 1), <td align="left"><a href="overall.ws?table=).text

        if (!%i) {
          /break
        }

        %currentstat = $striphtml($bvar(&statspage, %i, 150).text)
        if ($gettok(%currentstat, 3, 32)) {
          %statsstring = %statsstring $gettok(%currentstat, 1, 32) 02 $+ $gettok(%currentstat, 3, 32) $+  $chr(124)
        }
      }

      %statsstring = $left(%statsstring, -2)
    }

    if ($eval(% $+ $1 $+ .self, 2)) {
      /echo -s %statsstring
    }
    else {
      %send $eval(% $+ $1 $+ .target, 2) %statsstring
    }

    /cleanup $1
  }
}

alias -l striphtml {
  /var %charcount 1
  /var %tag 0
  /var %strippedstring

  while (%charcount <= $len($1-)) {
    if ($mid($1-, %charcount, 1) == <) {
      %tag = 1
    }
    elseif ($mid($1-, %charcount, 1) == >) {
      %tag = 0
    }
    elseif (!%tag) {
      if ($mid($1-, %charcount, 1) == $chr(32)) {
        %strippedstring = %strippedstring $chr(32)
      }
      else {
        %strippedstring = %strippedstring $+ $mid($1-, %charcount, 1)
      }
    }
    /inc %charcount 1
  }

  /return %strippedstring
}

alias -l cleanup {
  if ($1) {
    /.remove $1
    /unset % $+ $1 $+ .*
    /sockclose $1
  }
}