def manager(name, imdb, tvdb, content): try: icon = sctop.infoLabel('ListItem.Icon') post = {"movies": [{"ids": {"imdb": imdb}}]} if content == 'movie' else {"shows": [{"ids": {"tvdb": tvdb}}]} items = [(sctop.getString(30934).encode('utf-8'), '/sync/collection')] items += [(sctop.getString(30935).encode('utf-8'), '/sync/collection/remove')] items += [(sctop.getString(30936).encode('utf-8'), '/sync/watchlist')] items += [(sctop.getString(30937).encode('utf-8'), '/sync/watchlist/remove')] items += [(sctop.getString(30938).encode('utf-8'), '/users/me/lists/%s/items')] result = getTrakt('/users/me/lists') result = json.loads(result) lists = [(i['name'], i['ids']['slug']) for i in result] lists = [lists[i // 2] for i in range(len(lists) * 2)] util.debug("[SC] string %s" % sctop.getString(30939)) for i in range(0, len(lists), 2): lists[i] = ( (sctop.getString(30939) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items' % lists[i][1]) for i in range(1, len(lists), 2): lists[i] = ( (sctop.getString(30940) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items/remove' % lists[i][1]) items += lists select = sctop.selectDialog([i[0] for i in items], sctop.getString(30941).encode('utf-8')) if select == -1: return elif select == 4: t = sctop.getString(30938).encode('utf-8') k = sctop.keyboard('', t); k.doModal() new = k.getText() if k.isConfirmed() else None if (new == None or new == ''): return result = getTrakt('/users/me/lists', post={"name": new, "privacy": "private"}) try: slug = json.loads(result)['ids']['slug'] except: return sctop.infoDialog(sctop.getString(30941).encode('utf-8'), heading=str(name), sound=True, icon='ERROR') result = getTrakt(items[select][1] % slug, post=post) else: result = getTrakt(items[select][1], post=post) icon = icon if not result == None else 'ERROR' sctop.infoDialog(sctop.getString(30941).encode('utf-8'), heading=str(name), sound=True, icon=icon) except Exception, e: util.debug("[SC] trakt error: %s" % str(traceback.format_exc())) return
def listAppendToCustom(user, list_id): lists = json.loads(getTrakt('/users/me/lists')) lists = [(i['ids']['slug'], i['name']) for i in lists] select = sctop.selectDialog([i[1] for i in lists], sctop.getString(30968).encode("utf-8")) if select == -1: return dst_list = lists[select][0] dst_items = _getListItemsForImport(user, list_id) result, code, info = getTrakt('/users/me/lists/%s/items' % dst_list, post=dst_items, output="info") if code == 201: sctop.infoDialog("%s" % lists[select][1], sctop.getString(30969).encode("utf-8")) else: util.debug('[SC] import to %s failed. %d, %s' % (dst_list, code, result))
def listAppendToCustom(user, list_id): lists = json.loads(getTrakt('/users/me/lists')) lists = [(i['ids']['slug'], i['name'], i['ids']['trakt']) for i in lists] select = sctop.selectDialog([i[1] for i in lists], sctop.getString(30968).encode("utf-8")) if select == -1: return dst_list = lists[select] dst_items = _getListItemsForImport(user, list_id) result, code, info = getTrakt('/users/me/lists/%s/items' % dst_list[0], post=dst_items, output="info") if code == 201: sctop.infoDialog("%s" % dst_list[1], sctop.getString(30969).encode("utf-8")) for c in ['shows', 'movies']: sctop.cache.set('trakt.lists.%s.%s' % (dst_list[2], c), None, expiration=timedelta()) else: util.debug('[SC] import to %s failed. %d, %s' % (dst_list[0], code, result))
def listAppendToCustom(user, list_id): lists = json.loads(getTrakt('/users/me/lists')) lists = [(i['ids']['slug'], i['name'], i['ids']['trakt']) for i in lists] select = sctop.selectDialog([i[1] for i in lists], sctop.getString(30968).encode("utf-8")) if select == -1: return dst_list = lists[select] dst_items = _getListItemsForImport(user, list_id) result, code, info = getTrakt( '/users/me/lists/%s/items' % dst_list[0], post=dst_items, output="info") if code == 201: sctop.infoDialog("%s" % dst_list[1], sctop.getString(30969).encode("utf-8")) for c in ['shows', 'movies']: sctop.cache.set( 'trakt.lists.%s.%s' % (dst_list[2], c), None, expiration=timedelta()) else: util.debug( '[SC] import to %s failed. %d, %s' % (dst_list[0], code, result))
def manager(name, trakt, content): try: icon = sctop.infoLabel('ListItem.Icon') message = sctop.getString(30941).encode('utf-8') content = "movies" if content == 'movie' else "shows" post = {content: [{"ids": {"trakt": trakt}}]} items = [] if sctop.getSettingAsBool('trakt.collections'): items = [(sctop.getString(30934).encode('utf-8'), '/sync/collection')] items += [(sctop.getString(30935).encode('utf-8'), '/sync/collection/remove')] if sctop.getSettingAsBool('trakt.watchlist'): items += [(sctop.getString(30936).encode('utf-8'), '/sync/watchlist')] items += [(sctop.getString(30937).encode('utf-8'), '/sync/watchlist/remove')] items += [(sctop.getString(30989), 'rating')] items += [(sctop.getString(30938).encode('utf-8'), '/users/me/lists/%s/items')] result = getTrakt('/users/me/lists') result = json.loads(result) lists = [(i['name'], i['ids']['slug']) for i in result] lists = [lists[i // 2] for i in range(len(lists) * 2)] util.debug("[SC] string %s" % sctop.getString(30939)) for i in range(0, len(lists), 2): lists[i] = ((sctop.getString(30939) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items' % lists[i][1]) for i in range(1, len(lists), 2): lists[i] = ((sctop.getString(30940) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items/remove' % lists[i][1]) items += lists select = sctop.selectDialog([i[0] for i in items], sctop.getString(30941).encode('utf-8')) if select == -1: return elif items[select][1] == 'rating': ratings = [(sctop.getString(i + 30990).encode('utf-8'), i) for i in range(10, -1, -1)] select = sctop.selectDialog([i[0] for i in ratings], str(name)) url = "/sync/ratings/remove" if select == -1: return elif ratings[select][1] != 0: url = "/sync/ratings" post[content][0]['rating'] = ratings[select][1] try: result = getTrakt(url, post=post) result = json.loads(result) except: return sctop.infoDialog(sctop.getString(30941).encode('utf-8'), heading=str(name), sound=True, icon='ERROR') if 'added' in result: if result['added'][content]: message = sctop.getString(30987).encode( 'utf-8') % ratings[select][1] else: return if 'deleted' in result: if result['deleted'][content]: message = sctop.getString(30988).encode('utf-8') else: return elif items[select][1] == '/users/me/lists/%s/items': t = sctop.getString(30938).encode('utf-8') k = sctop.keyboard('', t) k.doModal() new = k.getText() if k.isConfirmed() else None if (new == None or new == ''): return result = getTrakt('/users/me/lists', post={ "name": new, "privacy": "private" }) try: slug = json.loads(result)['ids']['slug'] except: return sctop.infoDialog(sctop.getString(30941).encode('utf-8'), heading=str(name), sound=True, icon='ERROR') result = getTrakt(items[select][1] % slug, post=post) else: result = getTrakt(items[select][1], post=post) icon = icon if not result == None else 'ERROR' sctop.infoDialog(message, heading=str(name), sound=True, icon=icon) except Exception as e: util.debug("[SC] trakt error: %s" % str(traceback.format_exc())) return
def manager(name, trakt, content): try: icon = sctop.infoLabel('ListItem.Icon') message = sctop.getString(30941).encode('utf-8') content = "movies" if content == 'movie' else "shows" post = {content: [{"ids": {"trakt": trakt}}]} trakt = int(trakt) relevant = sctop.getSettingAsBool('trakt.relevant_menu') items = [] if sctop.getSettingAsBool('trakt.collections'): key = 'trakt.collection.%s.ids' % content if relevant: ids = _get_cached_ids(key, '/users/me/collection/%s' % content) if not relevant or trakt not in ids: items = [(sctop.getString(30934).encode('utf-8'), '/sync/collection', key)] if not relevant or trakt in ids: items += [(sctop.getString(30935).encode('utf-8'), '/sync/collection/remove', key)] if sctop.getSettingAsBool('trakt.watchlist'): key = 'trakt.watchlist.%s.ids' % content if relevant: ids = _get_cached_ids(key, '/users/me/watchlist/%s' % content) if not relevant or trakt not in ids: items += [(sctop.getString(30936).encode('utf-8'), '/sync/watchlist', key)] if not relevant or trakt in ids: items += [(sctop.getString(30937).encode('utf-8'), '/sync/watchlist/remove', key)] items += [(sctop.getString(30989), 'rating')] lists = sctop.cache.get('trakt.lists') if not relevant or not lists: result = getTrakt('/users/me/lists') lists = json.loads(result) sctop.cache.set('trakt.lists', lists) util.debug("[SC] string %s" % sctop.getString(30939)) for lst in lists: key = 'trakt.lists.%s.%s.ids' % (lst['ids']['trakt'], content) if relevant: ids = _get_cached_ids( key, '/users/me/lists/%s/items/%s' % (lst['ids']['slug'], content)) if not relevant or trakt not in ids: items.append( ((sctop.getString(30939) % lst['name']).encode('utf-8'), '/users/me/lists/%s/items' % lst['ids']['slug'], key)) if not relevant or trakt in ids: items.append( ((sctop.getString(30940) % lst['name']).encode('utf-8'), '/users/me/lists/%s/items/remove' % lst['ids']['slug'], key)) items += [(sctop.getString(30938).encode('utf-8'), '/users/me/lists/%s/items')] if relevant: items.append( (sctop.getString(30811).encode('utf-8'), 'clear_cache')) select = sctop.selectDialog([i[0] for i in items], sctop.getString(30941).encode('utf-8')) if select == -1: return elif items[select][1] == 'rating': ratings = [(sctop.getString(i + 30990).encode('utf-8'), i) for i in range(10, -1, -1)] select = sctop.selectDialog([i[0] for i in ratings], str(name)) url = "/sync/ratings/remove" if select == -1: return elif ratings[select][1] != 0: url = "/sync/ratings" post[content][0]['rating'] = ratings[select][1] try: result = getTrakt(url, post=post) result = json.loads(result) except: return sctop.infoDialog(sctop.getString(30941).encode('utf-8'), heading=str(name), sound=True, icon='ERROR') if 'added' in result: if result['added'][content]: message = sctop.getString(30987).encode( 'utf-8') % ratings[select][1] else: return if 'deleted' in result: if result['deleted'][content]: message = sctop.getString(30988).encode('utf-8') else: return elif items[select][1] == '/users/me/lists/%s/items': t = sctop.getString(30938).encode('utf-8') k = sctop.keyboard('', t) k.doModal() new = k.getText() if k.isConfirmed() else None if (new == None or new == ''): return result = getTrakt('/users/me/lists', post={ "name": new, "privacy": "private" }) sctop.cache.set('trakt.lists', None, expiration=timedelta()) try: slug = json.loads(result)['ids']['slug'] except: return sctop.infoDialog(sctop.getString(30941).encode('utf-8'), heading=str(name), sound=True, icon='ERROR') result = getTrakt(items[select][1] % slug, post=post) elif items[select][1] == 'clear_cache': ttl = timedelta() sctop.cache.set('trakt.lists', None, expiration=ttl) contents = ['shows', 'movies'] for l in ['watchlist', 'collection']: for c in contents: key = 'trakt.%s.%s.ids' % (l, c) sctop.cache.set(key, None, expiration=ttl) result = getTrakt('/users/me/lists') lists = json.loads(result) for l in lists: for c in contents: key = 'trakt.lists.%s.%s.ids' % (l['ids']['trakt'], c) sctop.cache.set(key, None, expiration=ttl) message = sctop.getString(30812).encode('utf-8') name = sctop.getString(30941).encode('utf-8') else: result = getTrakt(items[select][1], post=post) key = items[select][2] if result and relevant: ids = sctop.cache.get(key) if type(ids) is list: if items[select][1][-7:] == '/remove': ids = [i for i in ids if i != trakt] else: ids.append(trakt) sctop.cache.set(key, ids) icon = icon if not result == None else 'ERROR' sctop.infoDialog(message, heading=str(name), sound=True, icon=icon) except Exception as e: util.debug("[SC] trakt error: %s" % str(traceback.format_exc())) return
def manager(name, trakt, content): try: icon = sctop.infoLabel('ListItem.Icon') message = sctop.getString(30941).encode('utf-8') content = "movies" if content == 'movie' else "shows" post = {content: [{"ids": {"trakt": trakt}}]} trakt = int(trakt) relevant = sctop.getSettingAsBool('trakt.relevant_menu') items = [] if sctop.getSettingAsBool('trakt.collections'): key = 'trakt.collection.%s.ids' % content if relevant: ids = _get_cached_ids(key, '/uses/me/collection/%s' % content) if not relevant or trakt not in ids: items = [(sctop.getString(30934).encode('utf-8'), '/sync/collection', key)] if not relevant or trakt in ids: items += [(sctop.getString(30935).encode('utf-8'), '/sync/collection/remove', key)] if sctop.getSettingAsBool('trakt.watchlist'): key = 'trakt.watchlist.%s.ids' % content if relevant: ids = _get_cached_ids(key, '/users/me/watchlist/%s' % content) if not relevant or trakt not in ids: items += [(sctop.getString(30936).encode('utf-8'), '/sync/watchlist', key)] if not relevant or trakt in ids: items += [(sctop.getString(30937).encode('utf-8'), '/sync/watchlist/remove', key)] items += [(sctop.getString(30989), 'rating')] lists = sctop.cache.get('trakt.lists') if not relevant or not lists: result = getTrakt('/users/me/lists') lists = json.loads(result) sctop.cache.set('trakt.lists', lists) util.debug("[SC] string %s" % sctop.getString(30939)) for lst in lists: key = 'trakt.lists.%s.%s.ids' % (lst['ids']['trakt'], content) if relevant: ids = _get_cached_ids( key, '/users/me/lists/%s/items/%s' % (lst['ids']['slug'], content)) if not relevant or trakt not in ids: items.append( ((sctop.getString(30939) % lst['name']).encode('utf-8'), '/users/me/lists/%s/items' % lst['ids']['slug'], key)) if not relevant or trakt in ids: items.append( ((sctop.getString(30940) % lst['name']).encode('utf-8'), '/users/me/lists/%s/items/remove' % lst['ids']['slug'], key)) items += [(sctop.getString(30938).encode('utf-8'), '/users/me/lists/%s/items')] if relevant: items.append((sctop.getString(30811).encode('utf-8'), 'clear_cache')) select = sctop.selectDialog([i[0] for i in items], sctop.getString(30941).encode('utf-8')) if select == -1: return elif items[select][1] == 'rating': ratings = [(sctop.getString(i + 30990).encode('utf-8'), i) for i in range(10, -1, -1)] select = sctop.selectDialog([i[0] for i in ratings], str(name)) url = "/sync/ratings/remove" if select == -1: return elif ratings[select][1] != 0: url = "/sync/ratings" post[content][0]['rating'] = ratings[select][1] try: result = getTrakt(url, post=post) result = json.loads(result) except: return sctop.infoDialog( sctop.getString(30941).encode('utf-8'), heading=str(name), sound=True, icon='ERROR') if 'added' in result: if result['added'][content]: message = sctop.getString(30987).encode( 'utf-8') % ratings[select][1] else: return if 'deleted' in result: if result['deleted'][content]: message = sctop.getString(30988).encode('utf-8') else: return elif items[select][1] == '/users/me/lists/%s/items': t = sctop.getString(30938).encode('utf-8') k = sctop.keyboard('', t) k.doModal() new = k.getText() if k.isConfirmed() else None if (new == None or new == ''): return result = getTrakt( '/users/me/lists', post={ "name": new, "privacy": "private" }) sctop.cache.set('trakt.lists', None, expiration=timedelta()) try: slug = json.loads(result)['ids']['slug'] except: return sctop.infoDialog( sctop.getString(30941).encode('utf-8'), heading=str(name), sound=True, icon='ERROR') result = getTrakt(items[select][1] % slug, post=post) elif items[select][1] == 'clear_cache': ttl = timedelta() sctop.cache.set('trakt.lists', None, expiration=ttl) contents = ['shows', 'movies'] for l in ['watchlist', 'collection']: for c in contents: key = 'trakt.%s.%s.ids' % (l, c) sctop.cache.set(key, None, expiration=ttl) result = getTrakt('/users/me/lists') lists = json.loads(result) for l in lists: for c in contents: key = 'trakt.lists.%s.%s.ids' % (l['ids']['trakt'], c) sctop.cache.set(key, None, expiration=ttl) message = sctop.getString(30812).encode('utf-8') name = sctop.getString(30941).encode('utf-8') else: result = getTrakt(items[select][1], post=post) key = items[select][2] if result and relevant: ids = sctop.cache.get(key) if type(ids) is list: if items[select][1][-7:] == '/remove': ids = [i for i in ids if i != trakt] else: ids.append(trakt) sctop.cache.set(key, ids) icon = icon if not result == None else 'ERROR' sctop.infoDialog(message, heading=str(name), sound=True, icon=icon) except Exception as e: util.debug("[SC] trakt error: %s" % str(traceback.format_exc())) return