def get(self, me): """Who's pinterested in me?""" if 'unread' in request.values: key = 'users:%s:match:unread' % me unread = list(redis.smembers(key)) redis.delete(key) return unread else: return list(redis.smembers('users:%s:match' % me))
def pins(user=None, limit=5): user = None users = set() me = request.values.get('me') if me: users = redis.sdiff('users', 'users:%s:ugos' % me) else: users = redis.smembers('users') if users: # Filter by location. zipshort = redis.get('users:%s:zipshort' % me) users = users & redis.smembers('zipshort:%s' % zipshort) # Filter by sex. Yes, please. # This person wants my sex. sex_am = redis.get('users:%s:sex_am' % me) users = users & redis.smembers('sex_want:%s' % sex_am) # I want this person's sex. sex_want = redis.get('users:%s:sex_want' % me) users = users & redis.smembers('sex_am:%s' % sex_want) # Filter by users within my age range (+/- 10 years). try: age = int(redis.get('users:%s:birthyear' % me)) except ValueError: pass else: geezers = redis.zrangebyscore('birthyears', '-inf', age - 11) premies = redis.zrangebyscore('birthyears', age + 11, '+inf') users = users - set(geezers) - set(premies) if users: users = list(users) random.shuffle(users) users = users[:limit] data = [] remaining = len(users) for user in users: pins = get_pins(user) pins['remaining'] = remaining remaining -= 1 data.append(pins) print user # Nice to know. return data
def pins(user=None): user = None users = set() me = request.values.get('me') if me: users = redis.sdiff('users', 'users:%s:ugos' % me) else: users = redis.smembers('users') if users: # Filter by location. zipshort = redis.get('users:%s:zipshort' % me) users = users & redis.smembers('zipshort:%s' % zipshort) # Filter by sex. Yes, please. # This person wants my sex. sex_am = redis.get('users:%s:sex_am' % me) users = users & redis.smembers('sex_want:%s' % sex_am) # I want this person's sex. sex_want = redis.get('users:%s:sex_want' % me) users = users & redis.smembers('sex_am:%s' % sex_want) # Filter by users within my age range (+/- 10 years). try: age = int(redis.get('users:%s:birthyear' % me)) except ValueError: pass else: geezers = redis.zrangebyscore('birthyears', '-inf', age - 11) premies = redis.zrangebyscore('birthyears', age + 11, '+inf') users = users - set(geezers) - set(premies) if users: users = list(users) random.shuffle(users) user = users[0] print user # Nice to know. if user: pins = get_pins(user) pins['remaining'] = len(users) return pins else: return {}
def get_pins(user, force=False): pins = redis.smembers('users:%s:pins' % user) if force or not pins: print 'From pinterest ...' return download_pins(user) else: print 'From redis ...' return {'user': user, 'pins': list(pins)}
def get(self): ports = redis.smembers(self.key) ports = [int(port) for port in list(ports)] peers = set([('127.0.0.1', port) for port in ports]) # remove self myself = ('127.0.0.1', self.my_port) if myself in peers: peers.remove(myself) return peers
def get(self, user): def get_data(user): data = {} for field in ('sex_am', 'sex_want', 'zip', 'birthday'): data[field] = redis.get('users:%s:%s' % (user, field)) return data if user: # Return data for a single user. return get_data(user) else: # Return data for all users. data = {} for user in redis.smembers('users'): data[user] = get_data(user) return data
def build_synonyms(): for mood in moods: # Notice that the original mood word is returned by `synsets`. cached = redis.smembers('synonyms:%s' % mood) if cached: # This is already in redis DB, so we're good. mood_synonyms[mood] = cached else: synonyms = get_synonyms(mood) if mood in mood_roots: for root in mood_roots[mood]: synonyms += get_synonyms(root) # Make this a sorted alphabetical list of unique synonyms. synonyms = sorted(list(set(synonyms))) # Remove any blank values. synonyms = filter(None, synonyms) # Store it in redis DB, so we don't have to a lookup next time. for synonym in synonyms: redis.sadd('synonyms:%s' % mood, synonym) mood_synonyms[mood] = synonyms