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
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
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
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
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