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]
    list_item = ListItemW(label=video_list['displayName'])
    add_info_list_item(list_item,
                       video_list.videoid,
                       video_list,
                       video_list.data,
                       False,
                       common_data,
                       art_item=video_list.artitem)
    # Add possibility to browse the sub-genres (see build_video_listing)
    sub_genre_id = video_list.get('genreId')
    params = {'sub_genre_id': str(sub_genre_id)} if sub_genre_id else None
    return common.build_url(pathitems, params=params,
                            mode=G.MODE_DIRECTORY), list_item, True
def _create_episode_item(seasonid, episodeid_value, episode, episodes_list,
                         common_data):
    is_playable = episode['summary']['isPlayable']
    episodeid = seasonid.derive_episode(episodeid_value)
    list_item = ListItemW(label=episode['title'])
    list_item.setProperties({
        'isPlayable': str(is_playable).lower(),
        'nf_videoid': episodeid.to_string()
    })
    add_info_list_item(list_item, episodeid, episode, episodes_list.data,
                       False, common_data)
    set_watched_status(list_item, episode, common_data)
    if is_playable:
        url = common.build_url(videoid=episodeid,
                               mode=G.MODE_PLAY,
                               params=common_data['params'])
        list_item.addContextMenuItems(
            generate_context_menu_items(episodeid, False, None))
    else:
        # The video is not playable, try check if there is a date
        list_item.setProperty('nf_availability_message',
                              get_availability_message(episode))
        url = common.build_url(['show_availability_message'],
                               mode=G.MODE_ACTION)
    return url, list_item, False
Ejemplo n.º 3
0
def _create_season_item(tvshowid, seasonid_value, season, season_list, common_data):
    seasonid = tvshowid.derive_season(seasonid_value)
    list_item = ListItemW(label=season['summary']['name'])
    list_item.setProperty('nf_videoid', seasonid.to_string())
    add_info_list_item(list_item, seasonid, season, season_list.data, False, common_data,
                       art_item=season_list.artitem)
    list_item.addContextMenuItems(generate_context_menu_items(seasonid, False, None))
    return common.build_url(videoid=seasonid, mode=G.MODE_DIRECTORY), list_item, True
Ejemplo n.º 4
0
def _create_video_item(videoid_value, video, video_list, perpetual_range_start,
                       common_data):  # pylint: disable=unused-argument
    videoid = common.VideoId.from_videolist_item(video)
    is_folder = videoid.mediatype == common.VideoId.SHOW
    is_playable = video['availability']['isPlayable']
    is_video_playable = not is_folder and is_playable
    is_in_mylist = videoid in common_data['mylist_items']
    list_item = ListItemW(label=video['title'])
    list_item.setProperties({
        'isPlayable':
        str(is_video_playable).lower(),
        'nf_videoid':
        videoid.to_string(),
        'nf_is_in_mylist':
        str(is_in_mylist),
        'nf_perpetual_range_start':
        str(perpetual_range_start)
    })
    add_info_list_item(list_item, videoid, video, video_list.data,
                       is_in_mylist, common_data)
    if not is_folder:
        set_watched_status(list_item, video, common_data)
    if is_playable:
        # The movie or tvshow (episodes) is playable
        url = common.build_url(
            videoid=videoid,
            mode=G.MODE_DIRECTORY if is_folder else G.MODE_PLAY,
            params=None if is_folder else common_data['params'])
        list_item.addContextMenuItems(
            generate_context_menu_items(
                videoid, is_in_mylist, perpetual_range_start,
                common_data['ctxmenu_remove_watched_status']))
    else:
        # The movie or tvshow (episodes) is not available
        # Try check if there is a availability date
        list_item.setProperty('nf_availability_message',
                              get_availability_message(video))
        # Check if the user has set "Remind Me" feature,
        try:
            #  Due to the add-on cache we can not change in easy way the value stored in database cache,
            #  then we temporary override the value (see 'remind_me' in navigation/actions.py)
            is_in_remind_me = G.CACHE.get(CACHE_BOOKMARKS,
                                          f'is_in_remind_me_{videoid}')
        except CacheMiss:
            #  The website check the "Remind Me" value on key "inRemindMeList" and also "queue"/"inQueue"
            is_in_remind_me = video['inRemindMeList'] or video['queue'][
                'inQueue']
        trackid = video['trackIds']['trackId_jaw']
        list_item.addContextMenuItems(
            generate_context_menu_remind_me(videoid, is_in_remind_me, trackid))
        url = common.build_url(['show_availability_message'],
                               videoid=videoid,
                               mode=G.MODE_ACTION)
    return url, list_item, is_folder and is_playable
Ejemplo n.º 5
0
def _create_category_item(list_id, video_list, menu_data, common_data,
                          summary_data):
    pathitems = ['video_list', menu_data['path'][1], list_id]
    list_item = ListItemW(label=summary_data['displayName'])
    add_info_list_item(list_item,
                       video_list.videoid,
                       video_list,
                       video_list.data,
                       False,
                       common_data,
                       art_item=video_list.artitem)
    return common.build_url(pathitems, mode=G.MODE_DIRECTORY), list_item, True
def _create_video_item(videoid_value, video, video_list, perpetual_range_start,
                       common_data):  # pylint: disable=unused-argument
    videoid = common.VideoId.from_videolist_item(video)
    is_folder = videoid.mediatype == common.VideoId.SHOW
    is_playable = video['availability']['isPlayable']
    is_video_playable = not is_folder and is_playable
    is_in_mylist = videoid in common_data['mylist_items']
    list_item = ListItemW(label=video['title'])
    list_item.setProperties({
        'isPlayable':
        str(is_video_playable).lower(),
        'nf_videoid':
        videoid.to_string(),
        'nf_is_in_mylist':
        str(is_in_mylist),
        'nf_perpetual_range_start':
        str(perpetual_range_start)
    })
    add_info_list_item(list_item, videoid, video, video_list.data,
                       is_in_mylist, common_data)
    if not is_folder:
        set_watched_status(list_item, video, common_data)
    if is_playable:
        url = common.build_url(
            videoid=videoid,
            mode=G.MODE_DIRECTORY if is_folder else G.MODE_PLAY,
            params=None if is_folder else common_data['params'])
        list_item.addContextMenuItems(
            generate_context_menu_items(
                videoid, is_in_mylist, perpetual_range_start,
                common_data['ctxmenu_remove_watched_status']))
    else:
        # The video is not playable, try check if there is a date
        list_item.setProperty('nf_availability_message',
                              get_availability_message(video))
        url = common.build_url(['show_availability_message'],
                               mode=G.MODE_ACTION)
    return url, list_item, is_folder and is_playable