Exemple #1
0
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'])
Exemple #3
0
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)
Exemple #4
0
 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})