liqian 2 anni fa
parent
commit
d28cc1f32b
1 ha cambiato i file con 37 aggiunte e 8 eliminazioni
  1. 37 8
      manager_op.py

+ 37 - 8
manager_op.py

@@ -18,10 +18,12 @@ def get_video_list(ab_exp_code, search_time, data_list_type, region_code, page_n
     :return: result
     """
     redis_helper = RedisHelper()
-    if ab_exp_code is None or search_time is None or data_list_type is None or region_code is None:
-        data = []
-        data_count = 0
-        result = {'code': 200, 'message': 'success', 'dataCount': data_count, 'data': data}
+    if ab_exp_code is None or search_time is None or data_list_type is None or region_code is None \
+            or region_code == '0':
+        # 不支持获取全部地域数据列表
+        # data = []
+        # data_count = 0
+        result = {'code': -1, 'message': 'request data error!'}
         return result
     data = []
     key_params = config_.VIDEO_DATA_LIST_AB_EXP_CODE_MAPPING.get(ab_exp_code)
@@ -97,16 +99,41 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
     """
     redis_helper = RedisHelper()
     if ab_exp_code is None or search_time is None or data_list_type is None or region_code is None or video_id is None:
-        data = []
-        data_count = 0
-        result = {'code': 200, 'message': 'success', 'dataCount': data_count, 'data': data}
+        # data = []
+        # data_count = 0
+        result = {'code': -1, 'message': 'request data error!'}
         return result
     data = []
     key_params = config_.VIDEO_DATA_LIST_AB_EXP_CODE_MAPPING.get(ab_exp_code)
     app_type = key_params.get('app_type')
     data_key = key_params.get('data_key')
     rule_key = key_params.get('rule_key')
-    if data_list_type == 0:
+    if data_list_type == 0 and region_code == '0':
+        # 视频数据表类型 和 地域 选择都为全部
+        key_prefix_list = config_.VIDEO_DATA_LIST_MAPPING.get(data_list_type).get('keyPrefixList')
+        code_list = [code for _, code in config_.REGION_CODE.items()]
+        for item in key_prefix_list:
+            data_list_code = item.get('dataListCode')
+            key_prefix = item.get('keyPrefix')
+            for code in code_list:
+                key_name = f"{key_prefix}{code}.{app_type}.{data_key}.{rule_key}.{search_time}"
+                rank = redis_helper.get_rank_with_value(key_name=key_name, value=int(video_id), desc=True)
+                score = redis_helper.get_score_with_value(key_name=key_name, value=int(video_id))
+                if rank is None or score is None:
+                    continue
+                videos = {
+                    'abExpCode': ab_exp_code,
+                    'searchTime': search_time,
+                    'dataListType': data_list_code,
+                    'regionCode': code,
+                    'videoId': int(video_id),
+                    'score': float(score),
+                    'rank': int(rank) + 1,
+                }
+                data.append(videos)
+        data.sort(key=lambda x: (x['dataListType'], x['regionCode']), reverse=False)
+
+    elif data_list_type == 0:
         # 视频数据表类型 选择为全部
         key_prefix_list = config_.VIDEO_DATA_LIST_MAPPING.get(data_list_type).get('keyPrefixList')
         for item in key_prefix_list:
@@ -128,6 +155,7 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
             }
             data.append(videos)
         data.sort(key=lambda x: x['dataListType'], reverse=False)
+
     elif region_code == '0':
         # 地域 选择为全部
         code_list = [code for _, code in config_.REGION_CODE.items()]
@@ -149,6 +177,7 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
             }
             data.append(videos)
         data.sort(key=lambda x: x['regionCode'], reverse=False)
+
     else:
         key_prefix = config_.VIDEO_DATA_LIST_MAPPING.get(data_list_type).get('keyPrefix')
         key_name = f"{key_prefix}{region_code}.{app_type}.{data_key}.{rule_key}.{search_time}"