|
@@ -89,41 +89,46 @@ async def get_content_oss_fission_dict(db_client, config, content_id) -> dict[st
|
|
|
return {}
|
|
|
|
|
|
|
|
|
-async def get_title_oss_fission_dict(db_client, config, content_id) -> dict[str: float]:
|
|
|
+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
|
|
|
- oss_name, fission_rate_0, fission_0_on_read, dt
|
|
|
+ lavfi.oss_name, lavfi.fission_0_on_read, lacv.platform, lacv.cover_oss_path, lacv.user_id, max(lavfi.dt) as max_dt
|
|
|
FROM
|
|
|
- {FISSION_DETAIL_TABLE}
|
|
|
+ {FISSION_DETAIL_TABLE} lavfi
|
|
|
+ JOIN {LONG_ARTICLES_CRAWLER_TABLE} lacv on lavfi.oss_name = lacv.video_oss_path
|
|
|
WHERE title = (
|
|
|
- SELECT article_title
|
|
|
+ SELECT article_title
|
|
|
FROM {LONG_ARTICLES_TEXT_TABLE}
|
|
|
WHERE content_id = '{content_id}'
|
|
|
- )
|
|
|
- AND dt >= {two_days_ago_dt}
|
|
|
- ORDER BY dt DESC;
|
|
|
+ );
|
|
|
+ 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_dict = {}
|
|
|
+ fission_info_list = []
|
|
|
if result:
|
|
|
for item in result:
|
|
|
- key = item[0]
|
|
|
- value = {
|
|
|
- "fission_rate_0": item[1],
|
|
|
- "fission_0_on_read": item[2]
|
|
|
+ obj = {
|
|
|
+ "platform": item[2],
|
|
|
+ "video_oss_path": item[0],
|
|
|
+ "cover_oss_path": item[3],
|
|
|
+ "uid": item[4],
|
|
|
+ "fission_0_on_read": item[1],
|
|
|
}
|
|
|
- if fission_info_dict.get(key):
|
|
|
- continue
|
|
|
- else:
|
|
|
- fission_info_dict[key] = value
|
|
|
- return fission_info_dict
|
|
|
+ fission_info_list.append(obj)
|
|
|
+ return sorted(fission_info_list, key=lambda x: x['fission_0_on_read'], reverse=True)
|
|
|
else:
|
|
|
- return {}
|
|
|
+ return []
|