def play_stream(): from scrapecore import scrapers if kodi.mode == 'play_stream': from commoncore import trakt ids = kodi.arg('ids', decode='json') if kodi.args['media'] == 'episode': response = trakt.get_episode_info(ids['trakt'], ids['season'], ids['episode']) infoLabel = core.make_infolabel('episode', response['items'], ids=ids) show = trakt.get_show_info(ids['trakt']) metadata = {"show": show, "episode": infoLabel, "ids": ids} infoLabel['title'] = "%s-S%02dE%02d-%s" % ( kodi.args['title'], int(ids['season']), int( ids['episode']), infoLabel['title']) else: response = trakt.get_movie_info(ids['trakt']) infoLabel = core.make_infolabel('movie', response['items']) metadata = {"movie": infoLabel, "ids": ids} kodi.set_playback_info(metadata) kodi.set_trakt_ids(ids) else: infoLabel = {"poster": "", "title": "", "resume_point": ""} resolved_url = scrapers.get_scraper_by_name( kodi.args['service']).resolve_url(kodi.args['raw_url']) if resolved_url: kodi.play_stream(resolved_url, metadata=infoLabel)
def show(): ids = DB.query( "SELECT ids FROM id_table WHERE primary_id=? AND media=?", [id, media]) if ids: ids = json.loads(ids[0][0]) else: response = trakt.get_show_info(id) ids = response['items']['ids'] DB.execute( "INSERT INTO id_table(media, primary_id, id_type, ids) VALUES(?,?,?,?)", [media, ids[k], id_type, json.dumps(ids)]) DB.commit() return get_show_art(ids['tmdb'], ids['tvdb'], ids['imdb'])
def list_episodes(): from commoncore import trakt from coreplayback import in_progress ids = kodi.arg('ids', decode='json') show = trakt.get_show_info(ids['trakt']) episodes = trakt.get_season_info(kodi.arg('trakt_id'), kodi.arg('season')) watched = trakt.get_watched_history( 'shows') if trakt.is_authorized() else [] @kodi.map_directory(episodes['items']) def make_episode_directory(episode): infoLabel = core.make_infolabel('episode', episode, show=show, ids=ids, watched=watched) if not infoLabel: return infoLabel['display'] = "%sx%s. %s" % ( infoLabel['season'], infoLabel['episode'], infoLabel['title']) menu = kodi.ContextMenu() menu.add( 'Toggle Watched', { "mode": "toggle_watched", "api": { "name": "trakt", "method": "set_watched_state", "args": ("episode", infoLabel['trakt_id'], infoLabel['playcount'] == 0), "refresh": True } }) menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("episode", ) } }) if infoLabel['aired']: inprogress = in_progress('episode', infoLabel['trakt_id']) kodi.add_menu_item( { "mode": "search_streams", "media": "episode", "trakt_id": infoLabel['trakt_id'], "title": infoLabel['showtitle'], "episode_title": infoLabel['title'], "year": infoLabel['year'], "season": infoLabel['season'], "episode": infoLabel['episode'], "ids": ids }, infoLabel, in_progress=inprogress, menu=menu, image=infoLabel['poster']) else: infoLabel['display'] = core.format_color(infoLabel['display'], 'maroon') kodi.add_menu_item({"mode": "void"}, infoLabel, menu=menu, image=infoLabel['poster']) kodi.eod(DEFAULT_VIEWS.EPISODES)
def move_metadata(): id = data['id'][0] if 'id' in data else None id_type = data['id_type'][0] if 'id_type' in data else 'trakt' metadata = trakt.get_show_info(id) infolabel = core.make_infolabel('show', metadata['items']) self.do_Response(content={'status': 200, 'metadata': infolabel})