#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import logging import traceback from libs.tools import tzlc import time import re import datetime from trans2es.models.user import User from trans2es.models.topic import ExcellentTopic, TopicHomeRecommend class TopicTransfer(object): @classmethod def get_topic_data(cls, instance, is_excellect=False): try: res = dict() res["id"] = instance.id res["is_online"] = instance.is_online res["is_deleted"] = instance.is_deleted res["vote_num"] = instance.vote_num res["reply_num"] = instance.reply_num res["name"] = instance.name res["description"] = instance.description res["content"] = instance.content res["content_level"] = instance.content_level res["user_id"] = instance.user_id res["user_nick_name"] = User.get_user_nick_name(instance.user_id) try: res["user_nick_name_pre"] = res["user_nick_name"].lower() except: res["user_nick_name_pre"] = "" if instance.group: res["group_id"] = instance.group.id else: res["group_id"] = -1 res["share_num"] = instance.share_num res["pictorial_id"] = instance.get_pictorial_id() res["share_num"] = instance.share_num begin = time.time() res["pick_id_list"] = instance.get_pick_id_info() end = time.time() time0 = (end - begin) begin = time.time() (topic_tag_id_list, edit_tag_id_list) = instance.get_topic_tag_id_list() res["tag_list"] = topic_tag_id_list res["edit_tag_list"] = instance.get_edit_tag_id_list() end = time.time() time1 = (end - begin) begin = time.time() res["tag_name_list"] = instance.get_tag_name_list(res["tag_list"]) end = time.time() time2 = (end - begin) begin = time.time() res["offline_score"] = instance.get_topic_offline_score() end = time.time() time3 = (end - begin) begin = time.time() res["manual_score"] = instance.drop_score res["has_image"] = instance.topic_has_image() res["has_video"] = instance.has_video res["language_type"] = instance.language_type end = time.time() time4 = (end - begin) # begin = time.time() topic_useful_tag_id_list = instance.get_topic_useful_tag_id_list() res["useful_tag_list"] = topic_useful_tag_id_list latest_reply_time = instance.get_latest_reply_date() res["latest_reply_time"] = latest_reply_time # end = time.time() # time5 = (end - begin) # # 片假名 # re_jp_pian_words = re.compile(u"[\u30a0-\u30ff]+") # m_pian = re_jp_pian_words.search(instance.content, 0) # # # 平假名 # re_jp_ping_words = re.compile(u"[\u3040-\u309f]+") # m_ping = re_jp_ping_words.search(instance.content, 0) # if m_pian or m_ping: # res["language_type"] = 10 # else: # res["language_type"] = instance.language_type res["is_shadow"] = instance.is_shadow res["is_recommend"] = True if instance.is_recommend else False res["is_complaint"] = instance.is_complaint res["virtual_content_level"] = instance.virtual_content_level res["like_num_crawl"] = instance.like_num_crawl res["comment_num_crawl"] = instance.comment_num_crawl res["is_crawl"] = instance.is_crawl res["platform"] = instance.platform res["platform_id"] = instance.platform_id res["drop_score"] = instance.drop_score res["sort_score"] = instance.sort_score create_time = instance.create_time tzlc_create_time = tzlc(create_time) res["create_time"] = tzlc_create_time res["create_time_val"] = int(time.mktime(tzlc_create_time.timetuple())) update_time = instance.update_time tzlc_update_time = tzlc(update_time) res["update_time"] = tzlc_update_time res["update_time_val"] = int(time.mktime(tzlc_update_time.timetuple())) res["total_vote_num"] = instance.get_virtual_vote_num() + instance.vote_num if is_excellect: res["is_excellent"] = 1 else: # excelllect_object = ExcellentTopic.objects.filter(topic_id=instance.id).first() # if excelllect_object and excelllect_object.is_online and not excelllect_object.is_deleted: is_excellent = instance.judge_if_excellent_topic(instance.id) if is_excellent: res["is_excellent"] = 1 else: res["is_excellent"] = 0 res["is_operation_home_recommend"] = False operation_home_recommend = TopicHomeRecommend.objects.filter(topic_id=instance.id).first() if operation_home_recommend and operation_home_recommend.is_online and not operation_home_recommend.is_deleted: res["is_operation_home_recommend"] = True logging.info("test topic transfer time cost,time0:%d,time1:%d,time2:%d,time3:%d,time4:%d" % ( time0, time1, time2, time3, time4)) # 榜单关联的投票 res["related_billboard"] = instance.get_related_billboard() return res except: logging.error("catch exception,err_msg:%s" % traceback.format_exc()) return None