Jethro commented on a Page, The IMDB (Internet Movie DataBase) Searcher  -  Apr 14, 2010

Here is my attempt to fix the issue, and it should work correctly now:

menu * {
  $iif($group(#IMDB) == On,$style(1)) IMDB Movie/TV Show Search
  .$iif($group(#IMDB) == On,$style(2)) On: .enable #IMDB
  .$iif($group(#IMDB) == Off,$style(2)) Off: .disable #IMDB
}
alias -l addmark { return $+($sock($1).mark,$chr($3),$2) }
alias -l between { noop $regex($1,/\Q $+ $2 $+ \E(.*?)\Q $+ $3 $+ \E/gi) | return $regml($4) }
alias -l char { return $replace($regsubex($1,/&#(x?([a-f\d]*));/gi,$chr($iif($left(\1,1) == x,$base(\2,16,10),\2))),&amp;,&,&lt;,<,&gt;,>,&quot;,") }
alias -l div { var %x $calc($0 - 1), %y 1 | while (%y < %x) { if ($ [ $+ [ %y ] ] != $null) { var %z %z $ [ $+ [ %y ] ] $chr($iif($ [ $+ [ $0 ] ] !isnum 1-,$chr(45),$v1)) } | inc %y } | var %z %z $ [ $+ [ $calc($0 - 1) ] ] | return $deltok(%z,$calc($numtok(%z,45)+1),45) }
alias -l htmlfree { var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;) | return $remove($replace(%x,$cr,$chr(32),$lf,$chr(32)),$chr(9)) }
alias -l lt { var %l $1, %t $2- | tokenize 94 $sock(imdb2).mark | while ($len(%t) > %l) { smsg $1 $left(%t,%l) | var %t $remove(%t,$left(%t,%l)) } | if (%t) smsg $1 %t }
alias -l smsg { msg $iif(c isincs $chan($1).mode,$1 $strip($2-),$1-) }
alias -l star { var %x $iif($abs($round($1,0)) <= 10,$v1,10) | return $+($str(8*,%x),$str(*,$calc(10-%x))) }
#IMDB On
on $*:text:/^[.!@]imdb*/Si:#: { if (!$2-) { .notice $nick [1,8Internet Movie Database]: You must supply a movie/tv show to search! | halt } | $iif($istok(%internetmoviedatabase,#,32),halt,$&
  set -u1 %internetmoviedatabase $addtok(%internetmoviedatabase,#,32)) | sockopen imdb www.imdb.com 80 | sockmark imdb # $replace($2-,$chr(32),+) }
#IMDB End
on *:sockopen:imdb: { tokenize 32 $sock(imdb).mark | sockwrite -n $sockname GET /find?s=all&q= $+ $2 HTTP/1.0 | sockwrite -n $sockname Host: www.imdb.com $+ $crlf $+ $crlf }
on *:sockread:imdb: {
  tokenize 32 $sock(imdb).mark | sockread %imdb
  if (<p style="margin:0 0 0.5em 0;"> isin %imdb) { if ($gettok($gettok(%imdb,4,34),1,47) != title) { halt } | elseif ($gettok($gettok(%imdb,4,34),1,47) == title) { sockmark imdb $+($1,^,$gettok(%imdb,4,34)) | halt } }
  elseif (Location: isin %imdb) { sockmark imdb $+($1,^,$gettok($gettok(%imdb,2,32),3,109)) | halt }
  elseif (<b>Titles (Exact Matches)</b> isin %imdb) { sockmark imdb $+($1,^,$noqt($between($between(%imdb,<b>Titles $+($chr(40),Exact Matches,$chr(41),</b>),$+(=",$chr(40),new Image,$chr(40),$chr(41),$chr(41),.src='),1),<a href=,onclick,1))) | halt }
}
on *:sockclose:imdb: { sockopen imdb2 www.imdb.com 80 | sockmark imdb2 $gettok($sock(imdb).mark,1-2,94) }
on *:sockopen:imdb2: { tokenize 94 $sock(imdb2).mark | sockwrite -n $sockname GET $2 HTTP/1.0 | sockwrite -n $sockname Host: www.imdb.com $+ $crlf $+ $crlf }
on *:sockread:imdb2: {
  var %imdb2 | sockread %imdb2
  if (<title> isin %imdb2) {
    if ($htmlfree(%imdb2) == 400 Bad Request) || ($htmlfree(%imdb2) == IMDb:Permission denied) { sockclose imdb2 | notice $nick ERROR: Could not retrieve $replace($iif($gettok($1,2,32) == $null,$&
        your word,$+(',$v1,')),+,$chr(32)) from the database. Search another movie/tv show? - (15 seconds until next IMDB search)
    }
    sockmark imdb2 $addmark(imdb2,Title: $+(,$char($htmlfree(%imdb2)),),94)
  }
  elseif (<div class="meta"> isin %imdb2) { sockread %imdb2 | sockmark imdb2 $addmark(imdb2,Rating: $star($gettok($htmlfree(%imdb2),1,47)) $+($chr(40),,$iif($replace($htmlfree(%imdb2),$chr(40),$null,$chr(41),$null),$v1,None),,$chr(41)),94) }
  elseif (<h5>MOVIEmeter: isin %imdb2) { sockmark imdb2 $addmark(imdb2,MOVIEmeter: $+(,$iif($gettok($gettok($htmlfree(%imdb2),1,46),2-7,32),$v1,None),),94) }
  elseif ($regex(%imdb2,/(\d{2} \S+ \d{4} \(\S+\))/)) { sockread %imdb2 | sockmark imdb2 $addmark(imdb2,Release Date: $+(,$iif(%imdb2,$regml(1),None),),94) }
  elseif (<h5>Genre:</h5> isin %imdb2) { sockread %imdb2 | sockmark imdb2 $addmark(imdb2,Genre: $+(,$remove($replace($htmlfree(%imdb2),|,$chr(183)),$+($chr(32),more)),),94) }
  elseif (<h5>Tagline:</h5> isin %imdb2) { sockread %imdb2 | sockmark imdb2 $addmark(imdb2,Tagline: $+($remove($htmlfree(%imdb2),$+($chr(32),more))),94) | halt }
  elseif (<h5>Awards:</h5> isin %imdb2) { var %x <a class="tn15more inline" | while (%x !isin %imdb2) { var %imdb3 $addtok(%imdb3,$htmlfree(%imdb2),32) | sockread %imdb2 } | sockmark imdb2 $addmark(imdb2,Awards: $+(,$iif($mid(%imdb3,9,$len(%imdb3)),$replace($v1,&amp;,&),None),),94) }
}
on *:sockclose:imdb2: { tokenize 94 $sock(imdb2).mark | lt 440 $remove($gettok($1,1,32),$1) [1,8Internet Movie Database]: $iif($numtok($sock(imdb2).mark,94) >= 1,$div($iif($3,$v1,$null),$iif($4,$v1,$null),$iif($5,$v1,$null),$iif($6,$v1,$null),$iif($7,$v1,$null),$iif($8,$v1,$null),$&
    $iif($9,$v1,$null),45),Error: Couldn't find your movie/tv show. Search another?) $remove($gettok($1,1,32),$1) [1,8Internet Movie Database]: URL: $+(,http://,$sock(imdb2).addr,$2,) - (15 seconds until next IMDB search) | unset %imdb*
}
 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.