def setFeedUser(self,feed,user): key = 'feed_users_' + feed.addonID users = ShareSocial.getSetting(key,[]) for u in users: if user.get('id') == self.decodeUser(u).get('id'): return users.append(self.encodeUser(user)) ShareSocial.setSetting(key,users)
def removeUser(self): feed = True while feed: menu = ShareSocial.ChoiceMenu('Remove Users: Choose Feed') for f in self.feeds: show = '' users = ShareSocial.getSetting('feed_users_' + f.addonID,[]) if not users: continue sh = [] us = [] for u in users: user = self.decodeUser(u) sh.append(user.get('name','ERROR')) us.append(user) show = ' (%s)' % ', '.join(sh) menu.addItem((f,us),f.name + show) if not menu.items: xbmcgui.Dialog().ok('No Users','No users to remove :)') return feed_users = menu.getResult() if not feed_users: return feed, users = feed_users submenu = ShareSocial.ChoiceMenu('Remove Users: Choose User') for u in users: submenu.addItem(u,u.get('name','ERROR')) user = submenu.getResult() if not user: return self.removeFeedUser(feed, user)
def fillFeedList(self,results=None): #TODO: clean this up so I don't need this sorta crap passed_results = results and True or False if not self.feeds: return items = {} ct = 1 if not results: blocked = ShareSocial.getSetting('blocked_feeds',[]) pool = ArrayPool() for f in self.feeds: if f.addonID in blocked: continue pcall = f.getProvideCall() pool.addJob(f.provideWithCall,f,'feed',pcall,self.getFeedUserIDs(f)) fct = len(self.feeds) afterpct = int((fct * 100.0) / (fct + 1)) left = float(100 - afterpct) dialog = xbmcgui.DialogProgress() dialog.create('Getting Feeds') now = time.daylight and (time.time() + time.altzone + 3600) or int(time.mktime(time.gmtime())) try: if not results: results = pool.getResult(dialog) self.provisions = results c=0 for result in results: if not result.target: continue if not result or result._error: if result: LOG('No result for feed: %s - %s' % (result.target.name,result._error)) else: LOG('No result for feed') c+=1 continue lastpct = int((c * left) / fct) dialog.update(afterpct + lastpct,result.target.name,'Preparing feed...') feedIcon = result.target.getIcon() #print '%s : %s' % (result.target.name, feedIcon) c+=1 for r in result.items: item = FeedListItem(r) item.setProperty('feedicon',feedIcon) item.setProperty('ago',durationToShortText(now - item.timestamp) + ' ago') items[item.timestamp + (1.0/ct)] = item #add decimal to make unique ct+=1 keys = items.keys() keys.sort(reverse=True) self.feedList.reset() for k in keys: #print "%s - %s" % (k,durationToShortText(now - items[k].timestamp)) self.feedList.addItem(items[k]) if not keys: fi = FeedListItem(None) fi.setLabel('[CR]NO FEEDS') self.feedList.addItem(fi) elif not passed_results: self.save() finally: dialog.close()
def removeFeedUser(self,feed,user): key = 'feed_users_' + feed.addonID users = ShareSocial.getSetting(key,[]) i = 0 for u in users: if self.decodeUser(u).get('id') == user.get('id'): users.pop(i) ShareSocial.setSetting(key,users) return i+=1
def showHideFeedMenu(self): feed = True while feed: menu = ShareSocial.ChoiceMenu('Toggle Visibility') feedlist = ShareSocial.getSetting('blocked_feeds',[]) for f in self.feeds: blocked = '' if f.addonID in feedlist: blocked = ' [HIDDEN]' menu.addItem(f, f.name + blocked, f.iconPath) feed = menu.getResult() if not feed: return if feed.addonID in feedlist: self.showFeed(feed) else: self.hideFeed(feed)
def setUser(self): feed = True while feed: menu = ShareSocial.ChoiceMenu('Add Users: Choose Feed') for f in self.feeds: show = '' users = ShareSocial.getSetting('feed_users_' + f.addonID,[]) if users: sh = [] for u in users: sh.append(self.decodeUser(u).get('name','ERROR')) show = ' (%s)' % ', '.join(sh) menu.addItem(f,f.name + show) feed = menu.getResult() if not feed: return submenu = ShareSocial.ChoiceMenu('Add Users: Choose User') for u in feed.functions().getUsers(): submenu.addItem(u,u.get('name','ERROR')) user = submenu.getResult() if not user: return self.setFeedUser(feed, user)
def showFeed(self,feed): feedlist = ShareSocial.getSetting('blocked_feeds',[]) if feed.addonID in feedlist: feedlist.pop(feedlist.index(feed.addonID)) ShareSocial.setSetting('blocked_feeds',feedlist)
def hideFeed(self,feed): feedlist = ShareSocial.getSetting('blocked_feeds',[]) if feed.addonID in feedlist: return feedlist.append(feed.addonID) ShareSocial.setSetting('blocked_feeds',feedlist)
def getFeedUserIDs(self,feed): users = ShareSocial.getSetting('feed_users_' + feed.addonID,[]) IDs = [] for u in users: IDs.append(self.decodeUser(u).get('id')) return IDs