def profile_group_status_count(fieldEnName): start_ts = request.args.get('start_ts', None) end_ts = request.args.get('end_ts', None) if not start_ts or not end_ts: start_ts, end_ts = _time_zone(_utf_encode(default_timerange)) if start_ts: start_ts = int(start_ts) if end_ts: end_ts = int(end_ts) interval = (end_ts - start_ts) / (24 * 3600) + 1 datestr = ts2datetimestr(end_ts) # '20130907' date_list = last_week_to_date(datestr, interval) domainid = DOMAIN_LIST.index(fieldEnName) time_arr = [] total_arr = [] repost_arr = [] fipost_arr = [] for datestr in date_list: active, important, reposts, original = getDomainCountData(domainid, datestr) sumcount = reposts + original time_arr.append(ts2date(datetimestr2ts(datestr)).isoformat()) total_arr.append(sumcount) repost_arr.append(reposts) fipost_arr.append(original) return json.dumps({'time': time_arr, 'count': total_arr, 'repost': repost_arr, 'fipost': fipost_arr})
def profile_group_location(fieldEnName): domainid = DOMAIN_LIST.index(fieldEnName) datestr = '20130901' verified_count, unverified_count, province_dict = 0, 0, {} _verified_count, _unverified_count, _province_dict = getDomainBasic(domainid, datestr) verified_count = int(_verified_count) unverified_count = int(_unverified_count) province_dict = _province_dict city_count = province_dict results = province_color_map(city_count) return json.dumps(results)
def profile_group_topic(fieldEnName): if request.method == 'GET' and fieldEnName: result_arr = [] sort = request.args.get('sort', 'prob') topic_type = request.args.get('topic_type', 'freq') limit = request.args.get('limit', 50) if limit: limit = int(limit) window_size = request.args.get('window_size', 24 * 60 * 60) if window_size: window_size = int(window_size) start_ts = request.args.get('start_ts', None) end_ts = request.args.get('end_ts', None) if not start_ts or not end_ts: start_ts, end_ts = _time_zone(_utf_encode(default_timerange)) if start_ts: start_ts = int(start_ts) if end_ts: end_ts = int(end_ts) interval = (end_ts - start_ts) / (24 * 3600) + 1 datestr = ts2datetimestr(end_ts) # '20130907' domainid = DOMAIN_LIST.index(fieldEnName) date_list = last_week_to_date(datestr, interval) keywords_dict = {} for datestr in date_list: _keywords_dict = getDomainKeywordsData(domainid, datestr) for k, v in _keywords_dict.iteritems(): try: keywords_dict[k] += v except KeyError: keywords_dict[k] = v if topic_type == 'freq': keywords_sorted = sorted(keywords_dict.iteritems(), key=lambda(k, v): v, reverse=False) top_keywords = keywords_sorted[len(keywords_sorted)-limit:] result_arr = [{'text': k, 'size': float(v)} for k, v in top_keywords] return json.dumps({'status': 'current finished', 'data': result_arr}) else: return json.dumps([]) return json.dumps(result_arr)
def profile_group_verify(fieldEnName): domainid = DOMAIN_LIST.index(fieldEnName) datestr = '20130901' verified_count, unverified_count, province_dict = 0, 0, {} _verified_count, _unverified_count, _province_dict = getDomainBasic(domainid, datestr) verified_count = int(_verified_count) unverified_count = int(_unverified_count) province_dict = _province_dict result_list = '' if verified_count + unverified_count > 0: sumcount = verified_count + unverified_count result_list = str(verified_count) + ',' + str(unverified_count) + ',' + str(int(verified_count * 100 / sumcount) / 100.00) + ',' + str(1 - int(verified_count * 100 / sumcount) / 100.00) return json.dumps(result_list)
def area(): default_timerange = get_default_timerange() default_field_enname, default_field_zhname = get_default_field_name() default_field_dict = get_default_field_dict() if "logged_in" in session and session["logged_in"]: if session["user"] == "admin": request_method = request.method if request_method == "GET": return render_template( "identify/area.html", from_external=True, timerange=default_timerange, field_dict=default_field_dict, default_field_zh=default_field_zhname, default_field_en=default_field_enname, ) elif request_method == "POST": form = request.form action = form.get("action", "run") top_n = int(form.get("top_n", 500)) if top_n > 500: top_n = 500 page_num = int(form.get("page_num", 20)) rank_method = form.get("rank_method", "important") during_date = form.get("window_size", default_timerange) during_date = _utf_encode(during_date) start_ts, end_ts = _time_zone(during_date) window_size = (end_ts - start_ts) / (24 * 3600) field = form.get("field", default_field_enname) field_id = DOMAIN_LIST.index(field) if action == "previous_rank": action = "rank" if action == "rank": current_date = ts2datetime(end_ts - 24 * 3600) previous_date = ts2datetime(start_ts - 24 * 3600) data = area_caculate(current_date, window_size, rank_method, top_n, field_id) previous_data = area_caculate(previous_date, window_size, rank_method, top_n, field_id) index = dict() for i in range(0, len(data)): # 比较上期结果 flag = 0 for j in range(0, len(previous_data)): if previous_data[j][1] == data[i][1]: flag = 1 compare = previous_data[j][0] - data[i][0] index[previous_data[j][1]] = j break if flag == 0: compare = 0 data[i].append(compare) pre_data = [] for i in range(0, len(previous_data)): if index.has_key(previous_data[i][1]): pass else: pre_data.append(previous_data[i]) return json.dumps({"status": "current finished", "data": data, "pre_data": pre_data}) elif action == "run": during_date = _utf_decode(during_date.strip()) return render_template( "identify/area.html", rank_method=rank_method, during_date=during_date, top_n=top_n, page_num=page_num, field=field, timerange=default_timerange, field_dict=default_field_dict, default_field_zh=default_field_zhname, default_field_en=default_field_enname, ) else: return redirect("/") else: return redirect("/")
from weibo.global_config import DOMAIN_LIST, DOMAIN_ZH_LIST, emotions_kv from flask import Blueprint, render_template, request, session, redirect mod = Blueprint('moodlens', __name__, url_prefix='/moodlens') Minute = 60 Fifteenminutes = 15 * Minute Hour = 3600 SixHour = Hour * 6 Day = Hour * 24 MinInterval = Fifteenminutes FIELDS2ID = {} FIELDS2ZHNAME = {} for key in DOMAIN_LIST: idx = DOMAIN_LIST.index(key) FIELDS2ID[key] = idx FIELDS2ZHNAME[key] = DOMAIN_ZH_LIST[idx] def get_default_timerange(): return u'9月 22日,2013 - 9月 22日,2013' def get_default_field_dict(): #获取默认字段字典 field_dict = {} for idx, field_en in enumerate(DOMAIN_LIST[9:20]): #enumerate既要遍历索引又要遍历元素 field_dict[field_en] = DOMAIN_ZH_LIST[idx+9] return field_dict