on $*:text:/^[!@.](y(ou)?tube|yt)\b/Si:#:{
youtube $+($ticks,$chr(1),$chan,$chr(1),$2-)
}
alias youtube {
if ($numtok($1-,1) >= 2) {
tokenize 1 $1-
var %y.sock $1
var %y.chan $2
var %y.text $3-
}
else {
var %y.sock $ticks
var %y.text $1-
}
if (!%y.text) {
$iif(%y.chan,msg $v1,echo -a) Syntax: $iif(%y.chan,!,/) $+ YouTube [search criteria]
halt
}
$iif(%y.chan,describe $v1 searches,echo -a Searching) for YouTube videos matching $qt($+(,%y.text,)) $+ ...
sockopen youtube. [ $+ [ %y.sock ] ]
www.youtube.com 80
sockmark youtube. [ $+ [ %y.sock ] ] $+($iif(%y.chan,msg $v1,echo -a),$chr(1),%y.text)
}
on *:SOCKOPEN:youtube.*: {
sockwrite -nt $sockname GET /results?search_query= $+ $urlencode($gsm($sockname,2,1)) HTTP/1.1
sockwrite -nt $sockname Host:
www.youtube.com sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:youtube.*: {
if ($sockerr) {
$gsm($sockname,1,1) Error connecting to YouTube: $sock($sockname).wmsg
sockclose $sockname
}
else {
var %x. [ $+ [ $sockname ] ]
sockread %x. [ $+ [ $sockname ] ]
if (no videos found for isin %x. [ $+ [ $sockname ] ]) {
$gsm($sockname,1,1) The search for $qt($+(,$gsm($sockname,2,1),)) returned no results.
sockclose $sockname
}
if ($regex(%x. [ $+ [ $sockname ] ],/<a id="video-watch-url-.+?" href="(.+?)" >/i)) set %yt.url http://www.youtube.com $+ $regml(1)
if ($regex(%x. [ $+ [ $sockname ] ],/title="(.+)" alt="video"><\/a>/i)) set %yt.title $regml(1)
if ($regex(%x. [ $+ [ $sockname ] ],/(\d+ .+ ago)<\/span><br\/>/i)) set %yt.added $regml(1)
if ($regex(%x. [ $+ [ $sockname ] ],/<\/span> (\d+ .+ ago)<br\/>/i)) set %yt.added $regml(1)
if ($regex(%x. [ $+ [ $sockname ] ],/ >(.+?)</a></span></div>/i)) set %yt.from $regml(1)
if ($regex(%x. [ $+ [ $sockname ] ],/<span id="video-num-views-.+?">(\d+)<\/span><br\/>/i)) set %yt.views $regml(1)
if ($regex(%x. [ $+ [ $sockname ] ],/<img class="ratingVS ratingVS-.+" alt="(.+)" src=/i)) set %yt.rating $regml(1)
if (</div> <!-- end search results --> isin %x. [ $+ [ $sockname ] ]) sockclose $sockname
if ($regex(%x. [ $+ [ $sockname ] ],/"runtime">(.+)<\/div>/i)) {
inc %n. [ $+ [ $sockname ] ]
$gsm($sockname,1,1) 9 $+ $chr(149) 4Title: $hf(%yt.title) 4Added: %yt.added 4User: %yt.from 4Length: $regml(1) 4Views: %yt.views 4Rating: $iif(%yt.rating,$v1,0) $+ /5 4URL: %yt.url
if (%n. [ $+ [ $sockname ] ] >= 3) {
sockclose $sockname
unset %n. [ $+ [ $sockname ] ] %yt.*
}
unset %yt.*
sockmark $sockname $+($gsm($sockname,1,1),$chr(1),$gsm($sockname,2,1))
}
}
}
alias hf return $remove($replace($1-,",",>,>,<,<,&,&, ,$chr(160)),?,$chr(9))
alias gsm return $gettok($sock($1).mark,$2,$3)