def get_topic_data(topic, start_ts, end_ts): result = {} if topic=='APEC': result['topic_name'] = 'APEC2014' else: result['topic_name'] = topic result['start_ts'] = ts2datetime(start_ts) result['end_ts'] = ts2datetime(end_ts - 3600 * 24) propagate_peak = get_propagate_peak(topic, start_ts, end_ts) result['propagate_peak'] = json2list('propagate_peak', propagate_peak) propagate_peak_news = get_propagate_peak_news(topic, start_ts, end_ts) result['propagate_peak_news'] = json2list('propagate_peak_news', propagate_peak_news) propagate_keywords = get_propagate_keywords(topic, start_ts, end_ts) result['propagate_keywords'] = json2str('propagate_keywords' , propagate_keywords) identify_firstuser = get_identify_firstuser(topic, start_ts, end_ts) result['identify_firstuser'] = json2str('identify_firstuser', identify_firstuser) identify_trendpusher = get_identify_trendpusher(topic, start_ts, end_ts) result['identify_trendpusher'] = json2str('identify_trendpusher', identify_trendpusher) identify_pagerank = get_identify_pagerank(topic, start_ts, end_ts) result['identify_pagerank'] = json2str('identify_pagerank', identify_pagerank) result['evolution_topcity'] = get_evolution_topcity(topic, start_ts, end_ts) result['moodlens_sentiment'] = get_moodlens_sentiment(topic, start_ts, end_ts) result['moodlens_keywords'] = get_moodlens_keywords(topic, start_ts, end_ts) result['moodlens_peak'] = get_moodlens_peak(topic, start_ts, end_ts) #result['news_fishbone'] = get_news_fishbone() topic_abstract = get_topic_abstract(topic, start_ts, end_ts, result['moodlens_sentiment'], propagate_keywords, result['evolution_topcity']) result['topic_abstract'] = topic_abstract['abstract'] return result
def get_topic_abstract(topic_name, start_ts, end_ts, sentiment, keywords, city): results = {} # 没有数据--js中写进去的数据 # 事件发生时间、事件发生地点 # compute: 舆情信息起止时间、参与人数、舆情信息累积数、参与人群集中地点、关键词、网民情绪占比 start_date = ts2datetime(start_ts) results['info_start'] = start_date end_date = ts2datetime(end_ts) results['info_end'] = end_date user_count, weibo_count = get_info_num(topic_name) results['user_count'] = user_count results['weibo_count'] = weibo_count sentiment_allcount = 0 sentiment_ratio = {} for sentiment_item in sentiment: sentiment_allcount += sentiment[sentiment_item] for item in sentiment: sentiment_ratio[item] = sentiment[item] / (float(sentiment_allcount)) results['sentiment_ratio'] = sentiment_ratio sort_keywords = sorted(keywords.iteritems(), key=lambda x:x[1], reverse=True) results['keywords'] = sort_keywords city_list = [] for k in city: city_list.append(k[0]) results['city'] = city_list abstract = creat_abstract(results) return abstract
def network_quota(): quota = request.args.get('quota','') print 'quota:', quota topic = request.args.get('topic','') start_ts = request.args.get('start_ts','') start_ts = int(start_ts) end_ts = request.args.get('end_ts','') end_ts = int(end_ts) date = ts2datetime(end_ts) windowsize = (end_ts - start_ts ) / Day network_type = request.args.get('network_type', '') print 'network_type:', network_type key = _utf8_unicode(topic)+'_'+str(date)+'_'+str(windowsize)+'_'+quota+'_'+network_type try: ssdb = SSDB(SSDB_HOST, SSDB_PORT) value = ssdb.request('get',[key]) print 'value.code:', value.code if value.code == 'ok' and value.data: print 'ok' response = make_response(value.data) return response return None except Exception, e: print e return None
def network(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) windowsize = (end_ts - start_ts)/Day windowsize = int(windowsize) end = ts2datetime(end_ts) network_type = request.args.get('network_type', '') module = 'identify' print 'topic, end_ts, windowsize, network_type:', topic.encode('utf-8'), end, windowsize,network_type topic_status = get_topic_status(topic, start_ts, end_ts, module) print 'graph_status:', topic_status if topic_status == COMPLETED_STATUS: query_key =_utf8_unicode(topic) + '_' + str(end) + '_' + str(windowsize) + '_' + network_type print 'key:', query_key.encode('utf-8') key = str(query_key) try: ssdb = SSDB(SSDB_HOST, SSDB_PORT) results = ssdb.request('get', [key]) print 'results.code:', results.code if results.code == 'ok' and results.data: print 'result_code ok' response = make_response(results.data) response.headers['Content-Type'] = 'text/xml' return response return None except Exception, e: print 'error',e return None
def get_identify_trendpusher(topic, start_ts, end_ts): results = [] windowsize = (end_ts - start_ts) / Day date = ts2datetime(end_ts) trenduser_table = read_trend_user_table(topic, date, windowsize) if not trenduser_table: return [] results = trenduser_table[1][1:] return results
def get_identify_pagerank(topic, start_ts, end_ts): results = {} topn = 10 rank_method = 'spark_pagerank' domain = 'all' windowsize = (end_ts - start_ts) / Day date = ts2datetime(end_ts) results = read_topic_rank_results(topic, topn, rank_method, date, windowsize, domain) return results
def trend_user(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts','') end_ts = int(end_ts) date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day results = read_trend_user_table(topic, date, windowsize) #print 'trend_user:', results return json.dumps(results)
def get_identify_firstuser(topic, start_ts, end_ts): results = [] windowsize = (end_ts - start_ts) / Day date = ts2datetime(end_ts) top_n = 20 firstuser_table = read_table_fu(topic, date, windowsize, top_n) if len(firstuser_table)==1: return [] results = firstuser_table[0] return results
def network_uid_weibos(): uid = request.args.get('uid', '') topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day results = read_uid_weibos(topic, date, windowsize, uid) return json.dumps(results)
def network_domain_first_user(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) domain = request.args.get('domain','') rank_method = request.args.get('rank_method','') date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day results = time_domain_top_user(topic, date, windowsize, domain, rank_method) return json.dumps(results)
def table_fu(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts','') start_ts = int(start_ts) end_ts = request.args.get('end_ts','') end_ts = int(end_ts) top_n = request.args.get('topn','') date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day results = read_table_fu(topic, date, windowsize, top_n) return json.dumps(results)
def trend_makers(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) rank_method = request.args.get('rank_method', '') # content, timestamp,reposts_count, friends_count, statuses_count date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day results = read_trend_maker(topic, date, windowsize, rank_method) #print 'trend_maker:',results return json.dumps(results)
def trend_pushers(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) rank_method = request.args.get('rank_method', '') date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day results = read_trend_pusher(topic, date, windowsize, rank_method) #print 'trend_pusher:', results return json.dumps(results)
def closeness_centrality_rank(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) windowsize = (end_ts - start_ts ) / Day date = ts2datetime(end_ts) topn = request.args.get('topn', 100) topn = int(topn) domain = request.args.get('domain', 'all') results = read_closeness_centrality_rank(topic, topn, date, windowsize, domain) return json.dumps(results)
def network_first_user(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) rank_method = request.args.get('rank_method','') date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day results = time_top_user(topic, date, windowsize, rank_method) #print 'view-len(results):', len(results) #print 'results[0]:', results[0] return json.dumps(results)
def neighbor_weibo_by_ts(): uid = request.args.get('uid', '') # uid 在网络节点以str形式存放 topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day network_type = request.args.get('network_type', 'source_graph') rank_method = request.args.get('rank_method', 'timestamp') results = n_weibo_by_ts(topic, date, windowsize, uid, network_type, rank_method) return json.dumps(results)
def ds_network_pr_rank(): topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) windowsize = (end_ts - start_ts) / Day topn = request.args.get('topn', 100) topn = int(topn) domain = request.args.get('domain','all') date = ts2datetime(end_ts) rank_method = 'spark_pagerank' results = read_ds_topic_rank_results(topic, topn, date, windowsize, domain, rank_method) return json.dumps(results)
def network_uid_community(): uid = request.args.get('uid', '') # uid 在网络节点以str形式存放 topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day network_type = request.args.get('network_type', 'source_graph') community_id = request.args.get('community_id', '') community_id = int(community_id) results = read_uid_community(topic, date, windowsize, uid, network_type, community_id) return json.dumps(results)
def network_uid_neighbor(): uid = request.args.get('uid', '') #print 'uid:', uid uid = int(uid) topic = request.args.get('topic', '') start_ts = request.args.get('start_ts', '') start_ts = int(start_ts) end_ts = request.args.get('end_ts', '') end_ts = int(end_ts) date = ts2datetime(end_ts) windowsize = (end_ts - start_ts) / Day network_type = request.args.get('network_type','source_graph') # network_type="source_graph" or 'direct_superior_graph' results = read_uid_neighbors(topic, date, windowsize , uid, network_type) return json.dumps(results)