I've found this youtube script and it's working pretty well so far:
Code: Select all
package require http 2.4
bind PUBM - * mu
proc mu {nick uhost hand chan text} {
set web(page) http://www.youtube.com
set watch [regexp -nocase -- {\/watch\?v\=([^\s]{11})} $text youtubeid]
if { $watch == 0 } {
set watch [regexp -nocase -- {youtu\.be\/([^\s]{11})} $text a youtubeid]
set youtubeid "/watch?v=$youtubeid"
}
set logoo "\002\00301,00You\00300,04Tube\002\017"
if {$watch && $youtubeid != ""} {
putlog "$web(page)$youtubeid"
set agent "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1"
set t [::http::config -useragent $agent]
set t [::http::geturl "$web(page)$youtubeid" -timeout 30000]
set data [::http::data $t]
::http::cleanup $t
set l [regexp -all -inline -- {<meta name="title" content="(.*?)">.*?<span class="watch-view-count">.*?<strong>(.*?)</strong>} $data]
regexp {"length_seconds": (\d+),} $data "" length
foreach {black a b c d e} $l {
set a [string map -nocase {\&\#39; \x27 & \x26 " \x22} $a]
set b [string map [list \n ""] $b]
set c [string map [list \n ""] $c]
set d [string map [list \n ""] $d]
set e [string map -nocase {\&\#39; \x27 & \x26 " \x22} $e]
regsub -all {<.*?>} $a {} a
regsub -all {<.*?>} $b {} b
regsub -all {<.*?>} $c {} c
regsub -all {<.*?>} $d {} d
regsub -all {<.*?>} $e {} e
# putserv "PRIVMSG $chan :YouTube: $a ( [duration $length] ) Viewed $b"
putserv "PRIVMSG $chan :YouTube: $a - Duration: [duration $length] - Views: $b"
proc duration {s} {
variable etube
set hours [expr {$s / 3600}]
set minutes [expr {($s / 60) % 60}]
set seconds [expr {$s % 60}]
set res ""
if {$hours != 0} {append res "$hours hours"}
if {$minutes != 0} {append res " $minutes minutes"}
if {$seconds != 0} {append res " $seconds seconds"}
return $res
}
}
}
}
putlog "_____ YouTitle loaded..."
"Tcl error [mu]: can't read "youtubeid": no such variable"
The script works so far, but i would like to get rid off this error message.
EDIT: it appears that this error msg comes up everytime someone writes something in the channel.
Also, currently the script displays the youtube info like this:
YouTube: Bill Hicks salvation (FULL) - Duration: 1 hour 54 minutes 36 seconds - Views: 34.405
1.) Would it be possible to change the format of the duration to 1:54:36 or something simliar?
2.) Would it be possible to add likes /dislikes / author to the script?
Disclaimer: i've absolutely zero scripting knowledge so adding this by myself is practially impossible.
All i can do really is change the appearance
Anyways, i'm highly grateful for every help i can get!!
Thanks in advance!