Youtube url detector for mIRC
Platform: mIRC
Published Jul 14, 2011
Updated May 08, 2013
Remote script for a bot that will resolve valid Youtube links and return the title and some other information about the video to channels the script is turned on for.
SCREEN:
Usage:
- Copy this code, paste it to a new remote and save with a unique filename.
- Type +ytdetect in each channel you want the script to run in.(Requires Ops or higher)
- -ytdetect to turn the script off for a channel.
;YouTube Link detector by Ford_Lawnmower irc.Geekshed.net #Script-Help
alias -l GetLinkDetectorForYoutube {
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Start Setup;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Change %tagcolor to the color you want for tags:
var %tagcolor $+($chr(15),$chr(2))
;;;; Change %textcolor to the color you want for normal text
var %textcolor $+($chr(15),$chr(3),04)
;;;; Change %logo to change the YouTube logo
var %logo $+($chr(2),$chr(3),01,$chr(44),00You,$chr(3),00,$chr(44),04Tube,$chr(2))
;;;; Change %tagSelection to choose the tags you want displayed.
;;;; Valid tags are: title views likes dislikes uploader and date
var %tagSelection title views likes dislikes uploader date
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;End Setup;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
var %sockname $+(LinkDetectorForYoutube,$network,$2,$ticks,$r(1,1000))
hadd -m %sockname tags %tagSelection
hadd %sockname tagcolor %tagcolor
hadd %sockname textcolor %textcolor
hadd %sockname logo %logo
sockopen %sockname www.youtube.com 80
sockmark %sockname $1-2 $+(/watch?v=,$3)
}
menu Channel,Status {
.$iif($group(#LinkDetectorForYoutube) == On,$style(1)) LinkDetectorForYoutube
..$iif($group(#LinkDetectorForYoutube) == On,$style(2)) On: .enable #LinkDetectorForYoutube
..$iif($group(#LinkDetectorForYoutube) == Off,$style(2)) Off: .disable #LinkDetectorForYoutube
}
#LinkDetectorForYoutube on
On $*:Text:/(^[\+-])ytdetect$|(https?\x3a\/\/|www\.)(([\S]*youtube\.com[\S]+v\=)|(youtu\.be\/))([\S]{11})/Si:#: {
var ¬tion $strip($regml(1)), %id $strip($regml(4))
if (¬tion isin +-) && ($regex($nick($chan,$nick).pnick,/(!|~|&|@)/)) {
if (¬tion == +) {
if ($istok(%LinkDetectorForYoutubeChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is already running the LinkDetectorForYoutube script }
else {
.enable #LinkDetectorForYoutube
set %LinkDetectorForYoutubeChanList $addtok(%LinkDetectorForYoutubeChanList,$+($network,$chan),32)
.msg $chan $nick has activated the LinkDetectorForYoutube script for $chan .
}
}
else {
if (!$istok(%LinkDetectorForYoutubeChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is not running the LinkDetectorForYoutube script }
else {
Set %LinkDetectorForYoutubeChanList $remtok(%LinkDetectorForYoutubeChanList,$+($network,$chan),1,32)
.msg $chan $nick has deactivated the LinkDetectorForYoutube script for $chan .
}
}
}
elseif (!$timer($+(LinkDetectorForYoutube,$network,$nick))) && ($istok(%LinkDetectorForYoutubeChanList,$+($network,$chan),32)) {
.timer $+ $+(LinkDetectorForYoutube,$network,$nick) 1 4 noop
GetLinkDetectorForYoutube .msg $chan %id
}
}
#LinkDetectorForYoutube end
On *:sockopen:LinkDetectorForYoutube*: {
if (!$sockerr) {
sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.0
sockwrite -n $sockname Host: $sock($sockname).addr
sockwrite -n $sockname $crlf
}
else { sockclose $sockname | return }
}
On *:sockread:LinkDetectorForYoutube*: {
if ($sockerr) { sockclose $sockname | return }
else {
var %LinkDetectorForYoutube | sockread %LinkDetectorForYoutube
if ($regex(%LinkDetectorForYoutube,/alt="Like">\s(.*)/i)) {
hadd $sockname likes $+($hget($sockname,tagcolor),Likes:) $+($hget($sockname,textcolor),$regml(1))
}
elseif ($regex(%LinkDetectorForYoutube,/alt="Dislike">\s(.*)/i)) {
hadd $sockname dislikes $+($hget($sockname,tagcolor),Disikes:) $+($hget($sockname,textcolor),$regml(1))
}
elseif (<span class="watch-view-count"> isin %LinkDetectorForYoutube) {
hadd $sockname viewsFound 1
if ($regex(%linkdetectorforyoutube,/\/user\/([^\/]+)\/videos/i)) {
hadd $sockname uploader $+($hget($sockname,tagcolor),Uploader:) $+($hget($sockname,textcolor),$regml(1))
}
}
elseif ($hget($sockname,viewsFound)) {
hadd $sockname viewsFound 0
hadd $sockname views $+($hget($sockname,tagcolor),Views:) $+($hget($sockname,textcolor),$remove(%LinkDetectorForYoutube,<strong>,</strong>))
}
elseif (($regex(%LinkDetectorForYoutube,/dir="ltr">(.*?)<\/a><span class="yt-user-separator">/i))) {
hadd $sockname uploader $+($hget($sockname,tagcolor),Uploader:) $+($hget($sockname,textcolor),$regml(1))
hadd $sockname date $+($hget($sockname,tagcolor),Upload Date:) $+($hget($sockname,textcolor),$regml(2))
}
elseif (($regex(%LinkDetectorForYoutube,/watch-video-date"\s>(.*?)<\/span>/i))) {
hadd $sockname date $+($hget($sockname,tagcolor),Upload Date:) $+($hget($sockname,textcolor),$regml(1))
if ($hget($sockname,tags)) $gettok($sock($sockname).mark,1-2,32) $hget($sockname,logo) $Xchr($regsubex($v1,/([\S]+)/g,$hget($sockname,\t)))
if ($hget($sockname)) hfree $sockname
sockclose $sockname
}
elseif ($regex(%LinkDetectorForYoutube,/class="watch-video-date"\s>(.*?)<\/span>/)) {
hadd $sockname date $+($hget($sockname,tagcolor),Upload Date:) $+($hget($sockname,textcolor),$regml(1))
}
elseif ($regex(%LinkDetectorForYoutube,/class="long-title".*title="(.*?)">/)) {
hadd $sockname title $+($hget($sockname,tagcolor),Title:) $+($hget($sockname,textcolor),$regml(1))
}
elseif ($regex(%LinkDetectorForYoutube,/<meta\sname="title"\scontent="(.*?)">/)) {
hadd $sockname title $+($hget($sockname,tagcolor),Title:) $+($hget($sockname,textcolor),$regml(1))
}
}
}
on *:sockclose:LinkDetectorForYoutube*: if ($hget($sockname)) hfree $sockname
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),$&
æ,æ,","&,&)
}