Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ##############################[ TVmaze.com Eggdrop Script ]#############################
- # #
- # Version : 1.23 #
- # #
- # Author : x0x a.k.a. ericNL (with the help of many awesome digital friends) #
- # #
- # Source : http://forum.egghelp.org/viewtopic.php?t=20045 #
- # #
- # Activate : Party line command: .chanset #channel +tvmaze #
- # #
- # Commands : !tv or !t <show> !last or !l <show> !next or !n <show> #
- # #
- # Changelog : Available at http://forum.egghelp.org/viewtopic.php?t=20045 #
- # #
- # Issues : You might need Tcl 8.6 or newer ;-) #
- # #
- # Notes : Tested with Eggdrop v1.8.0+infiniteinfo and Tcl 8.6 #
- # #
- # Credits : GaveUp, dlx, Znuff, speechles, nrt, Chokladkakan #
- # Viper (Jan Milants), thommey, GPenguin #
- # #
- # Greets : Everyone over at http://forum.egghelp.org #
- # The freenode #eggdrop crowd #
- # My friends in #<translate-shark-to-dutch> on EFnet ;) #
- # #
- ########################################################################################
- package require http
- package require json
- setudef flag tvmaze
- bind pub - !tv tv
- bind pub - !t tv
- bind pub - !last tvlast
- bind pub - !l tvlast
- bind pub - !next tvnext
- bind pub - !n tvnext
- proc tv { nick host hand chan arg } {
- regsub -nocase -all {(\.| )([[:digit:]]{4}(\.| )|)(S[[:digit:]]{2}E[[:digit:]]{2}(\.| )|)(INTERNAL|INT|1080p|720p|HDTV|x264|WEBRip|REPACK|REAL|PROPER)(\.| ).*} $arg "" arg
- regsub -all "\\." $arg " " arg
- set url "http://api.tvmaze.com/singlesearch/shows?[::http::formatQuery q $arg embed\[\] nextepisode embed\[\] previousepisode]"
- set timeout "5000"
- if {[catch { ::http::geturl $url -timeout $timeout } token]} {
- putquick "privmsg $chan :$nick, there was a fatal error :$token."
- return 0
- }
- if {![string equal -nocase [::http::status $token] "ok"] || ![string equal [::http::ncode $token] 200]} {
- putquick "privmsg $chan :$nick, there was an http error: ( [http::ncode $token] ) [::http::status $token]"
- http::cleanup $token
- return 0
- }
- set tvmaze [::json::json2dict [::http::data $token]]
- ::http::cleanup $token
- dict with tvmaze {
- if {[string equal "null" $webChannel]} { set network [dict get $tvmaze network name] } else { set network [dict get $tvmaze webChannel name] }
- if { [dict exists $tvmaze _embedded nextepisode url] } { set nextepurl [dict get $tvmaze _embedded nextepisode url] }
- if { [dict exists $tvmaze _embedded nextepisode name] } { set nextepname [dict get $tvmaze _embedded nextepisode name] }
- if { [dict exists $tvmaze _embedded nextepisode season] } { set nextepseason [dict get $tvmaze _embedded nextepisode season] }
- if { [dict exists $tvmaze _embedded nextepisode number] } { set nextepnumber [dict get $tvmaze _embedded nextepisode number] }
- if { [dict exists $tvmaze _embedded nextepisode airdate] } { set nextepairdate [dict get $tvmaze _embedded nextepisode airdate] }
- if { [dict exists $tvmaze _embedded nextepisode airtime] } { set nextepairtime [dict get $tvmaze _embedded nextepisode airtime] }
- if { [dict exists $tvmaze _embedded nextepisode runtime] } { set nextepruntime [dict get $tvmaze _embedded nextepisode runtime] }
- if { [dict exists $tvmaze _embedded nextepisode summary] } { set nextepsummary [dict get $tvmaze _embedded nextepisode summary] }
- if { [dict exists $tvmaze _embedded previousepisode url] } { set prevepurl [dict get $tvmaze _embedded previousepisode url] }
- if { [dict exists $tvmaze _embedded previousepisode name] } { set prevepname [dict get $tvmaze _embedded previousepisode name] }
- if { [dict exists $tvmaze _embedded previousepisode season] } { set prevepseason [dict get $tvmaze _embedded previousepisode season] }
- if { [dict exists $tvmaze _embedded previousepisode number] } { set prevepnumber [dict get $tvmaze _embedded previousepisode number] }
- if { [dict exists $tvmaze _embedded previousepisode airdate] } { set prevepairdate [dict get $tvmaze _embedded previousepisode airdate] }
- if { [dict exists $tvmaze _embedded previousepisode airtime] } { set prevepairtime [dict get $tvmaze _embedded previousepisode airtime] }
- if { [dict exists $tvmaze _embedded previousepisode runtime] } { set prevepruntime [dict get $tvmaze _embedded previousepisode runtime] }
- if { [dict exists $tvmaze _embedded previousepisode summary] } { set prevepsummary [dict get $tvmaze _embedded previousepisode summary] }
- if { ![info exists name] } {
- putquick "privmsg $chan :$nick, nothing happened, try something different? :)"
- return 0
- }
- if { [info exists prevepseason] } { set prevepseason [format S%02d $prevepseason] }
- if { [info exists prevepnumber] } { set prevepnumber [format E%02d $prevepnumber] }
- if { [info exists nextepseason] } { set nextepseason [format S%02d $nextepseason] }
- if { [info exists nextepnumber] } { set nextepnumber [format E%02d $nextepnumber] }
- if { [info exists nextepname] && [info exists prevepname] && ![llength $genres] == 1 } {
- putquick "privmsg $chan :Show: \002$name\002 \u2022 Network: $network"
- putquick "privmsg $chan :Premiered: $premiered \u2022 Status: $status \u2022 URL: $url"
- putquick "privmsg $chan :Previous: $prevepseason$prevepnumber aired $prevepairdate \u2022 Next: $nextepseason$nextepnumber airs $nextepairdate"
- return 0
- }
- if { [info exists nextepname] && [info exists prevepname] } {
- putquick "privmsg $chan :Show: \002$name\002 \u2022 Network: $network \u2022 Genre: $genres"
- putquick "privmsg $chan :Premiered: $premiered \u2022 Status: $status \u2022 URL: $url"
- putquick "privmsg $chan :Previous: $prevepseason$prevepnumber aired $prevepairdate \u2022 Next: $nextepseason$nextepnumber airs $nextepairdate"
- return 0
- }
- if { ![info exists nextepname] && [info exists prevepname] && ![llength $genres] == 1 } {
- putquick "privmsg $chan :Show: \002$name\002 \u2022 Network: $network"
- putquick "privmsg $chan :Premiered: $premiered \u2022 Status: $status \u2022 URL: $url"
- putquick "privmsg $chan :Last: $prevepseason$prevepnumber aired $prevepairdate"
- return 0
- }
- if { ![info exists nextepname] && [info exists prevepname] } {
- putquick "privmsg $chan :Show: \002$name\002 \u2022 Network: $network \u2022 Genre: $genres"
- putquick "privmsg $chan :Premiered: $premiered \u2022 Status: $status \u2022 URL: $url"
- putquick "privmsg $chan :Last: $prevepseason$prevepnumber aired $prevepairdate"
- return 0
- }
- if { [info exists nextepname] && ![info exists prevepname] && ![llength $genres] == 1 } {
- putquick "privmsg $chan :Show: \002$name\002 \u2022 Network: $network"
- putquick "privmsg $chan :Premiered: $premiered \u2022 Status: $status \u2022 URL: $url"
- putquick "privmsg $chan :Next episode: $prevepseason$prevepnumber airs $prevepairdate"
- return 0
- }
- if { [info exists nextepname] && ![info exists prevepname] } {
- putquick "privmsg $chan :Show: \002$name\002 \u2022 Network: $network \u2022 Genre: $genres"
- putquick "privmsg $chan :Premiered: $premiered \u2022 Status: $status \u2022 URL: $url"
- putquick "privmsg $chan :Next episode: $prevepseason$prevepnumber airs $prevepairdate"
- return 0
- }
- if { ![info exists nextepname] && ![info exists previousepname] && ![llength $genres] == 1 } {
- putquick "privmsg $chan :Show: \002$name\002 \u2022 Network: $network"
- putquick "privmsg $chan :Status: $status \u2022 URL: $url"
- return 0
- }
- if { ![info exists nextepname] && ![info exists previousepname] } {
- putquick "privmsg $chan :Show: \002$name\002 \u2022 Network: $network \u2022 Genre: $genres"
- putquick "privmsg $chan :Status: $status \u2022 URL: $url"
- return 0
- }
- }
- }
- proc tvnext { nick host hand chan arg } {
- set url "http://api.tvmaze.com/singlesearch/shows?[::http::formatQuery q $arg embed\[\] nextepisode embed\[\] previousepisode]"
- set timeout "5000"
- if {[catch { ::http::geturl $url -timeout $timeout } token]} {
- putquick "privmsg $chan :$nick, there was a fatal error :$token."
- return 0
- }
- if {![string equal -nocase [::http::status $token] "ok"] || ![string equal [::http::ncode $token] 200]} {
- putquick "privmsg $chan :$nick, there was an http error: ( [http::ncode $token] ) [::http::status $token]"
- http::cleanup $token
- return 0
- }
- set tvmaze [::json::json2dict [::http::data $token]]
- ::http::cleanup $token
- dict with tvmaze {
- if {[string equal "null" $webChannel]} { set network [dict get $tvmaze network name] } else { set network [dict get $tvmaze webChannel name] }
- if { [dict exists $tvmaze _embedded nextepisode url] } { set nextepurl [dict get $tvmaze _embedded nextepisode url] }
- if { [dict exists $tvmaze _embedded nextepisode name] } { set nextepname [dict get $tvmaze _embedded nextepisode name] }
- if { [dict exists $tvmaze _embedded nextepisode season] } { set nextepseason [dict get $tvmaze _embedded nextepisode season] }
- if { [dict exists $tvmaze _embedded nextepisode number] } { set nextepnumber [dict get $tvmaze _embedded nextepisode number] }
- if { [dict exists $tvmaze _embedded nextepisode airdate] } { set nextepairdate [dict get $tvmaze _embedded nextepisode airdate] }
- if { [dict exists $tvmaze _embedded nextepisode airtime] } { set nextepairtime [dict get $tvmaze _embedded nextepisode airtime] }
- if { [dict exists $tvmaze _embedded nextepisode runtime] } { set nextepruntime [dict get $tvmaze _embedded nextepisode runtime] }
- if { [dict exists $tvmaze _embedded nextepisode summary] } { set nextepsummary [dict get $tvmaze _embedded nextepisode summary] }
- if { ![info exists nextepname] } {
- putquick "privmsg $chan :$nick, no next episode information."
- return 0
- }
- set nextepseason [format S%02d $nextepseason]
- set nextepnumber [format E%02d $nextepnumber]
- set show_date_time [chng_time [clock scan "$nextepairdate"]]
- set sec [clock seconds]
- set airing "[duration [expr {$show_date_time - $sec}]]"
- putquick "privmsg $chan :Show: \002$name\002 :: Next episode: $nextepseason$nextepnumber - \002$nextepname\002 airs \002$nextepairdate\002 (In: \002$airing\002) :: $url"
- }
- }
- proc tvlast { nick host hand chan arg } {
- set url "http://api.tvmaze.com/singlesearch/shows?[::http::formatQuery q $arg embed\[\] nextepisode embed\[\] previousepisode]"
- set timeout "5000"
- if {[catch { ::http::geturl $url -timeout $timeout } token]} {
- putquick "privmsg $chan :$nick, there was a fatal error :$token."
- return 0
- }
- if {![string equal -nocase [::http::status $token] "ok"] || ![string equal [::http::ncode $token] 200]} {
- putquick "privmsg $chan :$nick, there was an http error: ( [http::ncode $token] ) [::http::status $token]"
- http::cleanup $token
- return 0
- }
- set tvmaze [::json::json2dict [::http::data $token]]
- ::http::cleanup $token
- dict with tvmaze {
- if {[string equal "null" $webChannel]} { set network [dict get $tvmaze network name] } else { set network [dict get $tvmaze webChannel name] }
- if { [dict exists $tvmaze _embedded previousepisode url] } { set prevepurl [dict get $tvmaze _embedded previousepisode url] }
- if { [dict exists $tvmaze _embedded previousepisode name] } { set prevepname [dict get $tvmaze _embedded previousepisode name] }
- if { [dict exists $tvmaze _embedded previousepisode season] } { set prevepseason [dict get $tvmaze _embedded previousepisode season] }
- if { [dict exists $tvmaze _embedded previousepisode number] } { set prevepnumber [dict get $tvmaze _embedded previousepisode number] }
- if { [dict exists $tvmaze _embedded previousepisode airdate] } { set prevepairdate [dict get $tvmaze _embedded previousepisode airdate] }
- if { [dict exists $tvmaze _embedded previousepisode airtime] } { set prevepairtime [dict get $tvmaze _embedded previousepisode airtime] }
- if { [dict exists $tvmaze _embedded previousepisode runtime] } { set prevepruntime [dict get $tvmaze _embedded previousepisode runtime] }
- if { [dict exists $tvmaze _embedded previousepisode summary] } { set prevepsummary [dict get $tvmaze _embedded previousepisode summary] }
- if { ![info exists prevepname] } {
- putquick "privmsg $chan :$nick, no last episode information."
- return 0
- }
- set prevepseason [format S%02d $prevepseason]
- set prevepnumber [format E%02d $prevepnumber]
- putquick "privmsg $chan :Show: \002$name\002 :: Last episode: $prevepseason$prevepnumber - \002$prevepname\002 aired \002$prevepairdate\002 :: $url"
- }
- }
- #eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement