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