Beispiel #1
0
    def showListBuilder(self, trakt_list, forceResume=False, info_only=False):

        self.threadList = []
        try:
            if len(trakt_list) == 0: return
        except:
            return

        if 'show' in trakt_list[0]:
            buildList = [i['show'] for i in trakt_list]
            trakt_list = buildList

        for item in trakt_list:

            if tools.getSetting('general.metalocation') == '1':
                self.threadList.append(Thread(target=self.tvdbShowListWorker, args=(item,)))
            else:
                self.threadList.append(Thread(target=self.tmdbShowListWorker, args=(item,)))

        self.runThreads()

        self.itemList = tools.sort_list_items(self.itemList, trakt_list)
        if tools.getSetting('trakt.auth') != '':
            traktWatched = trakt.json_response('sync/watched/shows?extended=full')

            for listItem in self.itemList:
                try:
                    for show in traktWatched:
                        if show['show']['ids']['trakt'] == listItem['ids']['trakt']:
                            listItem['info']['playcount'] = 1
                            episodes = 0
                            for season in show['seasons']:
                                episodes += len(season['episodes'])
                            if episodes < show['show']['aired_episodes']:
                                listItem['info']['playcount'] = 0
                            break
                except:
                    pass

        for item in self.itemList:
            if item is None: continue
            try:
                args = {}
                cm = []
                action = ''

                # Add Arguments to pass with items
                args['ids'] = item['ids']
                args['info'] = item['info']
                args['art'] = item['art']
                name = item['info']['tvshowtitle']
                args = tools.quote(json.dumps(args, sort_keys=True))

                if info_only == True:
                    return args

                if 'setCast' in item:
                    set_cast = item['setCast']
                else:
                    set_cast = False

                if tools.getSetting('smartplay.clickresume') == 'true' or forceResume is True:
                    action = 'smartPlay'
                else:
                    action = 'showSeasons'

                # Context Menu Items

                cm.append((tools.lang(32070).encode('utf-8'),
                           'XBMC.RunPlugin(%s?action=shufflePlay&actionArgs=%s)' % (sysaddon,
                                                                                    args)))

                cm.append((tools.lang(32020).encode('utf-8'),
                           'Container.Update(%s?action=showsRelated&actionArgs=%s)' % (sysaddon, item['ids']['trakt'])))

                cm.append(
                    (tools.lang(32069).encode('utf-8'), 'XBMC.Container.Update(%s?action=showSeasons&actionArgs=%s)'
                     % (sysaddon, args)))

                if tools.getSetting('trakt.auth') != '':
                    cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)'
                               % (sysaddon, tools.quote(json.dumps(item['trakt_object'])))))

                if tools.context_addon():
                    cm = []

                try:
                    if tools.kodiVersion > 17:
                        item['info'].pop('seasonCount')
                        item['info'].pop('episodeCount')
                        item['info'].pop('showaliases')
                except:
                    pass

            except:
                import traceback
                traceback.print_exc()
                continue

            tools.addDirectoryItem(name, action, item['info'], item['art'], all_fanart=None, cm=cm,
                                   isFolder=True, isPlayable=False, actionArgs=args, set_cast=set_cast,
                                   set_ids=item['ids'])
Beispiel #2
0
    def episodeListBuilder(self, trakt_list, showInfo, smartPlay=False, hide_unaired=False):

        self.threadList = []

        try:
            play_list = []

            if len(trakt_list) == 0: return

            for item in trakt_list:

                # if tools.getSetting('general.metalocation') == '1':
                if 1 == 1:
                    self.threadList.append(Thread(target=self.tvdbEpisodeWorker, args=(item, showInfo)))
                else:
                    self.threadList.append(Thread(target=self.tmdbEpisodeWorker, args=(item, showInfo)))

            self.runThreads()

            if smartPlay is False and tools.getSetting('trakt.auth') != '':
                try:
                    traktWatched = trakt.json_response(
                        'shows/%s/progress/watched' % showInfo['showInfo']['ids']['trakt'])
                except:
                    pass

            self.itemList = [x for x in self.itemList if x is not None]

            try:
                self.itemList = sorted(self.itemList, key=lambda k: k['info']['episode'])
            except:
                pass

            for item in self.itemList:
                if hide_unaired:
                    try:
                        currentDate = datetime.datetime.today().date()
                        airdate = item['info']['premiered']
                        if airdate == '':
                            continue
                        airdate = tools.datetime_workaround(airdate)
                        if airdate > currentDate:
                            continue
                    except:
                        import traceback
                        traceback.print_exc()
                        pass
                cm = []


                if item is None: continue

                if smartPlay is False and tools.getSetting('trakt.auth') != '':
                    item['info']['playcount'] = 0
                    try:
                        for season in traktWatched['seasons']:
                            if season['number'] == item['info']['season']:
                                for episode in season['episodes']:
                                    if episode['number'] == item['info']['episode'] and episode['completed'] == True:
                                        item['info']['playcount'] = 1
                    except:
                        pass

                try:
                    args = {'showInfo': {}, 'episodeInfo': {}}

                    if tools.getSetting('smartplay.playlistcreate') == 'true' and smartPlay is False:
                        action = 'smartPlay'
                        playable = False
                    else:
                        playable = True
                        action = 'getSources'
                    args['showInfo'] = showInfo['showInfo']
                    args['episodeInfo']['info'] = item['info']
                    args['episodeInfo']['art'] = item['art']
                    args['episodeInfo']['ids'] = item['ids']
                    name = item['info']['title']

                    args = tools.quote(json.dumps(args, sort_keys=True))

                except:
                    import traceback
                    traceback.print_exc()
                    continue

                cm.append((tools.lang(33022).encode('utf-8'),
                           'PlayMedia(%s?action=getSources&seren_reload=true&actionArgs=%s)' % (sysaddon, args)))

                cm.append((tools.lang(32066).encode('utf-8'),
                           'PlayMedia(%s?action=getSources&source_select=true&actionArgs=%s)' % (sysaddon, args)))

                if tools.getSetting('trakt.auth') != '':
                    cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)'
                               % (sysaddon, tools.quote(json.dumps(item['trakt_object'])))))

                if tools.context_addon():
                    cm = []

                if tools.getSetting('premiumize.enabled') == 'true' and tools.getSetting('premiumize.pin') != '':
                    cm.append((tools.lang(32068).encode('utf-8'),
                               'XBMC.RunPlugin(%s?action=filePicker&actionArgs=%s)' % (sysaddon, args)))

                if smartPlay is False:
                    tools.addDirectoryItem(name, action, item['info'], item['art'], cm=cm,
                                           isFolder=False, isPlayable=playable, actionArgs=args, set_ids=item['ids'])
                else:
                    play_list.append(tools.addDirectoryItem(name, action, item['info'],
                                                            item['art'], isFolder=False, isPlayable=playable,
                                                            actionArgs=args, smart_play=True, set_ids=item['ids']))

            if smartPlay is True:
                return play_list

        except:
            import traceback
            traceback.print_exc()
Beispiel #3
0
    def directToEpisodeBuilder(self, trakt_list, sort=None):

        self.threadList = []
        traktWatched = trakt.json_response('sync/watched/shows')

        try:
            if len(trakt_list) == 0: return

            for item in trakt_list:
                # if tools.getSetting('general.metalocation') == '1':
                if 1 == 1:
                    self.threadList.append(Thread(target=self.tvdbEpisodeWorker, args=(item['episode'], item['show'])))
                else:
                    self.threadList.append(Thread(target=self.tmdbEpisodeWorker, args=(item[0], item[1])))

            self.runThreads()
            self.itemList = [i for i in self.itemList if i is not None]

            if sort is not None:
                sorted_list = []
                for sort_id in sort['id_list']:
                    for menu_item in self.itemList:
                        if menu_item[sort['type']]['ids']['trakt'] == sort_id:
                            sorted_list.append(menu_item)
                self.itemList = sorted_list
            else:
                self.itemList = sorted(self.itemList, key=lambda i: tools.datetime_workaround(i['info']['premiered']),
                                       reverse=True)

            for item in self.itemList:
                if item is None:
                    continue
                try:
                    currentDate = datetime.datetime.today().date()
                    airdate = item['info']['premiered']
                    if airdate == '':
                        continue
                    airdate = tools.datetime_workaround(airdate)
                    if airdate > currentDate:
                        continue
                except:
                    import traceback
                    traceback.print_exc()
                    pass

                if item['info'].get('title', '') == '':
                    continue
                cm = []
                action = ''

                if tools.getSetting('trakt.auth') != '':
                    try:
                        item['info']['playcount'] = 0
                        for show in traktWatched:
                            if str(show['show']['ids']['trakt']) == str(item['showInfo']['ids']['trakt']):
                                for season in show['seasons']:
                                    if str(season['number']) == str(item['info']['season']):
                                        for episode in season['episodes']:
                                            if str(episode['number']) == str(item['info']['episode']):
                                                if episode['plays'] > 0:
                                                    item['info']['playcount'] = 1
                    except:
                        pass

                try:
                    args = {'showInfo': {}, 'episodeInfo': {}}

                    if tools.getSetting('smartplay.playlistcreate') == 'true':
                        action = 'smartPlay'
                        playable = False
                    else:
                        playable = True
                        action = 'getSources'

                    args['showInfo'] = item['showInfo']
                    args['episodeInfo']['info'] = item['info']
                    args['episodeInfo']['art'] = item['art']
                    args['episodeInfo']['ids'] = item['ids']
                    name = item['info']['title']

                    if self.title_appends == 'true':
                        name = "%s: %sx%s %s" % (tools.colorString(args['showInfo']['info']['tvshowtitle']),
                                                 str(item['info']['season']).zfill(2),
                                                 str(item['info']['episode']).zfill(2),
                                                 item['info']['title'].encode('utf-8'))

                    args = tools.quote(json.dumps(args, sort_keys=True))

                    item['info']['title'] = item['info']['originaltitle'] = name

                    cm.append((tools.lang(32069).encode('utf-8'),
                               'XBMC.Container.Update(%s?action=showSeasons&actionArgs=%s)' %
                               (sysaddon, tools.quote(json.dumps(item['showInfo'])))))

                    cm.append((tools.lang(32066).encode('utf-8'),
                               'PlayMedia(%s?action=getSources&source_select=true&actionArgs=%s)' % (sysaddon, args)))

                    cm.append((tools.lang(33022).encode('utf-8'),
                               'PlayMedia(%s?action=getSources&seren_reload=true&actionArgs=%s)' % (sysaddon, args)))

                    if tools.getSetting('trakt.auth') != '':
                        cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)'
                                   % (sysaddon, tools.quote(json.dumps(item['trakt_object'])))))

                    if tools.context_addon():
                        cm = []

                    if tools.getSetting('premiumize.enabled') == 'true' and tools.getSetting('premiumize.pin') != '':
                        cm.append((tools.lang(32068).encode('utf-8'),
                                   'XBMC.RunPlugin(%s?action=filePicker&actionArgs=%s)' % (sysaddon, args)))

                except:
                    import traceback
                    traceback.print_exc()
                    continue

                tools.addDirectoryItem(name, action, item['info'], item['art'], cm=cm,
                                       isFolder=False, isPlayable=playable, actionArgs=args, set_ids=item['ids'])
        except:
            import traceback
            traceback.print_exc()
Beispiel #4
0
    def showListBuilder(self, trakt_list, forceResume=False, info_only=False):

        try:
            if len(trakt_list) == 0:
                return
        except:
            return

        if 'show' in trakt_list[0]:
            trakt_list = [i['show'] for i in trakt_list]

        show_ids = [i['ids']['trakt'] for i in trakt_list]

        self.itemList = TraktSyncDatabase().get_show_list(show_ids)
        self.itemList = [
            x for x in self.itemList if x is not None and 'info' in x
        ]
        self.itemList = tools.sort_list_items(self.itemList, trakt_list)

        item_list = []

        for item in self.itemList:
            try:
                args = {}
                cm = []

                # Add Arguments to pass with items
                args['ids'] = item['ids']
                args['info'] = item['info']
                args['art'] = item['art']

                name = tools.display_string(item['info']['tvshowtitle'])

                args = tools.quote(json.dumps(args, sort_keys=True))

                if info_only == True:
                    return args

                if not self.is_aired(item['info']):
                    if tools.getSetting('general.hideUnAired') == 'true':
                        continue
                    name = tools.colorString(name, 'red')
                    name = tools.italic_string(name)

                item['info'] = tools.clean_air_dates(item['info'])

                if 'setCast' in item:
                    set_cast = item['setCast']
                else:
                    set_cast = False

                if tools.getSetting('smartplay.clickresume'
                                    ) == 'true' or forceResume is True:
                    action = 'smartPlay'
                else:
                    action = 'showSeasons'

                # Context Menu Items

                cm.append(
                    (tools.lang(32070),
                     'XBMC.PlayMedia(%s?action=shufflePlay&actionArgs=%s)' %
                     (sysaddon, args)))

                cm.append(
                    (tools.lang(32020),
                     'Container.Update(%s?action=showsRelated&actionArgs=%s)' %
                     (sysaddon, item['ids']['trakt'])))

                cm.append((tools.lang(
                    32069
                ), 'XBMC.Container.Update(%s?action=showSeasons&actionArgs=%s)'
                           % (sysaddon, args)))

                if tools.getSetting('trakt.auth') != '':
                    cm.append(
                        ('Trakt Manager',
                         'RunPlugin(%s?action=traktManager&actionArgs=%s)' %
                         (sysaddon,
                          tools.quote(json.dumps(item['trakt_object'])))))

                cm.append((tools.lang(
                    40153
                ), 'XBMC.PlayMedia(%s?aciton=playFromRandomPoint&actionArgs=%s'
                           % (sysaddon, args)))

                if tools.context_addon():
                    cm = []

            except:
                import traceback
                traceback.print_exc()
                continue

            item_list.append(
                tools.addDirectoryItem(name,
                                       action,
                                       item['info'],
                                       item['art'],
                                       cm=cm,
                                       isFolder=True,
                                       isPlayable=False,
                                       actionArgs=args,
                                       bulk_add=True,
                                       set_cast=set_cast,
                                       set_ids=item['ids']))

        tools.addMenuItems(syshandle, item_list, len(item_list))
Beispiel #5
0
    def seasonListBuilder(self, trakt_list, showInfo, smartPlay=False):
        self.threadList = []

        showInfo['info']['no_seasons'] = len(trakt_list)

        for item in trakt_list:

            # if tools.getSetting('general.metalocation') == '1':
            if 1 == 1:
                self.threadList.append(Thread(target=self.tvdbSeasonListWorker, args=(item, showInfo)))
            else:
                self.threadList.append(Thread(target=self.tmdbSeasonListWorker, args=(item, showInfo)))

        self.runThreads()

        if smartPlay is False and tools.getSetting('trakt.auth') != '':
            try:
                traktWatched = trakt.json_response('shows/%s/progress/watched' % showInfo['ids']['trakt'])
            except:
                pass

        self.itemList = [x for x in self.itemList if x is not None]

        self.itemList = sorted(self.itemList, key=lambda k: k['info']['sortseason'])

        season_list = []

        for item in self.itemList:

            if item is None: continue
            if item['info']['sortseason'] in season_list: continue
            else: season_list.append(item['info']['sortseason'])

            if smartPlay is False and tools.getSetting('trakt.auth') != '':
                try:
                    for season in traktWatched['seasons']:
                        if int(item['info']['season']) == int(season['number']):
                            if season['completed'] == season['aired']:
                                item['info']['playcount'] = 1
                except:
                    import traceback
                    traceback.print_exc()
                    pass
            try:
                args = {'showInfo': {}, 'seasonInfo': {}}

                action = 'seasonEpisodes'
                args['showInfo'] = showInfo
                args['seasonInfo']['info'] = item['info']
                args['seasonInfo']['art'] = item['art']
                args['seasonInfo']['ids'] = item['ids']
                name = item['info']['season_title']
                args = tools.quote(json.dumps(args, sort_keys=True))
            except:
                import traceback
                traceback.print_exc()
                continue

            if smartPlay is True:
                return args

            cm = []
            if tools.getSetting('trakt.auth') != '':
                cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)'
                           % (sysaddon, tools.quote(json.dumps(item['trakt_object'])))))

            if tools.context_addon():
                cm = []

            try:
                if tools.kodiVersion > 17:
                    item['info'].pop('no_seasons')
                    item['info'].pop('season_title')
                    item['info'].pop('overview')
                    item['info'].pop('seasonCount')
                    item['info'].pop('episodeCount')
                    item['info'].pop('showaliases')
            except:
                pass
            tools.addDirectoryItem(name, action, item['info'], item['art'], cm=cm,
                                   isFolder=True, isPlayable=False, actionArgs=args,
                                   set_ids=item['ids'])
Beispiel #6
0
    def mixedEpisodeBuilder(self,
                            trakt_list,
                            sort=None,
                            hide_watched=False,
                            smartPlay=False,
                            hide_unaired=True,
                            prepend_date=False):

        self.threadList = []

        try:
            if len(trakt_list) == 0: return

            self.itemList = TraktSyncDatabase().get_episode_list(trakt_list)

            self.itemList = [
                x for x in self.itemList if x is not None and 'info' in x
            ]
            self.itemList = [
                i for i in self.itemList
                if 'info' in i and i['info'].get('premiered', None) is not None
            ]
            if sort is None:
                self.itemList = sorted(
                    self.itemList,
                    key=lambda i: tools.datetime_workaround(
                        i['info']['premiered'], tools.trakt_gmt_format, False),
                    reverse=True)
            elif sort is not False:
                sort_list = []
                for trakt_id in sort['id_list']:
                    try:
                        if not sort['type']:
                            item = [
                                i for i in self.itemList
                                if i['ids']['trakt'] == trakt_id
                            ][0]
                        else:
                            item = [
                                i for i in self.itemList
                                if i[sort['type']]['ids']['trakt'] == trakt_id
                            ][0]
                        sort_list.append(item)
                    except IndexError:
                        continue
                    except:
                        import traceback
                        traceback.print_exc()
                self.itemList = sort_list

            item_list = []

            for item in self.itemList:
                if item is None:
                    continue

                if item['info'].get('title', '') == '':
                    continue

                if hide_watched and item['info']['playcount'] != 0:
                    continue

                cm = []

                try:
                    name = tools.display_string(item['info']['title'])

                    if not self.is_aired(
                            item['info']) and hide_unaired is True:
                        continue
                    elif not self.is_aired(item['info']):
                        name = tools.colorString(name, 'red')
                        name = tools.italic_string(name)
                        item['info']['title'] = name

                    item['info'] = tools.clean_air_dates(item['info'])

                    args = {'showInfo': {}, 'episodeInfo': {}}

                    if tools.getSetting('smartplay.playlistcreate'
                                        ) == 'true' and not smartPlay:
                        action = 'smartPlay'
                        playable = False
                    else:
                        playable = True
                        action = 'getSources'

                    args['showInfo'] = item['showInfo']
                    args['episodeInfo']['info'] = item['info']
                    args['episodeInfo']['art'] = item['art']
                    args['episodeInfo']['ids'] = item['ids']

                    if self.title_appends == 'true':
                        name = "%s: %sx%s %s" % (
                            tools.colorString(
                                args['showInfo']['info']['tvshowtitle']),
                            tools.display_string(
                                item['info']['season']).zfill(2),
                            tools.display_string(
                                item['info']['episode']).zfill(2),
                            tools.display_string(item['info']['title']))
                    if prepend_date:
                        release_day = tools.datetime_workaround(
                            item['info']['aired'])
                        release_day = release_day.strftime('%d %b')
                        name = '[%s] %s' % (release_day, name)

                    args = tools.quote(json.dumps(args, sort_keys=True))

                    cm.append((tools.lang(
                        32069
                    ), 'XBMC.Container.Update(%s?action=showSeasons&actionArgs=%s)'
                               % (sysaddon,
                                  tools.quote(json.dumps(str(
                                      item['showInfo']))))))

                    cm.append((tools.lang(
                        32066
                    ), 'PlayMedia(%s?action=getSources&source_select=true&actionArgs=%s)'
                               % (sysaddon, args)))

                    cm.append((tools.lang(
                        33022
                    ), 'PlayMedia(%s?action=getSources&seren_reload=true&actionArgs=%s)'
                               % (sysaddon, args)))

                    if tools.getSetting('trakt.auth') != '':
                        cm.append((
                            'Trakt Manager',
                            'RunPlugin(%s?action=traktManager&actionArgs=%s)' %
                            (sysaddon,
                             tools.quote(json.dumps(str(
                                 item['trakt_object']))))))

                    if tools.context_addon():
                        cm = []

                    if tools.getSetting(
                            'premiumize.enabled'
                    ) == 'true' and tools.getSetting('premiumize.pin') != '':
                        cm.append((tools.lang(
                            32068
                        ), 'XBMC.RunPlugin(%s?action=filePicker&actionArgs=%s)'
                                   % (sysaddon, args)))

                    item['info']['title'] = item['info'][
                        'originaltitle'] = name

                    item_list.append(
                        tools.addDirectoryItem(name,
                                               action,
                                               item['info'],
                                               item['art'],
                                               isFolder=False,
                                               isPlayable=playable,
                                               actionArgs=args,
                                               bulk_add=True,
                                               set_ids=item['ids'],
                                               cm=cm))

                except:
                    import traceback
                    traceback.print_exc()
                    continue

            if smartPlay is True:
                return item_list
            else:
                tools.addMenuItems(syshandle, item_list, len(item_list))

        except:
            import traceback
            traceback.print_exc()
Beispiel #7
0
    def episodeListBuilder(self,
                           show_id,
                           season_number,
                           smartPlay=False,
                           hide_unaired=False):

        try:
            item_list = []

            self.itemList = TraktSyncDatabase().get_season_episodes(
                show_id, season_number)
            self.itemList = [
                x for x in self.itemList if x is not None and 'info' in x
            ]

            try:
                self.itemList = sorted(self.itemList,
                                       key=lambda k: k['info']['episode'])
            except:
                pass

            for item in self.itemList:

                cm = []

                try:
                    args = {'showInfo': {}, 'episodeInfo': {}}

                    if tools.getSetting('smartplay.playlistcreate'
                                        ) == 'true' and smartPlay is False:
                        action = 'smartPlay'
                        playable = False
                    else:
                        playable = True
                        action = 'getSources'

                    args['showInfo'] = item['showInfo']
                    args['episodeInfo']['info'] = item['info']
                    args['episodeInfo']['art'] = item['art']
                    args['episodeInfo']['ids'] = item['ids']
                    name = item['info']['title']

                    if not self.is_aired(item['info']):
                        if tools.getSetting('general.hideUnAired'
                                            ) == 'true' or hide_unaired:
                            continue
                        else:
                            name = tools.colorString(name, 'red')
                            name = tools.italic_string(name)
                            item['info']['title'] = name

                    item['info'] = tools.clean_air_dates(item['info'])

                    args = tools.quote(json.dumps(args, sort_keys=True))

                except:
                    import traceback
                    traceback.print_exc()
                    continue

                cm.append((tools.lang(
                    33022
                ), 'PlayMedia(%s?action=getSources&seren_reload=true&actionArgs=%s)'
                           % (sysaddon, args)))

                cm.append((tools.lang(
                    32066
                ), 'PlayMedia(%s?action=getSources&source_select=true&actionArgs=%s)'
                           % (sysaddon, args)))

                if tools.getSetting('trakt.auth') != '':
                    cm.append(
                        ('Trakt Manager',
                         'RunPlugin(%s?action=traktManager&actionArgs=%s)' %
                         (sysaddon,
                          tools.quote(json.dumps(item['trakt_object'])))))

                if tools.context_addon():
                    cm = []

                if tools.getSetting(
                        'premiumize.enabled'
                ) == 'true' and tools.getSetting('premiumize.pin') != '':
                    cm.append(
                        (tools.lang(32068),
                         'XBMC.RunPlugin(%s?action=filePicker&actionArgs=%s)' %
                         (sysaddon, args)))

                item_list.append(
                    tools.addDirectoryItem(name,
                                           action,
                                           item['info'],
                                           item['art'],
                                           isFolder=False,
                                           isPlayable=playable,
                                           actionArgs=args,
                                           bulk_add=True,
                                           set_ids=item['ids'],
                                           cm=cm))

            if smartPlay is True:
                return item_list
            else:
                tools.addMenuItems(syshandle, item_list, len(item_list))

        except:
            import traceback
            traceback.print_exc()
Beispiel #8
0
    def seasonListBuilder(self, show_id, smartPlay=False):

        self.itemList = TraktSyncDatabase().get_season_list(show_id)

        self.itemList = [
            x for x in self.itemList if x is not None and 'info' in x
        ]

        self.itemList = sorted(self.itemList,
                               key=lambda k: k['info']['season'])

        hide_specials = False

        if tools.getSetting('general.hideSpecials') == 'true':
            hide_specials = True

        item_list = []

        for item in self.itemList:

            try:
                if hide_specials and int(item['info']['season']) == 0:
                    continue

                args = {'showInfo': {}, 'seasonInfo': {}}

                action = 'seasonEpisodes'
                args['showInfo'] = item['showInfo']
                args['seasonInfo']['info'] = item['info']
                args['seasonInfo']['art'] = item['art']
                args['seasonInfo']['ids'] = item['ids']
                item['trakt_object']['show_id'] = item['showInfo']['ids'][
                    'trakt']
                name = item['info']['season_title']

                if not self.is_aired(
                        item['info']) or 'aired' not in item['info']:
                    if tools.getSetting('general.hideUnAired') == 'true':
                        continue
                    name = tools.colorString(name, 'red')
                    name = tools.italic_string(name)
                    item['info']['title'] = name

                item['info'] = tools.clean_air_dates(item['info'])

                args = tools.quote(json.dumps(args, sort_keys=True))
            except:
                import traceback
                traceback.print_exc()
                continue

            if smartPlay is True:
                return args

            cm = []
            if tools.getSetting('trakt.auth') != '':
                cm.append((
                    'Trakt Manager',
                    'RunPlugin(%s?action=traktManager&actionArgs=%s)' %
                    (sysaddon, tools.quote(json.dumps(item['trakt_object'])))))

            if tools.context_addon():
                cm = []

            item_list.append(
                tools.addDirectoryItem(name,
                                       action,
                                       item['info'],
                                       item['art'],
                                       cm=cm,
                                       isFolder=True,
                                       isPlayable=False,
                                       actionArgs=args,
                                       set_ids=item['ids'],
                                       bulk_add=True))

        tools.addMenuItems(syshandle, item_list, len(item_list))
    def commonListBuilder(self, trakt_list, nextPath=None):

        if len(trakt_list) == 0:
            return
        if 'movie' in trakt_list[0]:
            trakt_list = [i['movie'] for i in trakt_list]

        for item in trakt_list:
            self.threadList.append(Thread(target=self.tmdbListWorker, args=(item,)))

        self.runThreads()

        self.itemList = tools.sort_list_items(self.itemList, trakt_list)
        if tools.getSetting('trakt.auth') != '':
            traktWatched = trakt.json_response('sync/watched/movies')

            for listItem in self.itemList:
                for i in traktWatched:
                    if i['movie']['ids']['trakt'] == listItem['ids']['trakt']:
                        listItem['info']['playcount'] = i['plays']

        for item in self.itemList:
            try:

                # Add Arguments to pass with item
                args = {}
                args['title'] = item['info']['title']
                args['year'] = item['info']['year']
                args['ids'] = item['ids']
                args['fanart'] = item['art']['fanart']
                args['info'] = item['info']
                args['art'] = item['art']
                args['imdb'] = item['info']['imdbnumber']
                args['tagline'] = item['info']['tagline']
                args['plot'] = item['info']['plot']
                args['rating'] = item['info']['rating']
                args['duration'] = item['info']['duration']
                name = item['info']['title']

                item['info']['title'] = item['info']['originaltitle'] = name
                args = tools.quote(json.dumps(args))

                # Begin Building Context Menu Items
                cm = []
                cm.append((tools.lang(32020).encode('utf-8'),
                           'Container.Update(%s?action=moviesRelated&actionArgs=%s)' % (
                           sysaddon, item['ids']['trakt'])))
                cm.append((tools.lang(32066).encode('utf-8'),
                           'PlayMedia(%s?action=getSources&source_select=true&actionArgs=%s)' % (sysaddon, args)))
                cm.append((tools.lang(33022).encode('utf-8'),
                           'PlayMedia(%s?action=getSources&seren_reload=true&actionArgs=%s)' % (sysaddon, args)))

                if tools.getSetting('trakt.auth') != '':
                    cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)'
                               % (sysaddon, tools.quote(json.dumps(item['trakt_object'])))))

                if tools.context_addon():
                    cm = []

            except:
                import traceback
                traceback.print_exc()
                continue

            if item is None: continue
            tools.addDirectoryItem(name, 'getSources', item['info'], item['art'], cm=cm,
                                   isFolder=False, isPlayable=True, actionArgs=args, set_ids=item['ids'])
Beispiel #10
0
    def commonListBuilder(self, trakt_list, info_return=False):

        if len(trakt_list) == 0:
            return
        if 'movie' in trakt_list[0]:
            trakt_list = [i['movie'] for i in trakt_list]

        self.itemList = trakt_database.get_movie_list(trakt_list)

        self.itemList = [x for x in self.itemList if x is not None and 'info' in x]
        self.itemList = tools.sort_list_items(self.itemList, trakt_list)

        list_items = []

        for item in self.itemList:
            try:

                name = tools.display_string(item['info']['title'])

                if not self.is_aired(item['info']):
                    if tools.getSetting('general.hideUnAired') == 'true':
                        continue
                    name = tools.colorString(name, 'red')
                    name = tools.italic_string(name)

                args = {'trakt_id': item['ids']['trakt'], 'item_type': 'movie'}

                args = tools.quote(json.dumps(args, sort_keys=True))

                # Begin Building Context Menu Items
                cm = []

                cm.append((tools.lang(32020),
                           'Container.Update(%s?action=moviesRelated&actionArgs=%s)' % (
                               sysaddon, item['ids']['trakt'])))
                cm.append((tools.lang(32066),
                           'PlayMedia(%s?action=getSourcesWorkaround&source_select=true&actionArgs=%s)' % (sysaddon, args)))
                cm.append((tools.lang(33022),
                           'PlayMedia(%s?action=getSourcesWorkaround&seren_reload=true&actionArgs=%s)' % (sysaddon, args)))

                if tools.getSetting('trakt.auth') != '':
                    cm.append(('Trakt Manager', 'RunPlugin(%s?action=traktManager&actionArgs=%s)'
                               % (sysaddon, tools.quote(json.dumps(item['trakt_object'])))))

                if tools.context_addon():
                    cm = []

            except:
                import traceback
                traceback.print_exc()
                continue

            if item is None:
                continue

            item['info']['title'] = item['info']['originaltitle'] = name

            list_items.append(tools.addDirectoryItem(name, 'getSources', item['info'], item['art'], cm=cm,
                                                     isFolder=False, isPlayable=True, actionArgs=args,
                                                     set_ids=item['ids'], bulk_add=True))

        if info_return:
            return list_items

        tools.addMenuItems(syshandle, list_items, len(list_items))