def video_list_sorted(self, pathitems): """Show a video list sorted of a 'context' name""" menu_data = g.MAIN_MENU_ITEMS.get(pathitems[1]) if not menu_data: # Dynamic menus menu_data = g.LOCAL_DB.get_value(pathitems[1], table=TABLE_MENU_DATA, data_type=dict) call_args = { 'pathitems': pathitems, 'menu_data': menu_data, 'sub_genre_id': self.params.get( 'genre_id' ), # Used to show the sub-genre folder (when sub-genre exists) 'perpetual_range_start': self.perpetual_range_start, 'is_dynamic_id': not g.is_known_menu_context(pathitems[2]) } list_data, extra_data = common.make_call('get_video_list_sorted', call_args) sort_type = 'sort_nothing' if menu_data['path'][1] == 'myList' and int( g.ADDON.getSettingInt('menu_sortorder_mylist')) == 0: # At the moment it is not possible to make a query with results sorted for the 'mylist', # so we adding the sort order of kodi sort_type = 'sort_label_ignore_folders' finalize_directory(convert_list_to_dir_items(list_data), menu_data.get('content_type', g.CONTENT_SHOW), title=get_title(menu_data, extra_data), sort_type=sort_type) end_of_directory(self.dir_update_listing) return menu_data.get('view')
def video_list_sorted(self, pathitems): """Show a video list with a sorted request""" menu_data = g.MAIN_MENU_ITEMS.get(pathitems[1]) if not menu_data: menu_data = g.LOCAL_DB.get_value(pathitems[1], table=TABLE_MENU_DATA, data_type=dict) mainmenu_data = menu_data.copy() # If the menu is a sub-menu, we get the parameters of the main menu if menu_data.get('main_menu'): mainmenu_data = menu_data['main_menu'] if menu_data.get('request_context_name', None) and g.is_known_menu_context(pathitems[2]): listings.build_video_listing( api.video_list_sorted(menu_data['request_context_name'], perpetual_range_start=self.perpetual_range_start, menu_data=mainmenu_data), menu_data, pathitems) else: # Dynamic IDs for common video lists list_id = None if pathitems[2] == 'None' else pathitems[2] listings.build_video_listing( api.video_list_sorted(menu_data['request_context_name'], context_id=list_id, perpetual_range_start=self.perpetual_range_start, menu_data=mainmenu_data), menu_data, pathitems, self.params.get('genre_id')) _handle_endofdirectory(self.dir_update_listing)
def _create_videolist_item(video_list_id, video_list, menu_data, static_lists=False): """Create a tuple that can be added to a Kodi directory that represents a videolist as listed in a LoLoMo""" if static_lists and g.is_known_menu_context(video_list['context']): pathitems = menu_data['path'] pathitems.append(video_list['context']) else: # Has a dynamic video list-menu context if menu_data.get('force_videolistbyid', False): path = 'video_list' else: path = 'video_list_sorted' pathitems = [path, menu_data['path'][1], video_list_id] list_item = list_item_skeleton(video_list['displayName']) infos = add_info(video_list.id, list_item, video_list, video_list.data) if not static_lists: add_highlighted_title(list_item, video_list.id, infos) list_item.setInfo('video', infos) if video_list.artitem: add_art(video_list.id, list_item, video_list.artitem) url = common.build_url( pathitems, params={'genre_id': unicode(video_list.get('genreId'))}, mode=g.MODE_DIRECTORY) return (url, list_item, True)
def build_lolomo_listing(lolomo, menu_data, force_videolistbyid=False, exclude_lolomo_known=False): """Build a listing of vieo lists (LoLoMo). Only show those lists with a context specified context if contexts is set.""" contexts = menu_data['contexts'] lists = (lolomo.lists_by_context(contexts) if contexts else lolomo.lists.iteritems()) directory_items = [] for video_list_id, video_list in lists: if video_list['context'] != 'billboard': if exclude_lolomo_known: if g.is_known_menu_context(video_list['context']): continue menu_parameters = common.MenuIdParameters(id_values=video_list_id) if menu_parameters.is_menu_id: #Create a new submenu info in MAIN_MENU_ITEMS for reference when 'directory' find the menu data sub_menu_data = menu_data.copy() sub_menu_data['path'][1] = menu_parameters.context_id sub_menu_data['menu_title'] = video_list['displayName'] sub_menu_data['contexts'] = None sub_menu_data['show_in_menu'] = False sub_menu_data['force_videolistbyid'] = force_videolistbyid g.MAIN_MENU_ITEMS[menu_parameters.context_id] = sub_menu_data directory_items.append( _create_videolist_item( menu_parameters.context_id if menu_parameters.context_id and not force_videolistbyid else video_list_id, video_list, sub_menu_data)) finalize_directory(directory_items, g.CONTENT_FOLDER, title=menu_data['menu_title'])
def _create_videolist_item(list_id, video_list, menu_data, common_data, static_lists=False): if static_lists and g.is_known_menu_context(video_list['context']): pathitems = list(menu_data['path']) # Make a copy pathitems.append(video_list['context']) else: # It is a dynamic video list / menu context if menu_data.get('force_use_videolist_id', False): path = 'video_list' else: path = 'video_list_sorted' pathitems = [path, menu_data['path'][1], list_id] dict_item = {'label': video_list['displayName'], 'is_folder': True} add_info_dict_item(dict_item, video_list.videoid, video_list, video_list.data, False, common_data) dict_item['art'] = get_art(video_list.videoid, video_list.artitem, common_data['profile_language_code']) dict_item['url'] = common.build_url( pathitems, # genre_id add possibility to browse the sub-genres (see build_video_listing) # Todo: Disabled sub-genre menu due to website changes # params={'genre_id': unicode(video_list.get('genreId'))}, mode=g.MODE_DIRECTORY) return dict_item
def video_list(self, pathitems): """Show a video list with a listid request""" menu_data = g.MAIN_MENU_ITEMS.get(pathitems[1]) if not menu_data: menu_data = g.PERSISTENT_STORAGE['sub_menus'][pathitems[1]] if g.is_known_menu_context(pathitems[2]): list_id = api.list_id_for_type(menu_data['lolomo_contexts'][0]) listings.build_video_listing(api.video_list(list_id), menu_data) else: # Dynamic IDs from generated sub-menu list_id = pathitems[2] listings.build_video_listing(api.video_list(list_id), menu_data)
def video_list(self, pathitems): """Show a video list with a listid request""" menu_data = g.MAIN_MENU_ITEMS.get(pathitems[1]) if not menu_data: menu_data = g.LOCAL_DB.get_value(pathitems[1], table=TABLE_MENU_DATA, data_type=dict) if g.is_known_menu_context(pathitems[2]): list_id = api.list_id_for_type(menu_data['lolomo_contexts'][0]) listings.build_video_listing(api.video_list(list_id), menu_data) else: # Dynamic IDs from generated sub-menu list_id = pathitems[2] listings.build_video_listing(api.video_list(list_id), menu_data) _handle_endofdirectory(False)
def video_list_sorted(self, pathitems): """Show a video list with a sorted request""" menu_data = g.MAIN_MENU_ITEMS.get(pathitems[1]) if not menu_data: menu_data = g.PERSISTENT_STORAGE['sub_menus'][pathitems[1]] if menu_data.get('request_context_name', None) and g.is_known_menu_context(pathitems[2]): listings.build_video_listing( api.video_list_sorted(menu_data['request_context_name']), menu_data) else: #Dynamic IDs for common video lists list_id = pathitems[2] listings.build_video_listing( api.video_list_sorted(menu_data['request_context_name'], list_id), menu_data)
def video_list(self, pathitems): """Show a video list of a list ID""" menu_data = g.MAIN_MENU_ITEMS.get(pathitems[1]) if not menu_data: # Dynamic menus menu_data = g.LOCAL_DB.get_value(pathitems[1], table=TABLE_MENU_DATA, data_type=dict) call_args = { 'list_id': pathitems[2], 'menu_data': menu_data, 'is_dynamic_id': not g.is_known_menu_context(pathitems[2]) } list_data, extra_data = common.make_call('get_video_list', call_args) finalize_directory(convert_list_to_dir_items(list_data), menu_data.get('content_type', g.CONTENT_SHOW), title=get_title(menu_data, extra_data)) end_of_directory(False) return menu_data.get('view')
def video_list_sorted(self, pathitems): """Show a video list with a sorted request""" menu_data = g.MAIN_MENU_ITEMS.get(pathitems[1]) if not menu_data: menu_data = g.PERSISTENT_STORAGE['sub_menus'][pathitems[1]] if menu_data.get('request_context_name',None) and g.is_known_menu_context(pathitems[2]): listings.build_video_listing( api.video_list_sorted(context_name=menu_data['request_context_name'], perpetual_range_start=self.perpetual_range_start), menu_data, pathitems) else: #Dynamic IDs for common video lists list_id = None if pathitems[2] == 'None' else pathitems[2] listings.build_video_listing( api.video_list_sorted(context_name=menu_data['request_context_name'], context_id=list_id, perpetual_range_start=self.perpetual_range_start), menu_data, pathitems) _handle_endofdirectory(self.dir_update_listing)
def _create_videolist_item(video_list_id, video_list, menu_data, static_lists=False): """Create a tuple that can be added to a Kodi directory that represents a videolist as listed in a LoLoMo""" if static_lists and g.is_known_menu_context(video_list['context']): pathitems = menu_data['path'] pathitems.append(video_list['context']) else: # Has a dynamic video list-menu context if menu_data.get('force_videolistbyid', False): path = 'video_list_byid' else: path = 'video_list' pathitems = [path, menu_data['path'][1], video_list_id] list_item = list_item_skeleton(video_list['displayName']) add_info(video_list.id, list_item, video_list, video_list.data) if video_list.artitem: add_art(video_list.id, list_item, video_list.artitem) url = common.build_url(pathitems, mode=g.MODE_DIRECTORY) return (url, list_item, True)