def update_recent_tag(tag,cnt,api): #最近のタグを取得 recent_tag=RecentTag.get_or_insert(BbsConst.RECENT_TAG_KEY_NAME) #タグに対応するスレッドの数を更新 #if(not recent_tag.tag_list): # recent_tag.tag_list=[] #if(not recent_tag.score_list): # recent_tag.score_list=[] #try: # search_index=recent_tag.tag_list.index(tag) #except: # search_index=-1 #if(search_index!=-1): # recent_tag.tag_list.pop(search_index) # if(len(recent_tag.score_list)>search_index): # recent_tag.score_list.pop(search_index) #if(cnt>0): # recent_tag.tag_list.insert(0,tag) # recent_tag.score_list.insert(0,str(cnt)) #cnt=len(recent_tag.tag_list) #if(cnt>=100): # recent_tag.tag_list.pop(cnt-1) # recent_tag.score_list.pop(cnt-1) #recent_tag.put() #最近のタグリストの構築 tag_list=SearchTag.get_recent_tag_core(recent_tag,api) return tag_list
def get_tag_list(self,analytics): start_date=str(datetime.date.today()+datetime.timedelta(days=-7)) end_date=str(datetime.date.today()) result=analytics.get("tag","",start_date,end_date) if(len(result)<=0): #Treat GA error return recent_tag=RecentTag.get_or_insert(BbsConst.RECENT_TAG_KEY_NAME) recent_tag.tag_list=[] recent_tag.score_list=[] rank={} for one in result: url=one["ga:pagePath"] data=url.split("=") count=int(one["ga:pageviews"]) query=data[1] if(rank.has_key(query)): rank[query]=rank[query]+count else: rank[query]=count for k, v in sorted(rank.items(), key=lambda x:x[1], reverse=True): query=k search_found=SearchThread.get_count(query) recent_tag.tag_list.append(query) recent_tag.score_list.append(str(search_found)) recent_tag.put() memcache.delete(BbsConst.RECENT_TAG_CACHE_HEADER)
def get_recent_tag(api): data=memcache.get(BbsConst.RECENT_TAG_CACHE_HEADER) if(not data): recent_tag=None try: recent_tag=RecentTag.get_by_key_name(BbsConst.RECENT_TAG_KEY_NAME) except: recent_tag=None if(recent_tag==None): return None return SearchTag.get_recent_tag_core(recent_tag,api) return data