コード例 #1
0
ファイル: views.py プロジェクト: huxiaoqian/project
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})
コード例 #2
0
ファイル: views.py プロジェクト: huxiaoqian/project
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)
コード例 #3
0
ファイル: views.py プロジェクト: huxiaoqian/project
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)
コード例 #4
0
ファイル: views.py プロジェクト: huxiaoqian/project
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)
コード例 #5
0
ファイル: views.py プロジェクト: huxiaoqian/project
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("/")
コード例 #6
0
ファイル: views.py プロジェクト: huxiaoqian/project
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