Commit e43657fb authored by 李小芳's avatar 李小芳

同步

parent ca58ff10
......@@ -5,6 +5,7 @@ import logging
import traceback
import datetime
import time
from utils.pic import PictureTools
import redis, json
from cached_property import cached_property
from collections import defaultdict
......@@ -401,6 +402,15 @@ class QuestionTagV3(models.Model):
tag_v3_id = models.IntegerField(verbose_name="标签V3", db_index=True)
class QuestionTagV4(models.Model):
class Meta:
db_table = 'api_question_tag_v4'
app_label = "qa"
question_id = models.IntegerField(verbose_name="问题id", db_index=True)
tag_v4_id = models.IntegerField(verbose_name="标签V4", db_index=True)
class QuestionVote(models.Model):
class Meta:
app_label = 'qa'
......@@ -556,6 +566,51 @@ class Answer(models.Model):
}
return data
@property
def cover_is_dynamic(self):
# video_cover_list -> question_videos -> answer.cover_url -> header_images ->
# intact_answer_images -> _question_intact_question_images
from qa.manager.answer_manager import AnswerManager
from qa.manager.qa_media_manager import answer_media, question_media
answer_text_dic = {self.id: self.content}
answer_videos_dic = answer_media.get_qa_videos(answer_text_dic, source_type=VIDEO_SOURCE_TYPE.ANSWER)
if answer_videos_dic.get(self.id):
return True
question_text_dic = {self.question_id: self.question.content}
question_videos_dic = question_media.get_qa_videos(question_text_dic, source_type=VIDEO_SOURCE_TYPE.QUESTION)
if question_videos_dic.get(self.question_id):
return True
if PictureTools.is_dynamic(self.cover_url):
return True
answer_header_image_dict = AnswerManager.get_header_imgs_by_ids([self.id])
if answer_header_image_dict:
imgs = answer_header_image_dict.get(self.id, []) or []
if imgs and (imgs[0].get('image_webp') or
PictureTools.is_dynamic(imgs[0].get('image_url') or imgs[0].get('image'))):
return True
answer_images_dic = answer_media.get_qa_images(answer_text_dic, image_url_sources=[VIDEO_SOURCE_TYPE.ANSWER])
if answer_images_dic:
imgs = answer_images_dic.get(self.id, []) or []
if imgs and (imgs[0].get('image_webp') or
PictureTools.is_dynamic(imgs[0].get('image_url') or imgs[0].get('image'))):
return True
question_images_dic = question_media.get_qa_images(question_text_dic,
image_url_sources=[VIDEO_SOURCE_TYPE.QUESTION])
if question_images_dic:
imgs = question_images_dic.get(self.question_id, []) or []
if imgs and (imgs[0].get('image_webp') or
PictureTools.is_dynamic(imgs[0].get('image_url') or imgs[0].get('image'))):
return True
return False
@staticmethod
def has_video(answer):
......@@ -983,7 +1038,7 @@ class Answer(models.Model):
n_days = today - delta
data = StrategyContentExposureIndex.objects.using(settings.DORIS_DB_NAME).filter(
create_day=n_days, card_id=answer_id, card_content_type="answer").first()
if data and data.ctr >= 0.05 and data.preciseexposure_num >= 50 and data.avg_page_stay >= 20:
if data.ctr >= 0.05 and data.preciseexposure_num >= 50 and data.avg_page_stay >= 20:
return 0 # 0是正常展示 1不展示
else:
return 1
......@@ -998,18 +1053,14 @@ class Answer(models.Model):
delta_30 = datetime.timedelta(days=30)
delta_90 = datetime.timedelta(days=90)
delta_365 = datetime.timedelta(days=365)
if create_time:
if delta_30 and d2 - delta_30 <= create_time:
if d2 - delta_30 <= create_time:
return 30
elif delta_90 and d2 - delta_90 <= create_time:
elif d2 - delta_90 <= create_time:
return 90
elif delta_365 and d2 - delta_365 <= create_time:
elif d2 - delta_365 <= create_time:
return 365
else:
return 1000
else:
return 1000
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return 1000
......@@ -1099,6 +1150,15 @@ class AnswerTagV3(models.Model):
tag_v3_id = models.IntegerField(verbose_name="标签V3", db_index=True)
class AnswerTagV4(models.Model):
class Meta:
db_table = 'api_answer_tag_v4'
app_label = "qa"
answer_id = models.IntegerField(verbose_name="回答id", db_index=True)
tag_v4_id = models.IntegerField(verbose_name="标签V4", db_index=True)
class AnswerAttrTagV3(models.Model):
class Meta:
db_table = 'api_answer_v3_attr_tag'
......
......@@ -18,6 +18,7 @@ from gm_types.mimas import (
MEDIA_IMAGE_URL_SOURCE,
IMAGE_TYPE,
TRACATE_VIDEO_URL_SOURCE,
TRACTATE_COVER_TYPE,
)
from data_sync.utils import to_epoch, tzlc
from gm_upload import ImgUrlField, IMG_TYPE
......@@ -30,6 +31,7 @@ from gm_types.gaia import (
)
from talos.cache.base import tractate_pv_cache, tractate_favor_count_cache, tractate_vote_count_cache
from utils.rpc import RPCMixin
from utils.pic import PictureTools
doris_redis_client = redis.StrictRedis.from_url(settings.REDIS_URL)
......@@ -80,6 +82,9 @@ class Tractate(models.Model):
platform_id = models.CharField(verbose_name=u"数据来源id", max_length=125, db_index=True)
pgc_type = models.SmallIntegerField(verbose_name='pgc类别', choices=PGC_TYPE, default=PGC_TYPE.DDEFAULT)
cover_url = models.CharField('封面地址', max_length=256, default='')
cover_type = models.IntegerField('封面类型', choices=TRACTATE_COVER_TYPE, default=TRACTATE_COVER_TYPE.NO_COVER)
can_optimize = models.BooleanField('是否可进行优化', default=False)
@property
def view_amount(self):
......@@ -172,6 +177,27 @@ class Tractate(models.Model):
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return 0
@property
def cover_is_dynamic(self):
if self.cover_url:
if self.cover_type == TRACTATE_COVER_TYPE.VIDEO:
return True
else:
if PictureTools.is_dynamic(self.cover_url):
return True
return False
if TractateVideo.objects.filter(tractate_id=self.id).exists():
return True
img = TractateImages.objects.filter(tractate_id=self.id).order_by("-id").first()
if img and PictureTools.is_dynamic(img.image_url):
return True
return False
def get_update_time_stratific(self, create_time):
try:
now = datetime.datetime.now()
......@@ -285,9 +311,7 @@ class Tractate(models.Model):
try:
association_tags_id_list = list()
tag_list = TagService._get_by_ids_from_cache_type(tag_list)
for item in tag_list:
association_tags_id_list.append(
{"id": item.id, "tag_name": item.name, "recommend_type": item.recommend_type,
......@@ -559,6 +583,15 @@ class TractateTagV3(models.Model):
tag_v3_id = models.IntegerField(verbose_name="标签V3", db_index=True)
class TractateTagV4(models.Model):
class Meta:
db_table = 'api_tractate_tag_v4'
app_label = "talos"
tractate_id = models.IntegerField(verbose_name="新帖子id", db_index=True)
tag_v4_id = models.IntegerField(verbose_name="标签V4", db_index=True)
class TractateImages(models.Model):
"""
新帖子 图片相关
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment