Code: Select all
###
# Parse show info from tv.com
# Enable with .chanset #channel +tv
# [0/1] public or private reply's (public 0, private 1)
set tvreply 0
# offset to EST
# 6 hours makes sense for CET (Europe)
set tvoffset 6
if ![info exists egghttp(version)] {
putlog "egghttp.tcl was NOT successfully loaded."
}
setudef flag tv
bind pub - !tvinfo pub:info.tv.com
proc pub:info.tv.com {nick uhost hand chan text} {
if ![channel get $chan tv] return
if {$::tvreply} {set target $nick} {set target $chan}
if {$text==""} {putserv "PRIVMSG $target :Usage: $::lastbind <show>"; return}
set search [join [lrange [split $text] 0 e] {+}]
set d [date:offset [clock seconds] %m%d%y]
set url "http://www.tv.com/search.php?type=11&stype=program&qs=$search&search=Search/"
set sock [egghttp:geturl $url [list findrealurl:tv.com $target] -headers "Cookie: tv_promo_$d=1"]
}
proc findrealurl:tv.com {target sock} {
set data [egghttp:data $sock]
egghttp:cleanup $sock
foreach line [split $data \n] {
if [string match -noc "*returned no results*" $line] {
putserv "PRIVMSG $target :Unknown show."
return
}
if [string match -noc *www.tv.com*show*summary.html* $line] {
regexp -nocase {(http://)[^\"]+} $line url
set d [date:offset [clock seconds] %m%d%y]
set s [egghttp:geturl $url [list parseinfo:tv.com $target $url] -headers "Cookie: tv_promo_$d=1"]
return
}
}
}
proc parseinfo:tv.com {target url sock} {
set data [egghttp:data $sock]
egghttp:cleanup $sock
set data [string map {"\n" "" "</div>" "</div>\n" "<br />" "<br />\n"} $data]
foreach line [split $data \n] {
if [regexp {<title>(.*).TV Show} $line . show] {
putserv "PRIVMSG $target :Show: $show"
}
if [string match -noc "*Airs:*" $line] {
regsub -all {<(.|\n)*?>} $line {} airs
putserv "PRIVMSG $target :[concat [join $airs]]"
}
if [string match -noc "*Status:*" $line] {
regsub -all {<(.|\n)*?>} $line {} status
putserv "PRIVMSG $target :[concat [join $status]]"
}
if [string match -noc "*Premiered*" $line] {
regsub -all {<(.|\n)*?>} $line {} premiered
putserv "PRIVMSG $target :[concat [join $premiered]]"
}
if [string match -noc "*Show Category:*" $line] {
regsub -all {<(.|\n)*?>} $line {} category
putserv "PRIVMSG $target :[concat [join $category]]"
}
if [string match -noc "*Full Summary*" $line] {
regsub -all {<(.|\n)*?>} $line {} summary
regexp {(.*) Full Summary} $summary . summary
putserv "PRIVMSG $target :Summary: [concat [join $summary]]"
}
}
putserv "PRIVMSG $target :URL: $url"
}
proc date:offset {epox arg} {
set t [expr $epox-((60*60)*$::tvoffset)]
set w [clock format $t -format $arg]
return $w
}