Browse Source

update for app-rec

liqian 3 years ago
parent
commit
57e371aba0
4 changed files with 31 additions and 5 deletions
  1. 1 0
      app.py
  2. 6 0
      config.py
  3. 5 1
      recommend.py
  4. 19 4
      video_recall.py

+ 1 - 0
app.py

@@ -133,6 +133,7 @@ def update_rov():
         redis_helper = RedisHelper()
         # 将修改ROV值视频的 videoId 和 rovScore 存入对应的redis中
         redis_helper.update_score_with_value(key_name=config_.UPDATE_ROV_KEY_NAME, value=video_id, score=rov_score)
+        redis_helper.update_score_with_value(key_name=config_.UPDATE_ROV_KEY_NAME_APP, value=video_id, score=rov_score)
 
         # ###### 下线 横屏实验
         # # 判断该视频是否为 横屏视频,如果是则 存入rov召回池横屏视频 redis 中

+ 6 - 0
config.py

@@ -13,6 +13,7 @@ class BaseConfig(object):
         'WAN_NENG_VIDEO': 17,  # 万能影视屋
         'LAO_HAO_KAN_VIDEO': 18,  # 老好看视频
         'ZUI_JING_QI': 19,  # 票圈最惊奇
+        'APP': 13,  # 票圈视频APP
     }
     # abTest
     AB_TEST = {
@@ -51,6 +52,9 @@ class BaseConfig(object):
     # ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.{date}
     RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.'
 
+    # app应用 小程序离线ROV模型结果存放 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.app.{date}
+    RECALL_KEY_NAME_PREFIX_APP = 'com.weiqu.video.recall.hot.item.score.app.'
+
     # appType = 6, ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.apptype.h.item.score.{appType}.{h}
     RECALL_KEY_NAME_PREFIX_APP_TYPE = 'com.weiqu.video.recall.hot.apptype.h.item.score.'
 
@@ -59,6 +63,7 @@ class BaseConfig(object):
 
     # 修改ROV的视频 redis key
     UPDATE_ROV_KEY_NAME = 'com.weiqu.video.update.rov.item.score'
+    UPDATE_ROV_KEY_NAME_APP = 'com.weiqu.video.update.rov.item.score.app'
 
     # 首页推荐预曝光列表redis key 前缀,完整key格式:com.weiqu.video.hot.recommend.previewed.{appType}.{mid}
     PREVIEW_KEY_PREFIX = 'com.weiqu.video.hot.recommend.previewed.'
@@ -79,6 +84,7 @@ class BaseConfig(object):
 
     # 生效中的置顶视频列表 redis key
     TOP_VIDEO_LIST_KEY_NAME = 'com.weiqu.video.top.item.score.area'
+    TOP_VIDEO_LIST_KEY_NAME_APP = 'com.weiqu.video.top.item.score.area.app'
 
     # 按位置排序redis存储key
     RECALL_POSITION1_KEY_NAME = 'com.weiqu.video.recall.hot.apptype.h.item.score.position.1'

+ 5 - 1
recommend.py

@@ -264,7 +264,11 @@ def update_redis_data(result, app_type, mid, last_rov_recall_key):
         rov_recall_video = [item['videoId'] for item in result[:config_.K]
                             if item['pushFrom'] == config_.PUSH_FROM['rov_recall']]
         if len(rov_recall_video) > 0:
-            if not redis_helper.get_score_with_value(key_name=config_.UPDATE_ROV_KEY_NAME, value=rov_recall_video[-1]):
+            if app_type == config_.APP_TYPE['APP']:
+                key_name = config_.UPDATE_ROV_KEY_NAME_APP
+            else:
+                key_name = config_.UPDATE_ROV_KEY_NAME
+            if not redis_helper.get_score_with_value(key_name=key_name, value=rov_recall_video[-1]):
                 redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[-1])
             log_.info('last video redis update success!')
 

+ 19 - 4
video_recall.py

@@ -295,13 +295,20 @@ class PoolRecall(object):
                     return key_name, redis_h
                 # 其他
             else:
+                # appType = 13  票圈视频app
+                if self.app_type == config_.APP_TYPE['APP']:
+                    key_name_prefix = config_.RECALL_KEY_NAME_PREFIX_APP
+                # 其他
+                else:
+                    key_name_prefix = config_.RECALL_KEY_NAME_PREFIX
+
                 # 判断热度列表是否更新,未更新则使用前一天的热度列表
-                key_name = config_.RECALL_KEY_NAME_PREFIX + time.strftime('%Y%m%d')
+                key_name = key_name_prefix + time.strftime('%Y%m%d')
                 if self.redis_helper.key_exists(key_name):
                     redis_date = date.today().strftime('%Y%m%d')
                 else:
                     redis_date = (date.today() - timedelta(days=1)).strftime('%Y%m%d')
-                    key_name = config_.RECALL_KEY_NAME_PREFIX + redis_date
+                    key_name = key_name_prefix + redis_date
                     # if not self.redis_helper.key_exists(key_name):
                     #     return None, None
 
@@ -348,8 +355,12 @@ class PoolRecall(object):
         """
         try:
             # 获取修改过ROV的视频
+            if self.app_type == config_.APP_TYPE['APP']:
+                key_name = config_.UPDATE_ROV_KEY_NAME_APP
+            else:
+                key_name = config_.UPDATE_ROV_KEY_NAME
             redis_helper = RedisHelper()
-            data = redis_helper.get_data_zset_with_index(key_name=config_.UPDATE_ROV_KEY_NAME,
+            data = redis_helper.get_data_zset_with_index(key_name=key_name,
                                                          start=0, end=-1, with_scores=True)
             # 获取视频id,并转换类型为int,将videoId和score做mapping,并存储为key-value{videoId: score}
             if data is None:
@@ -392,7 +403,11 @@ class PoolRecall(object):
         try:
             # 获取生效中的置顶视频列表
             redis_helper = RedisHelper()
-            data = redis_helper.get_data_from_redis(key_name=config_.TOP_VIDEO_LIST_KEY_NAME)
+            if self.app_type == config_.APP_TYPE['APP']:
+                key_name = config_.TOP_VIDEO_LIST_KEY_NAME_APP
+            else:
+                key_name = config_.TOP_VIDEO_LIST_KEY_NAME
+            data = redis_helper.get_data_from_redis(key_name=key_name)
             # log_.info('===1===  {}'.format(data))
             if data is None:
                 return [], []