def get_predicted_pageviews(srs, start, end): srs, is_single = tup(srs, ret_is_single=True) sr_names = [sr.name for sr in srs] # default subreddits require a different inventory factor content_langs = [g.site_lang] default_srids = Subreddit.top_lang_srs(content_langs, limit=g.num_default_reddits, filter_allow_top=True, over18=False, ids=True) # prediction does not vary by date daily_inventory = PromoMetrics.get(MIN_DAILY_CASS_KEY, sr_names=sr_names) dates = get_date_range(start, end) ret = {} for sr in srs: if not isinstance(sr, FakeSubreddit) and sr._id in default_srids: factor = DEFAULT_INVENTORY_FACTOR else: factor = INVENTORY_FACTOR sr_daily_inventory = daily_inventory.get(sr.name, 0) * factor sr_daily_inventory = int(sr_daily_inventory) ret[sr.name] = dict.fromkeys(dates, sr_daily_inventory) if is_single: return ret[srs[0].name] else: return ret
def get_traffic_weights(srnames): from r2.models.traffic import PageviewsBySubreddit # the weight is just the last 7 days of impressions (averaged) def weigh(t, npoints=7): if t and len(t) > 1: t = [y[1] for x, y in t[-npoints - 1:-1]] return max(float(sum(t)) / len(t), 1) return 1 default_traffic = [ weigh(PageviewsBySubreddit.history("day", sr.name)) for sr in Subreddit.top_lang_srs('all', 10) ] default_traffic = (float(max(sum(default_traffic), 1)) / max(len(default_traffic), 1)) res = {} for srname in srnames: if srname: res[srname] = (default_traffic / weigh(PageviewsBySubreddit.history("day", sr.name))) else: res[srname] = 1 return res
def get_traffic_weights(srnames): from r2.models.traffic import PageviewsBySubreddit # the weight is just the last 7 days of impressions (averaged) def weigh(t, npoints=7): if t and len(t) > 1: t = [y[1] for x, y in t[-npoints - 1:-1]] return max(float(sum(t)) / len(t), 1) return 1 default_traffic = [weigh(PageviewsBySubreddit.history("day", sr.name)) for sr in Subreddit.top_lang_srs('all', 10)] default_traffic = (float(max(sum(default_traffic), 1)) / max(len(default_traffic), 1)) res = {} for srname in srnames: if srname: res[srname] = (default_traffic / weigh(PageviewsBySubreddit.history("day", sr.name))) else: res[srname] = 1 return res