Youtube advanced search
Platform: mIRC
Published Nov 15, 2009
Updated Dec 28, 2012
Youtube search script for mIRC.
Script was requested by kibblz
Syntax : !youtube -novr search words here. The -switches are optional.
Switch explaination : -n (newest) -o (oldest) -v (view count) -r (rating)
!youtube -h for help
Examples : !youtube -n mad dog
Examples: !youtube mad dog
Examples: @youtube mad dog
- To activate this script for a channel type +youtube (requires ops)
- To deactivate this script for a channel type -youtube (requires ops)
- You can right click channel or status and turn the trigger off/on for all channels.
- The ! trigger will notice the user and the @ trigger will message the channel if the user has halfops or higher.
Demo:
02:08:36 <
Ford_Lawnmower> @youtube whiskey
02:08:37 <
MyMulez> Searching Youtube........
02:08:39 <
MyMulez> Title: Brad Paisley and Alison Kraus - Whiskey Lullaby.wmv Length: 5:28 Type: Music User: bubenceto033 Rating: 5.0 Views: 354 237 Added: 2 years ago Link: http://www.youtube.com/watch?v=G0nA74_0K30
02:08:39 <
MyMulez> Title: whiskey lullaby Length: 4:20 Type: Music User: mofradan Rating: 5.0 Views: 1 248 088 Added: 2 years ago Link: http://www.youtube.com/watch?v=7gV3g9LCvPc
02:08:42 <
MyMulez> Title: Metallica - Whiskey In The Jar: Video Length: 5:00 Type: Music User: universalmusicgroup Rating: 5.0 Views: 1 885 454 Added: 1 year ago Link: http://www.youtube.com/watch?v=7oKLq1JD3vU ;Youtube advanced search by Ford_Lawmower irc.GeekShed.net #Script-Help
alias -l GetYoutube {
var %MaxResults 3
var %TitleColor $+($chr(3),$chr(2))
var %TextColor $+($chr(2),$chr(3),04)
var %LinkColor $+($chr(3),$chr(31))
var %logo $+($chr(2),$chr(3),01,$chr(44),00You,$chr(3),00,$chr(44),04Tube,$chr(2))
$1-2 %logo %TitleColor Searching Youtube........
var %sockname $+(YoutubeAdvancedSearch,$network,$2,$ticks), %yt.url $replace($3-,$chr(32),+)
if ($left($3,1) == -) {
if ($3 == -h || !$4) {
$1-2 Syntax is !Youtube search words here. Optionally, you can change the search type by adding a search flag directly after !youtube and before The search word(s)
$1-2 Valid search flags are -n (newest) -o (oldest) -v (view count) -r (rating) . Ex. !Youtube -n jimi hendrix <<-- Will show the 3 newest posts with jimi hendrix in them.
$1-2 You can also use the @ trigger to message the channel if you have halfops or higher. Ex. @Youtube jimi hendrix
return
}
elseif ($3 == -n) { var %SearchType &search_sort=video_date_uploaded }
elseif ($3 == -o) { var %SearchType &search_sort=video_date_uploaded_reverse }
elseif ($3 == -v) { var %SearchType &search_sort=video_view_count }
elseif ($3 == -r) { var %SearchType &search_sort=video_avg_rating }
%yt.url = $replace($4-,$chr(32),+) $+ %SearchType
}
var %yt.url $replace($iif(- isin $3,$4-,$3-),$chr(32),+) $+ %SearchType
sockopen %sockname www.youtube.com 80
sockmark %sockname $1-2 $+(/results?search_type=&aq=f&search_query=,%yt.url,&hl=en) %MaxResults %TitleColor %TextColor %LinkColor %logo
}
menu Channel,Status {
.$iif($group(#Youtube) == On,$style(1)) Youtube Trigger
..$iif($group(#Youtube) == On,$style(2)) On: .enable #Youtube
..$iif($group(#Youtube) == Off,$style(2)) Off: .disable #Youtube
}
#Youtube on
On $*:Text:/^(\+|-|!|@)Youtube.*/Si:#: {
var %action $regml(1)
if (%action isin +-) && ($regex($nick($chan,$nick).pnick,/(!|~|&|@)/)) {
if (%action == +) {
if ($istok(%YoutubeChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is already running the Youtube script }
else {
.enable #Youtube
Set %YoutubeChanList $addtok(%YoutubeChanList,$+($network,$chan),32)
.msg $chan $nick has activated the Youtube script for $chan .
}
}
else {
if (!$istok(%YoutubeChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is not running the Youtube script }
else {
Set %YoutubeChanList $remtok(%YoutubeChanList,$+($network,$chan),1,32)
.msg $chan $nick has deactivated the Youtube script for $chan .
}
}
}
elseif (!$timer($+(Youtube,$network,$nick))) && ($istok(%YoutubeChanList,$+($network,$chan),32)) {
.timer $+ $+(Youtube,$network,$nick) 1 6 noop
var %method $iif(%action == !,.notice $nick,$iif($regex($nick($chan,$nick).pnick,/(!|~|&|@|%)/),.msg $chan,.notice $nick))
GetYoutube %method $strip($2-)
}
}
#Youtube end
On *:sockopen:YoutubeAdvancedSearch*: {
if (!$sockerr) {
sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.0
sockwrite -n $sockname Host: www.youtube.com
sockwrite -n $sockname $crlf
}
else { echo -st Socket Error $nopath($script) | youtube.cleanup }
}
On *:sockread:YoutubeAdvancedSearch*: {
if ($sockerr) { echo -st Socket Error $nopath($script) | youtube.cleanup }
else {
var %Youtube | sockread %Youtube
if (No video results isin %Youtube) {
$gettok($sock($sockname).mark,1-2,32) No results were found for your search!
youtube.cleanup
}
if ($regex(%Youtube,/item-title="(.*?)"\s?data/i)) hadd -m $sockname title $fix($xchr($fix($regml(1))))
if ($regex(%Youtube,/item-id="(.*?)"\s?data/i)) hadd -m $sockname id $regml(1)
if ($regex(%Youtube,/item-user="(.*?)"\s?data/i)) hadd -m $sockname user $regml(1)
if ($regex(%Youtube,/item-views="(.*?)"\s?data/i)) hadd -m $sockname views $regml(1)
if ($regex(%Youtube,/•</span>(.*?)<span\sclass/i)) {
hadd -m $sockname date $regml(1)
hinc $sockname count
var %s $sockname
tokenize 32 $sock(%s).mark
$1-2 $8- $+($5,Title:,$6) $hget(%s,title) $+($5,User:,$6) $hget(%s,user) $+($5,Added:,$6) $hget(%s,date) $+($5,Views:,$6) $hget(%s,views) $+($7,http://www.youtube.com/watch?v=,$hget(%s,id))
if ($hget(%s,count) >= $4) youtube.cleanup
}
}
}
On *:sockclose:YoutubeAdvancedSearch*: youtube.cleanup
alias -l youtube.cleanup {
if ($hget($sockname)) hfree $v1
sockclose $sockname
return
}
alias Youtube { GetYoutube echo -a $1- }
alias -l Xchr {
var %return $regsubex($regsubex($1-,/&#x([A-F0-9]{1,2});/g,$chr($base($regml(\n),16,10))),/&#([0-9]{2});/g,$chr(\1))
return $replacecs(%return,–,,·,·,»,»,«,«,Ü,Ü,ü,ü,Á,Á,á,á,É,$&
É,é,é,Í,Í,í,í,Ó,Ó,ó,ó,Ñ,Ñ,ñ,ñ,Ú,Ú,ú,ú, ,$chr(32),$&
æ,æ,",",<,<,>,>)
}
alias -l fix { return $regsubex($remove($replace($1-,&,&,","),amp;,<b>,</b>),/&#([0-9]{2});/gi,$chr(\t)) }