import markovuniverse,plugin,sys import tvdb_api,tvdb_keys from pluralslib import plural tvdb = tvdb_api.Tvdb(apikey=tvdb_keys.api_key,cache=False) @plugin.group("stevenuniverse"," [args]") def stevenuniverse(bot,channel,nick,subcmd=None,*args): return False plugin.alias("su","stevenuniverse") @stevenuniverse.command("help") def help(bot,channel,nick,*a): bot.say(channel,"{}: Current !{} subcommands are {}".format(nick,bot.cmd,", ".join(stevenuniverse.subcmds.keys()))) @stevenuniverse.command("fake-leak") def fakeleak(bot,channel,nick,*a): bot.say(channel,nick+": {} - {}".format(*markovuniverse.new_episode())) SU_EPISODE_FORMAT = "{nick}: Season {ep[airedSeason]}, Episode {ep[airedEpisodeNumber]}: {ep[episodeName]} - \"{ep[overview]}\"; aired {ep[firstAired]}" @stevenuniverse.command("episode") def episode(bot,channel,nick,sub,*args): args = list(args) sub = args.pop(0) # we already know the subcommand used to call this function so it's not that important to preserve this variable. if sub=="name": eps = tvdb["Steven Universe"].search(" ".join(args),key="episodeName") if len(eps)>1: if len(eps)<=3: bot.say(channel,"{}: Please be a bit more specific. (Search returned \"{}\")".format(nick,", ".join(ep["episodeName"] for ep in eps))) else: bot.say(channel,"{}: Please be a bit more specific. (Search returned {})".format(nick,plural(len(eps),"episode"))) elif len(eps)==0: bot.say(channel,"{}: No episode was found by the name {!r}.".format(nick," ".join(args))) else: bot.say(channel,SU_EPISODE_FORMAT.format(nick=nick,ep=eps[0])) elif sub=="number": if len(args)==1: assert "x" in args[0],"Usage: !{0} episode number <0x0> OR !{0} episode number 0 0".format(bot.cmd) season, epnum = (int(x) for x in args[0].split("x")) else: season, epnum = (int(x) for x in args[:2]) try: ep = tvdb["Steven Universe"][season][epnum] except: bot.say(channel,"{}: I couldn't find an episode for Season {} Episode {}.".format(nick,season,epnum)) return bot.say(channel,SU_EPISODE_FORMAT.format(nick=nick,ep=ep))