This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

MyShows script.

Support & discussion of released scripts, and announcements of new releases.
Post Reply
B
Bart

MyShows script.

Post by Bart »

Code: Select all

# +-------------------------------------------------------------------------------------+
# |                                                                                     |
# |                         MyShows v1.0.0                                              |
# |                                                                                     |
# +-------------------------------------------------------------------------------------+
# |                                                                                     |
# | *** Website             @  http://www.EggdropTCL.com                                |
# | *** GitHub              @  http://github.com/MadaliNTCL/eggdrop-tcl                 |
# |                                                                                     |
# +-------------------------------------------------------------------------------------+
# | *** IRC Support:                                                                    |
# |                    #EggdropTCL     @ QuakeNET                                       |
# |                    #EggdropTCL     @ UnderNET                                       |
# |                    #EggdropTCL     @ EfNET                                          |
# |                                                                                     |
# | *** Contact:                                                                        |
# |                    Yahoo Messenger/Mail: madalinmen28@yahoo.com                     |
# |                    Google Mail         : madalinmen28@gmail.com                     |
# |                    Skype Messenger     : madalinmen28                               |
# |                                                                                     |
# +-------------------------------------------------------------------------------------+
# + *** Commands ***                                                                    |
# |                                                                                     |
# |     +++ !tv <search> [name]                                                         |
# |     +++ !tv [id]                                                                    |
# |                                                                                     |
# | Credits:                                                                            |
# |                                                                                     |
# |     +++ war10ck                                                                     |
# +-------------------------------------------------------------------------------------+

bind PUBM - * myshows

package require json
package require http
package require tls

proc myshows {nick uhost hand chan arg} {
	global temp

	if {[string index $arg 0] in {! . `}} {
		set temp(cmd) [string range $arg 1 end]
		set temp(cmd) [lindex [split $temp(cmd)] 0]
		set arg [join [lrange [split $arg] 1 end]]
	} elseif {[isbotnick [lindex [split $arg] 0]]} {
		set temp(cmd) [lindex [split $arg] 1]
		set arg [join [lrange [split $arg] 2 end]]
	} else { return 0 }

	if {[info commands myshows:$temp(cmd)] ne ""} { myshows:$temp(cmd) $nick $uhost $hand $chan $arg }
}

proc myshows:tv {nick uhost hand chan arg} {

	switch -exact -- [lindex [split $arg] 0] {
		search {
			#set arg [string map [list " " "%20"] $arg]

			::http::register https 443 [list ::tls::socket -tls1 1]

			http::config -accept "application/json" -useragent "Mozilla/5.0 (X11;Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"

			if {[catch {
					set token [http::geturl "https://api.myshows.me/v2/rpc/" \
						-timeout 10000 \
						-method POST \
						-query "\{\"jsonrpc\": \"2.0\", \"method\":\"shows.Search\", \"params\": \{\"query\": \"[join [lrange $arg 1 end]]\"\}, \"id\": 1\}" \
						-type "application/json"]
				} err]} {
				putquick "PRIVMSG $chan :Something went wrong ($err)."; return 0
			}

			set connect [http::data $token]
			set connect [json::json2dict $connect]

			set result [dict get $connect result]

			set temp(canceled) ""; set temp(running) ""; set temp(pause) ""

			foreach line $result {
				if {[string match -nocase *TBD* [dict get $line status]]} { lappend temp(pause) "\00304[dict get $line id]\003 - \00306[dict get $line titleOriginal]" }				
				if {[string match -nocase *ended* [dict get $line status]]} { lappend temp(canceled) "\00304[dict get $line id]\003 - \00306[dict get $line titleOriginal]" }
				if {[string match -nocase *returning* [dict get $line status]]} { lappend temp(running) "\00312[dict get $line id]\003 - \00303[dict get $line titleOriginal]" }
			}

			if {$temp(running) ne ""} { putquick "PRIVMSG $chan :\002Running\002: [join $temp(running) ", "]" }
			if {$temp(pause) ne ""} { putquick "PRIVMSG $chan :\002Pause\002: [join $temp(pause) ", "]" }						
			if {$temp(canceled) ne ""} { putquick "PRIVMSG $chan :\002Canceled/Ended\002: [join $temp(canceled) ", "]" }
			
			if {$temp(running) ne "" || $temp(pause) ne "" || $temp(canceled) ne ""} { putquick "PRIVMSG $chan :\002$nick\002 - You can now see informations using command \00306!tv \00304id" }
			
			if {$result eq ""} { putquick "PRIVMSG $chan :\002$nick\002 - Nothing found"; return }
		}
		default {
			if {[isnumber [lindex [split $arg] 0]]} { shows.GetById $chan [lindex [split $arg] 0]; return}

			putquick "PRIVMSG $chan :\002$nick\002 - \002USAGE\002: !tv <search/\[\$id\]> \[\$name\]"
		}
	}
}

proc shows.GetById {chan id} {

	::http::register https 443 [list ::tls::socket -tls1 1]

	http::config -accept "application/json" -useragent "Mozilla/5.0 (X11;Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"

	if {[catch {
			set token [http::geturl "https://api.myshows.me/v2/rpc/" \
				-timeout 10000 \
				-method POST \
				-query "\{\"jsonrpc\": \"2.0\", \"method\": \"shows.GetById\", \"params\": \{\"showId\": \"$id\"\}, \"id\": 1\}" \
				-type "application/json"]
		} err]} {
		putquick "PRIVMSG $chan :Something went wrong ($err)."; return 0
	}
	set connect [http::data $token]
	set connect [json::json2dict $connect]

	set temp(episode-list) [dict get [dict get $connect result] episodes]

	putquick "PRIVMSG $chan :\00312[dict get [dict get $connect result] titleOriginal]\003 \037\002/\002\037 \00302Status: \00304[dict get [dict get $connect result] status]\003 \037\002/\002\037 \00302Total Season: \00303\002[dict get [dict get $connect result] totalSeasons]\002\003 - \00306https://en.myshows.me/view/[dict get [dict get $connect result] id]/"
	putquick "PRIVMSG $chan :\00302Premiered\003: \00303[dict get [dict get $connect result] started]\003 - \00304\002[dict get [dict get $connect result] ended]\002\003 \037\002/\002\037 \00302Rating: \00304[dict get [dict get $connect result] rating]\003 (Votes: \00304[dict get [dict get $connect result] voted]\003) \037\002/\002\037 \00302Watchers: \00304[dict get [dict get $connect result] watching]\003 \037\002/\002\037 \00302Country: \00304[dict get [dict get $connect result] country]\003"

	set temp(next5) ""; set temp(last5) ""

	foreach episode $temp(episode-list) {
		if {![string match -nocase [dict get $episode airDate] "null"]} { set airDate [expr [clock scan [string map [list "T" " " "+0000" ""] [dict get $episode airDate]]] - [unixtime]] }
		set shortName [dict get $episode shortName]
		set title [dict get $episode title]

		putlog "$airDate -- $shortName -- $title"
		if {![string match -nocase *-* $airDate]} {
			lappend temp(next5) "[list $airDate $shortName $title]"
		} else {
			lappend temp(last5) "[list $airDate $shortName $title]"
		}
	}

	set lsortnext [lsort -index 0 -integer -increasing $temp(next5)]
	set lsortlast [lsort -index 0 -integer -decreasing $temp(last5)]

	set next 0; set last 0

	foreach line $lsortnext {
		incr next

		if {$next <= "3"} { putquick "PRIVMSG $chan :\002\037\[\002\037NexT\037\002\]\037\002 \00302Name\003: \00312[lindex $line 2]\003 - \00304[lindex $line 1]\003 airs in \00303[convert:myshows [duration [lindex $line 0]]]" }
	}

	foreach line $lsortlast {
		incr last

		set airDate [string map [list "-" ""] [lindex $line 0]]
		if {$last <= "3"} { putquick "PRIVMSG $chan :\002\037\[\002\037LasT\037\002\]\037\002 \00302Name\003: \00312[lindex $line 2]\003 - \00304[lindex $line 1]\003 aired \00303[convert:myshows [duration $airDate]] ago" }
	}
}

proc convert:myshows {arg} { return [string map [list " years" "y" " year" "y" " months" "m" " month" "m" " weeks" "w" " week" "w" " days" "d" " day" "d" " hours" "h" " hour" "h" " minutes" "m" " minute" "m" " seconds" "s" " second" "s"] $arg] }

putlog "++ \[ - \00304PUBLIC\003 - \00306loaded\003 * \00303MyShows\003 \]"
---
<User> !tv search The Strain
<Bot> Running: 34435 - The Strain

<User> !tv 34435
<Bot> The Strain / Status: Returning Series / Total Season: 3 - https://en.myshows.me/view/34435/
<Bot> Premiered: Jul/13/2014 - null / Rating: 3.67 (Votes: 14961) / Watchers: 32282 / Country: US
<Bot> [NexT] Name: New York Strong - s03e01 airs in 5d 7h 50m 52s
<Bot> [NexT] Name: Bad White - s03e02 airs in 1w 5d 7h 50m 52s
<Bot> [NexT] Name: First Born - s03e03 airs in 2w 5d 7h 50m 52s
<Bot> [LasT] Name: Night Train - s02e13 airs in 46w 1d 16h 9m 8s
<Bot> [LasT] Name: Fallen Light - s02e12 airs in 47w 1d 16h 9m 8s
<Bot> [LasT] Name: Dead End - s02e11 airs in 48w 1d 16h 9m 8s
---
Thank you for the myshows.tcl, Madalin. Also thanks to Sergio\RN.
Download on GitHub
Topic created by agreement with the Madalin
---
In the script there are some drawbacks. Please write if you find something.
B
Bart

Post by Bart »

If I replace

Code: Select all

			foreach line $result {
				if {[string match -nocase *TBD* [dict get $line status]]} { lappend temp(pause) "\00304[dict get $line id]\003 - \00306[dict get $line titleOriginal]" }				
				if {[string match -nocase *ended* [dict get $line status]]} { lappend temp(canceled) "\00304[dict get $line id]\003 - \00306[dict get $line titleOriginal]" }
				if {[string match -nocase *returning* [dict get $line status]]} { lappend temp(running) "\00312[dict get $line id]\003 - \00303[dict get $line titleOriginal]" }
			}

On:

Code: Select all

set z_ 0
foreach line $result {
if {[string match -nocase *ended* [dict get $line status]]} { 
incr z_
lappend temp(canceled) "\002${z_}\017. [dict get $line id] - [dict get $line titleOriginal]" }

if {[string match -nocase *TBD* [dict get $line status]]} { 
incr z_
lappend temp(pause) "\002${z_}\017. [dict get $line id] - [dict get $line titleOriginal]" }

if {[string match -nocase *returning* [dict get $line status]]} { 
incr z_
lappend temp(running) "\002${z_}\017. [dict get $line id] - [dict get $line titleOriginal]" }
}
Then I can get the number,
<User> !tv search Vikings
<Bot> Running: 1. 29471 - Vikings, 5. 39024 - Den siste viking
<Bot> Canceled/Ended: 2. 27540 - Vikings, 3. 30436 - Tales of the Vikings, 4. 25742 - Whale Wars: Viking Shores, 6. 49785 - Vikings: Athelstan's Journal, 7. 38341 - Blood of the Vikings, 8. 30661 - There's A Viking In My Bed
<Bot> User - You can now see informations using command !tv id
A little uncomfortable to write/copy ID. Instead, we can do something like:
<User> !tv -1 Vikings
and get info about "1. 29471 - Vikings"

Can anyone suggest how to do it?
Post Reply