def handle(self, *arg, **kwargs): # Grab the profile for supplied user name p = Profile.view(PROFILES_BY_USER_NAME_VIEW, key=kwargs['user_name']).first() if not p: raise CommandError('No profile named %s found' % kwargs['user_name']) subs = FeedSubscription.view(FEEDSUBSCRIPTION_BY_PROFILE_ID_VIEW, key=p._id).all() for s in subs: self.fetchSubscription(s)
def handle(self, *arg, **kwargs): # Grab the profile for supplied user name p = Profile.view(PROFILES_BY_USER_NAME_VIEW, key=kwargs['profile']).first() if not p: raise CommandError('No profile named %s found' % kwargs['profile']) sub = FeedSubscription.get_or_create('%s:%s' % ('FeedSubscription', kwargs['url'])) sub.feed_type = kwargs['type'] sub.profile_id = p._id sub.url = kwargs['url'] sub.link = kwargs['link'] sub.title = kwargs['title'] sub.save()
def handle(self, *arg, **kwargs): if len(arg) < 1: raise CommandError('OPML filename required') # Grab the profile for supplied user name p = Profile.view(PROFILES_BY_USER_NAME_VIEW, key=kwargs['user_name']).first() if not p: raise CommandError('No profile named %s found' % kwargs['user_name']) # Look up subscriptions for profile. subs = FeedSubscription.view(FEEDSUBSCRIPTION_BY_PROFILE_ID_VIEW, key=p._id).all() subs_by_url = dict((s.url, s) for s in subs) with open(arg[0]) as fin: entries = opml.get_subscriptions(fin) for entry in entries: url = unicode(entry['xmlurl']) if url in subs_by_url: sub = subs_by_url[url] print "Updating %s" % entry['title'] else: sub = FeedSubscription.get_or_create() print "Creating %s" % entry['title'] sub.profile_id = p._id sub.feed_type = 'rss' sub.url = url sub.link = entry['url'] sub.title = entry['title'] sub.parents = [x['title'] for x in entry['parents']] sub.save()
def handle(self, *arg, **kwargs): # Grab the profile for supplied user name p = Profile.view(PROFILES_BY_USER_NAME_VIEW, key=kwargs['user_name']).first() if not p: raise CommandError('No profile named %s found' % kwargs['user_name']) # Look up subscriptions for profile. subs = FeedSubscription.view(FEEDSUBSCRIPTION_BY_PROFILE_ID_VIEW, key=p._id).all() subs_by_url = dict((s.url, s) for s in subs) uid = kwargs['stream'] if uid.startswith('https://plus.google.com'): uid = uid.split('/')[3] lookup_url = LOOKUP_URL.format(uid) r = requests.get(lookup_url) ids = [line.split('"')[1] for line in r.content.split("\n") if line.startswith(',[[,,')] urls = [STREAM_URL.format(id, kwargs['apikey']) for id in ids] open(kwargs['output'], 'w').write("\n".join(urls)) for url in urls: r = requests.get(url) print "(%s) %s" % (r.status_code, url) if 200 != r.status_code: continue now = int(time.time() * 1000) stream = json.loads(r.content) if url in subs_by_url: sub = subs_by_url[url] print "Updating %s" % url else: sub = FeedSubscription.get_or_create() print "Creating %s" % url sub.profile_id = p._id sub.feed_type = 'as-json' sub.url = url sub.title = stream['title'] sub.link = len(stream['items']) and stream['items'][0]['actor']['url'] or url sub.last_fetch_time = now sub.save() hr_id = HttpResource.new_id(url) hr = HttpResource.get_or_create(hr_id) hr.url = url hr.status = r.status_code hr.headers = r.headers hr.last_fetch_time = now hr.save() hr.put_attachment(r.content, 'body', hr.headers['content-type'])