def list_searchdir(self, tmdb_type, clear_cache_item=True, append_type=False, **kwargs):
        base_item = {
            'label': u'{} {}'.format(xbmc.getLocalizedString(137), convert_type(tmdb_type, 'plural')),
            'art': {'thumb': u'{}/resources/icons/tmdb/search.png'.format(ADDONPATH)},
            'infoproperties': {'specialsort': 'top'},
            'params': merge_two_dicts(kwargs, {'info': 'search', 'tmdb_type': tmdb_type})}
        items = []
        items.append(base_item)

        history = get_search_history(tmdb_type)
        history.reverse()
        for i in history:
            item = {
                'label': u'{} ({})'.format(i, tmdb_type) if append_type else i,
                'art': base_item.get('art'),
                'params': merge_two_dicts(base_item.get('params', {}), {'query': i})}
            items.append(item)
        if history and clear_cache_item:
            item = {
                'label': ADDON.getLocalizedString(32121),
                'art': base_item.get('art'),
                'infoproperties': {'specialsort': 'bottom'},
                'params': merge_two_dicts(base_item.get('params', {}), {'info': 'dir_search', 'clear_cache': 'True'})}
            items.append(item)
        return items
    def list_discoverdir(self, **kwargs):
        items = []
        params = merge_two_dicts(kwargs, {'info': 'user_discover'})
        artwork = {'thumb': u'{}/resources/poster.png'.format(ADDONPATH)}
        for i in ['movie', 'tv']:
            item = {
                'label': u'{} {}'.format(ADDON.getLocalizedString(32174), convert_type(i, 'plural')),
                'params': merge_two_dicts(params, {'tmdb_type': i}),
                'infoproperties': {'specialsort': 'top'},
                'art': artwork}
            items.append(item)

        history = get_search_history('discover')
        history.reverse()
        for x, i in enumerate(history):
            item_params = merge_two_dicts(kwargs, i.get('params', {}))
            edit_params = {'info': 'user_discover', 'tmdb_type': item_params.get('tmdb_type'), 'method': 'edit', 'idx': x}
            name_params = {'info': 'dir_discover', 'tmdb_type': item_params.get('tmdb_type'), 'method': 'rename', 'idx': x}
            dele_params = {'info': 'dir_discover', 'tmdb_type': item_params.get('tmdb_type'), 'method': 'delete', 'idx': x}
            item = {
                'label': i.get('label'),
                'params': item_params,
                'art': artwork,
                'context_menu': [
                    (xbmc.getLocalizedString(21435), u'Container.Update({})'.format(encode_url(PLUGINPATH, **edit_params))),
                    (xbmc.getLocalizedString(118), u'Container.Update({})'.format(encode_url(PLUGINPATH, **name_params))),
                    (xbmc.getLocalizedString(117), u'Container.Update({})'.format(encode_url(PLUGINPATH, **dele_params)))]}
            items.append(item)
        if history:
            item = {
                'label': ADDON.getLocalizedString(32237),
                'art': artwork,
                'params': merge_two_dicts(params, {'info': 'dir_discover', 'clear_cache': 'True'})}
            items.append(item)
        return items
 def set_details(self, details=None, reverse=False):
     if not details:
         return
     self.stream_details = merge_two_dicts(details.get('stream_details', {}), self.stream_details, reverse=reverse)
     self.infolabels = merge_two_dicts(details.get('infolabels', {}), self.infolabels, reverse=reverse)
     self.infoproperties = merge_two_dicts(details.get('infoproperties', {}), self.infoproperties, reverse=reverse)
     self.art = merge_two_dicts(details.get('art', {}), self.art, reverse=reverse)
     self.unique_ids = merge_two_dicts(details.get('unique_ids', {}), self.unique_ids, reverse=reverse)
     self.cast = self.cast or details.get('cast', [])
 def list_randomised(self, **kwargs):
     params = merge_two_dicts(kwargs, RANDOMISED_LISTS.get(kwargs.get('info'), {}).get('params'))
     item = random_from_list(self.get_items(**params))
     if not item:
         return
     self.plugin_category = item.get('label')
     return self.get_items(**item.get('params', {}))
    def list_search(self, tmdb_type, query=None, update_listing=False, page=None, **kwargs):
        original_query = query
        query = query or set_search_history(
            query=try_decode(xbmcgui.Dialog().input(ADDON.getLocalizedString(32044), type=xbmcgui.INPUT_ALPHANUM)),
            tmdb_type=tmdb_type)

        if not query:
            return

        items = self.tmdb_api.get_search_list(
            tmdb_type=tmdb_type, query=query, page=page,
            year=kwargs.get('year'),
            first_air_date_year=kwargs.get('first_air_date_year'),
            primary_release_year=kwargs.get('primary_release_year'))

        if not original_query:
            params = merge_two_dicts(kwargs, {
                'info': 'search', 'tmdb_type': tmdb_type, 'page': page, 'query': query,
                'update_listing': 'True'})
            self.container_update = u'{}?{}'.format(PLUGINPATH, urlencode_params(**params))
            # Trigger container update using new path with query after adding items
            # Prevents onback from re-prompting for user input by re-writing path

        self.update_listing = True if update_listing else False
        self.container_content = convert_type(tmdb_type, 'container')
        self.kodi_db = self.get_kodi_database(tmdb_type)

        return items
示例#6
0
 def get_item_ratings(self, item, cache_only=False):
     """ Get ratings for an item using IMDb lookup """
     if not item:
         return
     imdb_id = self._get_item_imdb(item)
     if not imdb_id:
         return item
     ratings = self.get_ratings_awards(imdb_id=imdb_id,
                                       cache_only=cache_only)
     item['infoproperties'] = merge_two_dicts(
         item.get('infoproperties', {}), ratings.get('infoproperties', {}))
     return item
示例#7
0
 def get_trakt_ratings(self, item, trakt_type, season=None, episode=None):
     ratings = self.trakt_api.get_ratings(
         trakt_type=trakt_type,
         imdb_id=item.get('unique_ids', {}).get('tvshow.imdb') or item.get('unique_ids', {}).get('imdb'),
         trakt_id=item.get('unique_ids', {}).get('tvshow.trakt') or item.get('unique_ids', {}).get('trakt'),
         slug_id=item.get('unique_ids', {}).get('tvshow.slug') or item.get('unique_ids', {}).get('slug'),
         season=season,
         episode=episode)
     if not ratings:
         return item
     item['infoproperties'] = merge_two_dicts(item.get('infoproperties', {}), ratings)
     return item
示例#8
0
 def get_fanarttv_artwork(self, item, tmdb_type=None, tmdb_id=None, tvdb_id=None):
     if not self.fanarttv or tmdb_type not in ['movie', 'tv']:
         return item
     lookup_id = None
     if tmdb_type == 'tv':
         lookup_id = tvdb_id or item.get('unique_ids', {}).get('tvshow.tvdb') or item.get('unique_ids', {}).get('tvdb')
         func = self.fanarttv.get_tv_all_artwork
     elif tmdb_type == 'movie':
         lookup_id = tmdb_id or item.get('unique_ids', {}).get('tmdb')
         func = self.fanarttv.get_movies_all_artwork
     if lookup_id:
         item['art'] = merge_two_dicts(item.get('art', {}), func(lookup_id))
     return item
示例#9
0
 def get_omdb_ratings(self, item, cache_only=False):
     if not self.omdb_api:
         return item
     imdb_id = item.get('infolabels', {}).get('imdbnumber')
     if not imdb_id or not imdb_id.startswith('tt'):
         imdb_id = item.get('unique_ids', {}).get('imdb')
     if not imdb_id or not imdb_id.startswith('tt'):
         imdb_id = item.get('unique_ids', {}).get('tvshow.imdb')
     if not imdb_id:
         return item
     ratings = self.omdb_api.get_ratings_awards(imdb_id=imdb_id,
                                                cache_only=cache_only)
     item['infoproperties'] = merge_two_dicts(
         item.get('infoproperties', {}), ratings.get('infoproperties', {}))
     return item