Пример #1
0
    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')
Пример #2
0
 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)
Пример #3
0
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)
Пример #4
0
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
Пример #6
0
 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)
Пример #7
0
 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)
Пример #8
0
 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')
Пример #10
0
 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)
Пример #11
0
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)