liqian 2 years ago
parent
commit
5e08048780
2 changed files with 24 additions and 5 deletions
  1. 3 1
      recommend.py
  2. 21 4
      video_rank.py

+ 3 - 1
recommend.py

@@ -299,7 +299,9 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
         # log_.info('====== bottom strategy')
         start_bottom = time.time()
         if ab_code == config_.AB_CODE['region_rank_by_h'].get('abtest_130'):
-            rank_result = bottom_strategy2(size=size, app_type=app_type, mid=mid, ab_code=ab_code, params=params)
+            rank_result = bottom_strategy2(
+                size=size, app_type=app_type, mid=mid, uid=uid, ab_code=ab_code, client_info=client_info, params=params
+            )
         else:
             rank_result = bottom_strategy(
                 request_id=request_id, size=size, app_type=app_type, ab_code=ab_code, params=params

+ 21 - 4
video_rank.py

@@ -227,16 +227,32 @@ def bottom_strategy_last(size, app_type, ab_code, params):
     return bottom_data
 
 
-def bottom_strategy2(size, app_type, mid, ab_code, params):
+def bottom_strategy2(size, app_type, mid, uid, ab_code, client_info, params):
     """
     兜底策略: 从兜底视频中随机获取视频,进行过滤后的视频
     :param size: 需要获取的视频数
     :param app_type: 产品标识 type-int
     :param mid: mid
+    :param uid: uid
     :param ab_code: abCode
+    :param client_info: 地域信息
     :param params:
     :return:
     """
+    # 获取存在城市分组数据的城市编码列表
+    city_code_list = [code for _, code in config_.CITY_CODE.items()]
+    # 获取provinceCode
+    province_code = client_info.get('provinceCode', '-1')
+    # 获取cityCode
+    city_code = client_info.get('cityCode', '-1')
+    if city_code in city_code_list:
+        # 分城市数据存在时,获取城市分组数据
+        region_code = city_code
+    else:
+        region_code = province_code
+    if region_code == '':
+        region_code = '-1'
+
     redis_helper = RedisHelper(params=params)
     bottom_data = redis_helper.get_data_from_set(key_name=config_.BOTTOM2_KEY_NAME)
     bottom_result = []
@@ -245,9 +261,10 @@ def bottom_strategy2(size, app_type, mid, ab_code, params):
             random_data = numpy.random.choice(bottom_data, size * 5, False)
         except Exception as e:
             random_data = bottom_data
-        # 视频过滤
-        filter_videos = FilterVideos(request_id=params.request_id, app_type=app_type, video_ids=random_data, mid=mid)
-        filtered_data = filter_videos.filter_videos()
+        video_ids = [int(item) for item in random_data]
+        # 过滤
+        filter_ = FilterVideos(request_id=params.request_id, app_type=app_type, mid=mid, uid=uid, video_ids=video_ids)
+        filtered_data = filter_.filter_videos(pool_type='flow', region_code=region_code)
         bottom_result = [{'videoId': int(video_id), 'pushFrom': config_.PUSH_FROM['bottom2'], 'abCode': ab_code}
                          for video_id in filtered_data[:size]]
     return bottom_result