Browse Source

add relevant_top_videos

liqian 3 năm trước cách đây
mục cha
commit
5c7cb4ea2f
2 tập tin đã thay đổi với 62 bổ sung0 xóa
  1. 4 0
      config.py
  2. 58 0
      relevant_top_videos.py

+ 4 - 0
config.py

@@ -75,6 +75,9 @@ class BaseConfig(object):
         'bottom_last': 'com.weiqu.video.bottom.last.w.h.rate.1.item'  # 二次兜底视频
     }
 
+    # 头部视频对应运营强插的相关视频 redis 存储 key 前缀, 完整key格式:com.weiqu.video.relevant.videos.item.{videoId}
+    RELEVANT_VIDEOS_WITH_OP_KEY_NAME = 'com.weiqu.video.relevant.videos.item.'
+
 
 class DevelopmentConfig(BaseConfig):
     """开发环境配置"""
@@ -291,6 +294,7 @@ class ProductionConfig(BaseConfig):
 def set_config():
     # 获取环境变量 ROV_OFFLINE_ENV
     env = os.environ.get('ROV_OFFLINE_ENV')
+    # env = 'dev'
     if env is None:
         log_.error('ENV ERROR: is None!')
         return

+ 58 - 0
relevant_top_videos.py

@@ -0,0 +1,58 @@
+import pandas as pd
+import json
+import time
+from config import set_config
+from db_helper import RedisHelper
+
+config_, _ = set_config()
+
+
+def get_relevant_videos_with_excel():
+    filepath = './data/relevant.xlsx'
+    df = pd.read_excel(filepath)
+    relevant_videos = {}
+    head_videos = []
+    for i in range(len(df)):
+        dt = df.iloc[i]['dt']
+        head_vid = int(df.iloc[i]['headVid'])
+        order = int(df.iloc[i]['order'])
+        recommend_vid = int(df.iloc[i]['recommendVid'])
+        start_time = int(df.iloc[i]['startTime'].timestamp())
+        finish_time = int(df.iloc[i]['finishTime'].timestamp())
+        item = {
+            'order': order,
+            'recommend_vid': recommend_vid,
+            'start_time': start_time,
+            'finish_time': finish_time
+        }
+        if head_vid in head_videos:
+            relevant_videos[head_vid].append(item)
+        else:
+            relevant_videos[head_vid] = [item]
+            head_videos.append(head_vid)
+
+    print(head_videos)
+    return relevant_videos
+
+
+def update_relevant_videos_to_redis(relevant_videos):
+    if not relevant_videos:
+        return
+    for head_vid, videos in relevant_videos.items():
+        # 拼接key
+        key_name = '{}{}'.format(config_.RELEVANT_VIDEOS_WITH_OP_KEY_NAME, head_vid)
+        # 将数据转换为json
+        videos_json = json.dumps(videos)
+        # 以最晚结束的视频的结束时间 - 当前时间 + 5s 作为key的过期时间
+        finish_time_list = [item['finish_time'] for item in videos]
+        expire_time = max(finish_time_list) - int(time.time()) + 5
+        if expire_time <= 0:
+            return
+        # 存入redis
+        redis_helper = RedisHelper()
+        redis_helper.set_data_to_redis(key_name=key_name, value=videos_json, expire_time=expire_time)
+
+
+if __name__ == '__main__':
+    relevant_videos = get_relevant_videos_with_excel()
+    update_relevant_videos_to_redis(relevant_videos=relevant_videos)