All pastes #752342 Raw Edit

Something

public text v1 · immutable
#752342 ·published 2007-10-28 10:16 UTC
rendered paste body
on $*:TEXT:/^[!@]m(ove)?(dex)? /Si:#:{
  if (!$2) { .notice $nick You must specify something to search for. }
  else {
    inc %x
    set $+(%,move.search.,%x) $replace($2-,$chr(32),$+(%,20))
    set $+(%,move.msg.,%x) $iif(@* iswm $1,msg $chan,.notice $nick)
    sockopen $+(Move.,%x) veekun.com 80
    write -c read.txt
  }
} 
on *:SOCKOPEN:Move.*:{
  sockwrite -nt $sockname GET /dex/moves/ $+ %move. [ $+ [ $right($sockname,-5) ] ] HTTP/1.1
  sockwrite -nt $sockname Host: veekun.com $+ $crlf $+ $crlf
}
on *:SOCKREAD:Move.*:{
  var %read
  sockread -f %read
  echo -a %read
}

off *:SOCKREAD:Move.*:{
  var %x = $gettok($sockname,2,46)
  var %search = $($+(%,move.search.,%x),2), %msg = $($+(%,move.msg.,%x),2)
  if ($sockerr) {
    write SockErr.txt $sockname : $sockerr
    echo -a Socket Error - Check SockErr.txt
    halt
  }
  elseif (%wait) {
    unset %wait
    if (%wait == text) { set $+(%,text.,%x) $notags(%read) }
    elseif (%wait == power) { set $+(%,power.,%x) $notags(%read) }
    elseif (%wait == accuracy) { set $+(%,accuracy.,%x) $notags(%read) }
    elseif (%wait == pp) { set $+(%,pp.,%x) $notags(%read) }
  }
  else {
    var %read
    sockread %read
    write read.txt %read
    if (*Error - veekun.com* iswm %read) {
      %msg Move $qt(%search) not found.
      cleanup %x
    }
    elseif ($regex(%read,/<a href=".+"><img src=".+" alt="(\w+)" .+ <img src=".+" alt="(\w+)"/)) {
      set $+(%,type.,%x) $regml(1)
      set $+(%,damage.,%x) $regml(2)
    }
    elseif (*<dt>*Flavor Text*</dt>* iswm %read) {
      set %wait text
    }
    elseif (>Power< isin %read) { set %wait power }
    elseif (>Accuracy< isin %read) { set %wait accuracy }
    elseif (>PP< isin %read) { set %wait pp }
    elseif (/html isin %read) {
      open read.txt | .timer 1 3 remove read.txt
      var %type = $($+(%,type.,%x),2), %damage = $($+(%,damage.,%x),2)
      var %power = $($+(%,power.,%x),2), %accuracy = $($+(%,accuracy.,%x),2), %pp = $($+(%,PP.,%x),2)
      var %text = $($+(%,text.,%x),2)
      ;%msg $+(,$capitalize(%search),:) %type $+ -type ¦ $capitalize(%damage) attack
      ;.timer 1 1 %msg Power: %power ¦ Accuracy: %accuracy ¦ PP: %pp
      ;.timer 1 1 %msg $iif(%text,$v1,Error recieving move description)
      cleanup %x
    }
  }
}
alias -l cleanup {
  sockclose $+(Move,.,$1)
  unset $+(%,*.,$1)
  unset %s
}
alias -l notags {
  return $remove($1-,<dd>,</dd>)
}