|
@@ -1,8 +1,6 @@
|
|
|
"""
|
|
|
@author: luojunhui
|
|
|
"""
|
|
|
-from datetime import datetime, timedelta
|
|
|
-
|
|
|
from applications.match_algorithm.title_similarity import jcd_title_similarity
|
|
|
|
|
|
|
|
@@ -53,82 +51,3 @@ def title_similarity_rank(content_title, recall_list):
|
|
|
include_title_list.append(item)
|
|
|
sorted_list = sorted(include_title_list, key=lambda x: x['score'], reverse=True)
|
|
|
return sorted_list
|
|
|
-
|
|
|
-
|
|
|
-async def get_content_oss_fission_dict(db_client, config, content_id) -> dict[str: float]:
|
|
|
- """
|
|
|
- 通过 content_id 对应的 oss 路径对应的裂变表现进行排序
|
|
|
- oss 数据每天凌晨 2 点更新
|
|
|
- :return:
|
|
|
- """
|
|
|
- FISSION_DETAIL_TABLE = config.fission_detail_table
|
|
|
- two_days_ago_dt = (datetime.now() - timedelta(days=2)).strftime('%Y%m%d')
|
|
|
- sql = f"""
|
|
|
- SELECT
|
|
|
- oss_name, fission_rate_0, fission_0_on_read
|
|
|
- FROM
|
|
|
- {FISSION_DETAIL_TABLE}
|
|
|
- WHERE content_id = '{content_id}' and dt >= '{two_days_ago_dt}'
|
|
|
- ORDER BY dt DESC;
|
|
|
- """
|
|
|
- result = await db_client.async_select(sql)
|
|
|
- fission_info_dict = {}
|
|
|
- if result:
|
|
|
- for item in result:
|
|
|
- key = item[0]
|
|
|
- value = {
|
|
|
- "fission_rate_0": item[1],
|
|
|
- "fission_0_on_read": item[2]
|
|
|
- }
|
|
|
- if fission_info_dict.get(key):
|
|
|
- continue
|
|
|
- else:
|
|
|
- fission_info_dict[key] = value
|
|
|
- return fission_info_dict
|
|
|
- else:
|
|
|
- return {}
|
|
|
-
|
|
|
-
|
|
|
-async def get_title_oss_fission_list(db_client, config, content_id) -> list[dict]:
|
|
|
- """
|
|
|
- 通过 content_id 对应的 oss 路径对应的裂变表现进行排序
|
|
|
- oss 数据每天凌晨 2 点更新
|
|
|
- todo: 获取有数据的最新dt
|
|
|
- :return:
|
|
|
- """
|
|
|
- FISSION_DETAIL_TABLE = config.fission_detail_table
|
|
|
- LONG_ARTICLES_TEXT_TABLE = config.article_text_table
|
|
|
- LONG_ARTICLES_CRAWLER_TABLE = config.article_crawler_video_table
|
|
|
- # two_days_ago_dt = (datetime.now() - timedelta(days=2)).strftime('%Y%m%d')
|
|
|
- sql = f"""
|
|
|
- SELECT
|
|
|
- lavfi.oss_name, lavfi.fission_0_on_read, lacv.platform, lacv.cover_oss_path, lacv.user_id
|
|
|
- FROM
|
|
|
- {FISSION_DETAIL_TABLE} lavfi
|
|
|
- JOIN {LONG_ARTICLES_CRAWLER_TABLE} lacv on lavfi.oss_name = lacv.video_oss_path
|
|
|
- WHERE title = (
|
|
|
- SELECT article_title
|
|
|
- FROM {LONG_ARTICLES_TEXT_TABLE}
|
|
|
- WHERE content_id = '{content_id}'
|
|
|
- );
|
|
|
- AND lavfi.dt = (
|
|
|
- SELECT MAX(dt)
|
|
|
- FROM long_articles_videos_fission_info
|
|
|
- WHERE oss_name = lavfi.oss_name
|
|
|
- )
|
|
|
- """
|
|
|
- result = await db_client.async_select(sql)
|
|
|
- fission_info_list = []
|
|
|
- if result:
|
|
|
- for item in result:
|
|
|
- obj = {
|
|
|
- "platform": item[2],
|
|
|
- "video_oss_path": item[0],
|
|
|
- "cover_oss_path": item[3],
|
|
|
- "uid": item[4],
|
|
|
- "fission_0_on_read": item[1],
|
|
|
- }
|
|
|
- fission_info_list.append(obj)
|
|
|
- return sorted(fission_info_list, key=lambda x: x['fission_0_on_read'], reverse=True)
|
|
|
- else:
|
|
|
- return []
|