liqian 2 年 前
コミット
6fea840a69
4 ファイル変更59 行追加7 行削除
  1. 3 0
      config.py
  2. 31 0
      laohaokan_recommend_update.py
  3. 18 7
      religion_videos_update.py
  4. 7 0
      religion_videos_update_task.sh

+ 3 - 0
config.py

@@ -575,6 +575,9 @@ class BaseConfig(object):
     # 宗教视频更新使用数据
     RELIGION_VIDEOS_PROJECT = 'loghubods'
     RELIGION_VIDEOS_TABLE = ''
+    # 宗教视频列表更新结果存放 redis key 前缀,完整格式:'religion:videos:item:{date}'
+    KEY_NAME_PREFIX_RELIGION_VIDEOS = 'religion:videos:item:'
+
 
 class DevelopmentConfig(BaseConfig):
     """开发环境配置"""

+ 31 - 0
laohaokan_recommend_update.py

@@ -0,0 +1,31 @@
+import datetime
+from db_helper import RedisHelper
+from config import set_config
+from log import Log
+
+config_, env = set_config()
+log_ = Log()
+initial_param = {'data': 'data1', 'rule': 'rule4'}
+
+
+def get_religion_videos(now_date):
+    """获取宗教视频列表"""
+    redis_helper = RedisHelper()
+    religion_key_name = f"{config_.KEY_NAME_PREFIX_RELIGION_VIDEOS}{datetime.datetime.strftime(now_date, '%Y%m%d')}"
+    if not redis_helper.key_exists(religion_key_name):
+        redis_dt = datetime.datetime.strftime((now_date - datetime.timedelta(days=1)), '%Y%m%d')
+        religion_key_name = f"{config_.KEY_NAME_PREFIX_RELIGION_VIDEOS}{redis_dt}"
+    religion_videos = redis_helper.get_all_data_from_zset(key_name=religion_key_name, desc=True, with_scores=True)
+    return religion_videos
+
+
+def merge_with_region(now_date, now_h, region):
+
+
+
+
+def merge_videos(now_date, now_h):
+    """将宗教视频插入到默认视频列表中"""
+    # 获取宗教视频列表
+    religion_videos = get_religion_videos(now_date=now_date)
+    religion_video_id_list = [int(video_id) for video_id, _ in religion_videos]

+ 18 - 7
religion_videos_update.py

@@ -1,14 +1,15 @@
 import datetime
-import random
+import pandas as pd
 from odps import ODPS
 from threading import Timer
 from get_data import get_data_from_odps
-from db_helper import RedisHelper, MysqlHelper
+from db_helper import RedisHelper
 from config import set_config
 from log import Log
 
 config_, env = set_config()
 log_ = Log()
+features = ['videoid', 'play_count', 'dt']
 
 
 def data_check(project, table, now_date):
@@ -39,16 +40,26 @@ def get_religion_videos(now_date, project, table):
     # 获取videoId
     dt = datetime.datetime.strftime(now_date, '%Y%m%d')
     records = get_data_from_odps(date=dt, project=project, table=table)
-    video_id_list = [record['videoid'] for record in records]
-    # 排序合并,随机给定分数
+    feature_data = []
+    for record in records:
+        item = {}
+        for feature_name in features:
+            item[feature_name] = record[feature_name]
+        feature_data.append(item)
+    feature_df = pd.DataFrame(feature_data)
+    # 按照发布时间和播放量进行倒序
+    feature_df = feature_df.sort_values(by=['dt', 'play_count'], ascending=False)
+    video_id_list = feature_df['videoid'].to_list()
+    # 按照排序给定分数
     final_result = {}
-    for video_id in video_id_list:
-        score = random.uniform(0, 100)
+    step = 100 / (len(video_id_list) * 2)
+    for i, video_id in enumerate(video_id_list):
+        score = 100 - i * step
         final_result[int(video_id)] = score
 
     # 写入对应的redis
     key_name = \
-        f"{config_.KEY_NAME_PREFIX_SPECIAL_VIDEOS}{datetime.datetime.strftime(now_date, '%Y%m%d')}"
+        f"{config_.KEY_NAME_PREFIX_RELIGION_VIDEOS}{datetime.datetime.strftime(now_date, '%Y%m%d')}"
     if len(final_result) > 0:
         redis_helper = RedisHelper()
         redis_helper.add_data_with_zset(key_name=key_name, data=final_result, expire_time=2 * 24 * 3600)

+ 7 - 0
religion_videos_update_task.sh

@@ -0,0 +1,7 @@
+source /etc/profile
+echo $ROV_OFFLINE_ENV
+if [[ $ROV_OFFLINE_ENV == 'test' ]]; then
+    cd /data2/rov-offline && /root/anaconda3/bin/python /data2/rov-offline/religion_videos_update.py
+elif [[ $ROV_OFFLINE_ENV == 'pro' ]]; then
+    cd /data/rov-offline && /root/anaconda3/bin/python /data/rov-offline/religion_videos_update.py
+fi