Example #1
0
def analyse_artivle_url():
    try:
        req_data = json.loads(request.data)
        url = req_data['url']
        # user_id = req_data['openid']
        result = wenzhi_utils.wenzhi_analyse_url(url)
        # topic_list = tagging_utils.passage_second_level_classify(web_content)
        tag_result = []
        if result['code'] == 0:
            for class_item in result['classes']:
                class_type = class_item['class']
                class_prob = class_item['conf']
                tag_result.append({'tag': class_type, 'prob': class_prob})
        return json.dumps({'code': 0, 'tag_result': tag_result}, ensure_ascii=False)
    except Exception, e:
        print e
        # print result
        return json.dumps({'code': 1, 'msg': 'unknown error, details = %s' % str(e)})
    # a_id = article_id
    reaction_type = 'read'
    try:
        inst_user = DAO_utils.mongo_get_user(user_id, admin_id)
    except DAO_utils.DAOException, de:
        print de
        # 数据库中不存在该用户,则新建一个
        inst_user = WechatUser(user_id=user_id, admin_id=admin_id)
        DAO_utils.mongo_insert_user(inst_user)

    user_atag_vec = inst_user.user_atag_vec
    user_tag_score_vec = inst_user.user_tag_score_vec

    weight = reaction_type_weight[reaction_type]
    try:
        a_tag_info = wenzhi_utils.wenzhi_analyse_url(article_url)

        # article = DAO_utils.mongo_get_article(a_id)
        for a_tag in a_tag_info['classes']:  # 文章的tags应该是一个dict
            a_tag_key = a_tag['class']
            if a_tag_key in user_atag_vec:
                user_atag_vec[a_tag_key] += weight * a_tag['conf']
            else:
                user_atag_vec[a_tag_key] = weight * a_tag['conf']
    except DAO_utils.DAOException, de:
        print de
        return {'code': 1, 'msg': 'error, details=%s' % de}
        # continue  # 没有该文章在数据库中,则跳过

    # 用户的atag_vec处理完毕,开始处理user_tag_score_vec
    # TODO 更好的权值赋值公式