All pastes #231692 Raw Edit

Something

public text v1 · immutable
#231692 ·published 2006-10-31 23:33 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 64.90.181.252 80
  }
}

#rsstats on
on *:TEXT:!rsstats *:*:{
  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 64.90.181.252 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) $+ $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, 10)) { %statsstring = %statsstring $gettok(%currentstat, 1, 10) $+ $gettok(%currentstat, 3, 10) $+ $chr(124) }
      }
      %statsstring = $left(%statsstring, -2)
    }
    if ($eval(% $+ $1 $+ .self, 2)) { echo -s %statsstring }
    else { msg $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(10)) { %strippedstring = %strippedstring $chr(10) }
      else { %strippedstring = %strippedstring $+ $mid($1-, %charcount, 1) }
    }
    inc %charcount 1
  }
  return %strippedstring
}

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