alias imdb {
unset %imdb.search*
if ($sock(imdb.search)) { sockclose imdb.search }
sockopen imdb.search www.imdb.com 80
sockmark imdb.search $+(/find?q=,$repSpaces($1-))
}
alias -l repSpaces { return $replace($1-,$chr(32),+) }
alias -l _GET {
var %% = sockwrite -n $sockname , %location = $sock($sockname).mark
%% GET %location HTTP/1.0
%% Host: www.imdb.com
%%
}
alias -l _LOCATION {
var %x = $regsubex($1-,m@^http://[^/]*@,)
noop $regex(%x,m@^(/.*?/.*?/)@)
sockopen imdb.title www.imdb.com 80
sockmark imdb.title $regml(1)
sockclose imdb.search
unset %imdb.search*
}
on *:sockopen:imdb.search:{ _GET }
on *:sockread:imdb.search:{
var %s | sockread %s
if (!%imdb.search_body) {
if (!%s) { set %imdb.search_body 1 }
if ($regex(%s,/Location: (.*)$/)) { _LOCATION $regml(1) | return }
}
elseif ($regex(%s,/<p><b>Popular Titles<\/b> \(Displaying \d+ Results?\)<ol><li>\s+<a href="([^"]*?)"/)) {
_LOCATION $regml(1) | return
}
elseif ($regex(%s,/<b>No Matches.<\/b>/)) { echo -sg There were no matches. | unset %imdb.search* }
}
on *:sockopen:imdb.title:{ _GET }
on *:sockread:imdb.title:{
var %s | sockread %s
if ($regex(%s,/<title>(.*?)<\/title>/)) { echo -sg Title: $regml(1) | return }
elseif ($regex(%s,/<b>User Rating:<\/b>/)) { set -z %imdb.rate 5 | return }
if (%imdb.rate && $regex(%s,/<b>(.*?)<\/b>/)) { echo -sg Rating: $regml(1) | unset %imdb.rate | return }
}