put rising links into the organic window and stop rearranging the normalized view

This commit is contained in:
steveh
2008-07-24 12:09:35 -07:00
parent 3fbfa37914
commit 29af2ffe14
2 changed files with 23 additions and 15 deletions

View File

@@ -83,30 +83,23 @@ def get_hot(sr):
return res
def only_recent(items):
return filter(lambda l: l._date > utils.timeago('%d day' % g.HOT_PAGE_AGE),
items)
@memoize('normalize_hot', time = g.page_cache_time)
def normalized_hot_cached(sr_ids):
results = []
srs = Subreddit._byID(sr_ids, data = True, return_dict = False)
for sr in srs:
#items = get_hot(sr)
items = filter(lambda l: l._date > utils.timeago('%d day' % g.HOT_PAGE_AGE),
get_hot(sr))
items = only_recent(get_hot(sr))
if not items:
continue
top_score = max(items[0]._hot, 1)
top, rest = items[:2], items[2:]
if top:
normals = [l._hot / top_score for l in top]
results.extend((l, random.choice(normals)) for l in top)
#random.shuffle(normals)
#results.extend((l, normals.pop()) for l in top)
if rest:
results.extend((l, l._hot / top_score) for l in rest)
if items:
results.extend((l, l._hot / top_score) for l in items)
results.sort(key = lambda x: (x[1], x[0]._hot), reverse = True)
return [l[0]._fullname for l in results]

View File

@@ -21,9 +21,11 @@
################################################################################
from r2.models import *
from r2.lib.memoize import memoize
from r2.lib.normalized_hot import is_top_link
from r2.lib.normalized_hot import is_top_link, get_hot, only_recent
from r2.lib import count
import random
from pylons import g
cache = g.cache
@@ -43,9 +45,22 @@ def cached_organic_links(username):
sr_count = count.get_link_counts()
srs = Subreddit.user_subreddits(user)
#only use links from reddits that you're subscribed to
link_names = filter(lambda n: sr_count[n][1] in srs, sr_count.keys())
link_names.sort(key = lambda n: sr_count[n][0])
#potentially add a up and coming link
if random.choice((True, False)):
sr = Subreddit._byID(random.choice(srs))
items = only_recent(get_hot(sr))
if items:
if len(items) == 1:
new_item = items[0]
else:
new_item = random.choice(items[1:4])
link_names.insert(0, new_item._fullname)
builder = IDBuilder(link_names, num = 30, skip = True, keep_fn = keep_link)
links = builder.get_items()[0]
cache.set(pos_key(user), 0)