All pastes #374578 Raw Edit

Anonymous

public text v1 · immutable
#374578 ·published 2007-02-27 18:07 UTC
rendered paste body
on *:SOCKOPEN:_imdb.*: {
  tokenize 32 $sock($sockname).mark
  if ($1 == 0) { var %u = $+(/find?,$iif($6,nm=on,tt=on),;mx=,$iif($5,$5,1),;,q=,$_encode($8-)) }
  elseif ($7) { var %u = $remove($7,http://www.imdb.com) }
  sockwrite -nt $sockname GET %u HTTP/1.1
  sockwrite -nt $sockname Accept-Language: en-us
  sockwrite -nt $sockname User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1
  sockwrite -nt $sockname Referer: http://www.imdb.com/search
  sockwrite -nt $sockname Host: www.imdb.com
  sockwrite -nt $sockname Connection: keep-alive
  sockwrite -t $sockname $str($crlf,2)
  if ($bfind(&x,1,$crlf $+ Location:) > 0) {

    if ($regex($bvar(&x,$ifmatch,800).text, Location: (.[^ $+ $crlf $+ ]+))) {
      tokenize 32 $sock($sockname).mark
      if ($hget($sockname)) { if ($hget($sockname)) { hfree $sockname } }
      sockclose $sockname
      sockmark $_open $iif($6,3,1) $2 $3 $4 $5 $6 $gettok($regml(1),1,63) $8-
      return
    }
  }

  hadd -mbu300 $sockname $_item($sockname) &x
  if ($bfind(&x, 1, </html>)) { var %sn $sockname, %sm $sock(%sn).mark | sockclose $sockname | _main %sn %sm | return }
  goto nextread
}

on *:SOCKCLOSE:_imdb.*: { _main $sockname $sock($sockname).mark | return }
# Main HTML Parsing Alias
alias -l _main {
  var %i 1, %sn $1
  bunset &x
  if ($hget(%sn)) { hfree %sn }
  if ($bvar(&x,0) == 0) {
    _hadd %sn error No data received on socket!
    _parse %sn error $2-
    sockclose %sn
    return
  }
  tokenize 32 $2-
  if ($1 == 0) {
    var %i 0, %p = $bfind(&x, 1, <ol>)
    while ($regex(one, $bvar(&x, %p, 500).text, <li>.*?<a href="(.[^"]+)".*?>(.[^<]+)</a>(.[^<]*).*?</li>)) {
      inc %i
      if (!$5) {
        if ($hget(%sn)) { hfree %sn }
        sockmark $_open $iif($6,3,1) $2 $3 $4 $5 $6 $+(http://www.imdb.com,$gettok($regml(one, 1),1,63)) $8-
        return
      }
      else {
        _hadd %sn num %i
        _hadd %sn title $_regexp($regml(one, 2))
        _hadd %sn url http://www.imdb.com $+ $gettok($regml(one, 1),1,63)
        _hadd %sn year $iif($remove($regml(one, 3),$chr(40),$chr(41),$chr(32)),$ifmatch,n/a)
        _parse %sn list $1-
      }
      if ($5 == %i) { break }
      var %p = $bfind(&x, $calc(%p + 10), <li>)
    }
    if (%i == 0) { _parse %sn none $1- }
    elseif (%i != $5) {
      _hadd %sn found %i
      _parse %sn miss $1-
    }
  }
  elseif ($1 == 1) {
    var %p = $bfind(&x, 1, <title>)
    if ($regex($bvar(&x, %p, 100).text, <title>(.[^<]*)</title>)) {
      _hadd %sn title $_regexp($regml(1))
      _hadd %sn url $7
      _hadd %sn rating Awaiting votes
      _hadd %sn rating_votes 0 votes
      _hadd %sn rating_bar
      _hadd %sn rating_extra
    }
    var %p = $bfind(&x, %p, <b class=)
    while ($regex(one, $remove($bvar(&x, %p, 500).text, $cr, $lf), <b class=".[^"]*">(.*?)</b>)) {
      while ($regex(one, $remove($bvar(&x, %p, 500).text, $cr, $lf), <b class=".[^"]*">(.*?)</b>)) {
        var %t = $replace($lower($remove($regml(one, 1),:)), $chr(32), _), %m
        if (%t == writing_credits) || (%t == directed_by) || (%t == genre) {
          var %i 1
          if (%t == genre) { var %j = $calc($bfind(&x, $calc(%p + 1), $+(<br><br>)) - %p) }
          else { var %j = $calc($bfind(&x, $calc(%p + 1), $+(<br>,$lf,<br>)) - %p) }
          if (%j > 800) { var %j 800 } | elseif (%j < 0) { var %j 0 }
          var %j = $regex(one, $remove($bvar(&x, %p, %j).text, $lf), /<a href=".*?/">(.*?)</a>/g)
          while (%i <= %j) {
            var %m = $iif(%m,%m /) $_regexp($regml(one, %i))
            inc %i
          }
          _hadd %sn %t %m
        }
        elseif ($regex(one, $remove($bvar(&x, %p, 800).text, $lf, :</b><br>), <b class=".[^"]*">.*?</b>(.*?)(?:<br><br>|</td>|<br>))) {
          _hadd %sn %t $_regexp($regml(one, 1))
        }
        elseif (%t == user_rating) {
          .echo -q $regex($remove($bvar(&x, $bfind(&x, $calc(%p + 1), $+(</a>,$lf,<b>)), 800).text, $cr, $lf), <b>(.*?)/10</b> \((.*?)\)<a href="/rg/.*?</a>(.*?)<br><br>))
          _hadd %sn %t $_regexp($regml(one, 1))
        }
        if ($regml(1)) {
          _hadd %sn rating_bar $_rating($regml(1))
          _hadd %sn rating $+($regml(1),/10)
          _hadd %sn rating_votes $regml(2)
          _hadd %sn rating_extra $iif($regml(3), - $_regexp($replace($regml(3), top, Top, bottom, Bottom, ffb,)))
        }
      }
      var %p = $bfind(&x, $calc(%p + 1), <b class=)
    }
    _parse %sn movie $1-
  }
  elseif ($1 == 3) {
    var %p = $bfind(&x, 1, <title>)
    if ($regex($bvar(&x, %p, 100).text, <title>(.[^<]*)</title>)) {
      _hadd %sn name $_regexp($regml(1))
      _hadd %sn url $7
    }
    var %p = $bfind(&x, %p, <dt>)
    while ($regex($remove($bvar(&x, %p, 800).text, $cr, $lf), <div class="ch">(.[^<]*)</div></dt><dd>(.*?)</dd>)) {
      var %m = $replace($lower($replace($remove($regml(1), :), Date of birth (location), Date of Birth, biography, Biography, Sometimes Credited As, Also Known As)),$chr(32),_)
      _hadd %sn %m $_regexp($replace($regml(2), <br>, $+($chr(32),-,$chr(32))))
      var %p = $bfind(&x, $calc(%p + 1), <dt>)
    }
    _parse %sn cast $1-
  }
}
;# Main Input Alias
alias -l _input {
  if (!$_ini(set, online)) { return }
  var %l 0, %c 0, %i 1
  while (%i <= $calc($0 - 3)) {
    var %m = $gettok($4-,%i,32)
    if (($left(%m,2) iswm -l) && ($right(%m,-2) isnum)) { var %l $right(%m,-2) }
    elseif (%m == -c) { var %c 1 }
    else { break }
    inc %i
  }
  var %t = $gettok($4-, $+(%i,-), 32)
  if (!%t) {
    _msg $1 $2 $3 3 $decode(AklNRGIgTW92aWUgU2VhcmNoIHYxLjcCIGJ5IE1laWogPG1laWppZUBnbWFpbC5jb20+,m)
    _msg $1 $2 $3 3 $eval($decode(AlVzYWdlAjogJF9pbmkoc2V0LCB0cmlnZ2VyKSBbb3B0aW9uc10gPHNlYXJjaD4=,m),2)
    _msg $1 $2 $3 3 $decode(Ak9wdGlvbnMCOg==,m)
    _msg $1 $2 $3 3 $decode(AiACIAIgAiACIAJMaXN0IFJlc3VsdHM6IC1sTiAod2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgdG8gbGlzdCk=,m)
    _msg $1 $2 $3 3 $decode(AiACIAIgAiACIAJDYXN0ICYgQ3JldzogLWMgKHNlYXJjaCBmb3IgYWN0b3JzL2FjdHJlc3Nlcy9maWxtIG1ha2VycyBhbmQgY3Jldyk=,m)
    _msg $1 $2 $3 3 $eval($decode(AkV4YW1wbGUCOiAkX2luaShzZXQsIHRyaWdnZXIpIC1jIC1sNSBLZWlyYQ==,m),2)
    return
  }
  if ($_ini(set, max) < %l) { var %l $ifmatch }
  ; Format:
  ; 1 = what part are we up to
  ; 0 = listing results
  ; 1 = movie info
  ; 2 = extended movie info (not added yet)
  ; 3 = cast / crew info
  ; 2 = channel the trigger was activated from
  ; 3 = network scid
  ; 4 = nickname of the person who activated it
  ; 5 = how many results to list (1, this is default)
  ; 6 = get cast and crew info (0 = get movie info, this is default)
  ; 7 = used for passing urls between events (0 = defualt)
  ; 8 = search string
  sockmark $_open 0 $1 $2 $3 %l %c 0 %t
}
;# Queue Aliases
alias -l _msg {
  set %queue._imdb. [ $+ [ $calc($_info(0) + 1) ] ] $1-
  if (!$timer(_imdb)) { .timer_imdb -m 1 2000 _say }
}
alias -l _info {
  if ($1 isnum) {
    if (%queue._imdb. [ $+ [ $1 ] ]) && ($1 > 0) { return %queue._imdb. [ $+ [ $1 ] ] }
    elseif ($1 == 0) { return $var(%queue._imdb.*) }
  }
}
alias -l _say {
  var %i 1
  if (%queue._imdb. [ $+ [ %i ] ]) {
    tokenize 32 %queue._imdb. [ $+ [ %i ] ]
    scid $2
    if ($3 ison $1) && ($me ison $1) && ($5) {
      set %imdbinfo [iMDB] $5-
    }
    unset %queue._imdb. [ $+ [ %i ] ] | var %h $calc(%i + 1)
    while (%queue._imdb. [ $+ [ %h ] ]) { set %queue._imdb. [ $+ [ $calc(%h - 1) ] ] %queue._imdb. [ $+ [ %h ] ] | unset %queue._imdb. [ $+ [ %h ] ] | inc %h }
  }
  else { .timer_imdb off }
  unset %queue._imdb.
}
;# Proxy Aliases
alias -l _open {
  :name
  var %s = $+(_imdb.,$md5($ticks))
  if ($sock(%s)) { goto name }
  if ($_ini(set, proxy)) {
    if ($_ini(set, host)) && ($_ini(set, port)) { sockopen %s $_ini(set, host) $_ini(set, port) }
    else { echo -ta [ 4uT0.Tr4d3r@iMDB ][ Error: please specify a hostname and port number in the proxy settings ] }
  }
  else { sockopen %s www.imdb.com 80 }
  return %s
}
;# Misc Aliases
alias -l _item {
  var %i 1
  while ($hget($1,%i).item) { inc %i }
  return %i
}
alias -l _rating {
  var %s = $ceil($1), %i 1
  while (%i <= 10) { if (%i <= %s) { var %z $+(%z,*) } | else { var %z $+(%z,*) } | inc %i }
  return $+([,%z,])
}
alias -l _regexp {
  var %i 1, %l quot 34|lt 60|lg 62|amp 38|nbsp 32, %m $1
  while ($regex(two, %m, /(&#(\d{1,3});)/s)) { var %m = $replace(%m, $regml(two, 1), $chr($regml(two, 2))) }
  .echo -q $regsub(%m, /<[^>]+>/g,, %m)
  while (%i <= $gettok(%l,0,124)) {
    var %t = $gettok(%l,%i,124)
    .echo -q $regsub(%m, $+(/&,$gettok(%t,1,32),;/g), $chr($gettok(%t,2,32)), %m)
    inc %i
  }
  .echo -q $regsub(%m, /&[^;]+;/g,, %m)
  return $remove(%m, (show more), (WGA), (more), (view trailer))
}
alias -l _mode { return $iif($_ini(set, msgmode), $ifmatch, 1) }
alias -l _encode {
  var %s, %p = $len($1-)
  while (%p) {
    if ($mid($1-,%p,1) isalnum) { %s = $+($ifmatch,%s) }
    else { %s = $+(%,$base($asc($mid($1-,%p,1)),10,16),%s) }
    dec %p
  }
  return %s
}
alias -l _ini {
  if ($isid) { return $readini($scriptdirimdb.set, n, $1, $$2) }
  elseif ($3) { writeini $+(",$scriptdir,imdb.set,") $1 $2 $$3- }
  else { remini $+(",$scriptdir,imdb.set,") $$1 $2 }
}
alias -l {
  if ($_ini(set, all)) { return 1 }
  var %i 1, %l $_ini(set, networks)
  var %j 1
  while (%j <= $gettok($_ini(set, $+(.,%n)), 0, 44)) {
    var %c = $gettok($_ini(set, $+(.,%n)), %j, 44)
    if (%c == $1) { return 1 }
    inc %j
  }
}
inc %i
}
}
;# Output Parsing Aliases
alias -l _mini {
var %i 1, %l
while (%i <= $ini($scriptdirimdb.set, $1, 0)) {
var %m = $ini($scriptdirimdb.set, $1, %i)
if ($iif($3,$3-,*) iswm %m) { var %l = $addtok(%l, %m, 44) }
inc %i
}
var %l = $sorttok(%l, 44)
return $iif($2 == 0, $gettok(%l, 0, 44), $gettok(%l, $2, 44))
}
alias -l _hadd { hadd -mcu300 $1 $$2 $3- }
alias -l _codes {
var %i 1, %o $$1-, %r = $+(/&b\^/g 2|/&u\^/g 31|/&o\^/g 15|/&k\^/g 3|/&r\^/g 22)
while (%i <= $gettok(%r, 0, 124)) {
var %t = $gettok(%r, %i, 124)
.echo -q $regsub(%o, $gettok(%t, 1, 32), $iif($gettok(%t, 2, 32) isnum, $chr($ifmatch), $ifmatch), %o)
inc %i
}
return %o
}
alias -l _parse {
var %i 1, %m $+($2,_*), %s $3-
_hadd $1 chan $gettok(%s, 2, 32)
_hadd $1 nick $gettok(%s, 4, 32)
_hadd $1 limit $gettok(%s, 5, 32)
_hadd $1 search $gettok(%s, 8-, 32)
while (%i <= $_mini(outp, 0, %m)) {
var %e = $_mini(outp, %i, %m), %l = $_codes($_ini(outp, %e)), %j 1, %o %l
while (%j <= $hget($1, 0).item) {
  .echo -q $regsub(%o, $+(/&,$hget($1, %j).item,\^/g), $hget($1, $hget($1, %j).item), %o)
  inc %j
}
inc %i
if ($regex(%l, /&[^&]*?\^/g) != $regex(%o, /&[^&]*?\^/g)) {
  .echo -q $regsub(%o,/&[^&]*?\^/g,n/a, %o)
  _msg $gettok(%s, 2, 32) $gettok(%s, 3, 32) $gettok(%s, 4, 32) $_mode %o
}
}
if ($hget($1)) { hfree $1 }
}
alias _imdb { if (!$dialog(_imdb)) { dialog -m _imdb _imdb } }
alias -l _replace { return $replace($$1-, $chr(2), &b^, $chr(31), &u^, $chr(15), &o^, $chr(3), &k^, $chr(22), &r^)) }
dialog _imdb {
  title "IMDb @ Tr4d3R"
  size -1 -1 73 80
  option dbu
  button "Done", 2, 15 67 40 10, ok cancel
  check "Enable Script", 15, 15 19 43 9
  check "Enable Skiplist", 18, 15 29 43 9
  box "Options", 13, 5 6 60 58
  button "Proxy Settings", 17, 10 50 50 9
}
dialog _imdb.proxy {
  title "Pr0xy to connect iMDB @ 4uT0.Tr4d3R"
  size -1 -1 164 19
  option dbu
  button "Done", 1, 60 10 37 9, ok cancel
  text "Host:", 2, 0 1 14 8, right
  edit "", 5, 132 0 31 10
  check "Enabled", 6, 133 10 30 9
}
on *:DIALOG:_imdb:*:*: {
  if ($devent == init) {
    if ($_ini(set, online)) { did -c $dname 15 }
    if ($_ini(set, skiplist)) { did -c $dname 18 }
  }
  if ($devent == sclick) {
    if ($did == 17) { if (!$dialog(_imdb.proxy)) { dialog -ma _imdb.proxy _imdb.proxy } }
    if ($did == 18) { _ini set skiplist $did($dname,18).state }
    if ($did == 15) { _ini set online $did($dname,15).state }
  }
}
on *:DIALOG:_imdb.proxy:*:*: {
  if ($devent == init) {
    did -a $dname 3 $_ini(set, host)
    did -a $dname 5 $_ini(set, port)
    if (!$_ini(set, proxy)) || (!$_ini(set, host)) || (!$_ini(set, port)) { did -b $dname 3,5 }
    else { did -c $dname 6 }
  }
}
elseif ($devent == sclick) {
  if ($did == 6) {
    _ini set proxy $did($dname,6).state
    if ($did($dname,6).state == 1) { did -e $dname 3,5 }
    else { did -b $dname 3,5 }
  }
}
elseif ($devent == close) {
  _ini set host $did($dname,3).text
  _ini set port $did($dname,5).text
}
}
alias skiplistimdb {
if (%sec == DVDR || %sec == XVID) { if ($_ini(set, skiplist)) { set %imdbstrip $gettok(%imdbinfo,5-,47)
    set %imdbstrip $remove($strip(%imdbstrip),•,:)
    set %imdb_genre $left(%imdbstrip,$calc($pos(%imdbstrip,Score,1)-1))
    set %imdbx %imdb_genre
    set %imdb_genre $remove(%imdb_genre,Genre)
    set %imdbstrip $remove(%imdbstrip,%imdbx)
    set %imdb_score $left(%imdbstrip,$pos(%imdbstrip,/10,1))
    set %imdb_score $remove(%imdb_score,/,Score)
    set %imdbstrip $remove(%imdbstrip,Score,%imdb_score,/10)
    set %imdb_votes $left(%imdbstrip,$calc($pos(%imdbstrip,votes,1)-1))
    set %imdb_votes $remove(%imdb_votes,@)
    set %imdb_lang $right(%imdbinfo,- $+ $pos(%imdbinfo, Language,1))
    set %imdb_lang $remove($strip(%imdb_lang),anguage,:)
    if (%imdb_score == $null) { set %Pre.failed waiting.5.votes | Pre.failed }
    if (*Documentary* iswm %imdb_genre) { set %Pre.failed Documentary | Pre.failed }
if (*English* !iswm %imdb_lang) { set %Pre.failed Foreign: %imdb_lang | Pre.failed } } }
if (%sec == DVDR) { run.DVDR }
elseif (%sec == XVID) { run.XVID }
}