예제 #1
0
    def add_userlist(self,
                     user_slug=None,
                     list_slug=None,
                     confirm=True,
                     force=False,
                     **kwargs):
        request = get_userlist(user_slug=user_slug,
                               list_slug=list_slug,
                               confirm=confirm,
                               busy_spinner=self.p_dialog)
        if not request:
            return
        i_total = len(request)
        i_added = {'movie': [], 'show': []}

        for x, i in enumerate(request):
            self._update(x,
                         i_total,
                         message=u'Updating {}...'.format(
                             i.get(i.get('type'), {}).get('title')))
            playlist_rule = self._add_userlist_item(i, force=force)
            if not playlist_rule:
                continue
            i_added[i.get('type')].append(playlist_rule)

        if i_added.get('movie'):
            self._update(1, 3, message=ADDON.getLocalizedString(32349))
            create_playlist(i_added['movie'], 'movies', user_slug, list_slug)
        if i_added.get('show'):
            self._update(2, 3, message=ADDON.getLocalizedString(32350))
            create_playlist(i_added['show'], 'tvshows', user_slug, list_slug)
예제 #2
0
def monitor_userlist():
    # Build list choices
    with busy_dialog():
        user_lists = []
        user_lists += TraktAPI().get_list_of_lists(
            'users/me/lists', authorize=True, next_page=False) or []
        user_lists += TraktAPI().get_list_of_lists(
            'users/likes/lists', authorize=True, next_page=False) or []
        saved_lists = _get_monitor_userlists()
        dialog_list = [i['label'] for i in user_lists]
        preselected = [
            x for x, i in enumerate(user_lists)
            if (i.get('params', {}).get('list_slug'),
                i.get('params', {}).get('user_slug')) in saved_lists
        ]

    # Ask user to choose lists
    indices = xbmcgui.Dialog().multiselect(ADDON.getLocalizedString(32312),
                                           dialog_list,
                                           preselect=preselected)
    if indices is None:
        return

    # Build the new settings and check that lists aren't over limit
    added_lists, added_users = [], []
    for x in indices:
        list_slug = user_lists[x].get('params', {}).get('list_slug')
        user_slug = user_lists[x].get('params', {}).get('user_slug')
        if get_userlist(user_slug, list_slug, confirm=50):
            added_lists.append(list_slug)
            added_users.append(user_slug)

    # Set the added lists to our settings
    if not added_lists or not added_users:
        return
    added_lists = ' | '.join(added_lists)
    added_users = ' | '.join(added_users)
    ADDON.setSettingString('monitor_userlist', added_lists)
    ADDON.setSettingString('monitor_userslug', added_users)

    # Update library?
    if xbmcgui.Dialog().yesno(xbmc.getLocalizedString(653),
                              ADDON.getLocalizedString(32132)):
        library_autoupdate(list_slugs=added_lists,
                           user_slugs=added_users,
                           busy_spinner=True)