Jelajahi Sumber

update manager_op

liqian 2 tahun lalu
induk
melakukan
d1d27877f6
2 mengubah file dengan 63 tambahan dan 18 penghapusan
  1. 11 8
      config.py
  2. 52 10
      manager_op.py

+ 11 - 8
config.py

@@ -556,22 +556,25 @@ class BaseConfig(object):
         0: {
             "dataListDesc": "全部", "dataListCode": 0,
             "keyPrefixList": [
-                {"dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
-                {"dataListCode": 2, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H},
-                {"dataListCode": 3, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H},
-                {"dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
+                {"dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_30DAY},
+                {"dataListCode": 2, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
+                {"dataListCode": 3, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H},
+                {"dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H},
+                {"dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
                 # {"dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_48H_H},
                 # {"dataListCode": 6, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_48H_H},
                 # {"dataListCode": 7, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
             ]
         },
-        1: {"dataListDesc": "地域小时级", "dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
-        2: {"dataListDesc": "地域相对24小时级", "dataListCode": 2, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H},
-        3: {"dataListDesc": "非地域相对24小时级", "dataListCode": 3, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H},
-        4: {"dataListDesc": "非地域相对24小时级列表2", "dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
+        1: {"dataListDesc": "相对30天数据列表", "dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_30DAY},
+        2: {"dataListDesc": "地域小时级", "dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
+        3: {"dataListDesc": "地域相对24小时级", "dataListCode": 2, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H},
+        4: {"dataListDesc": "非地域相对24小时级", "dataListCode": 3, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H},
+        5: {"dataListDesc": "非地域相对24小时级列表2", "dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
         # 5: {"dataListDesc": "非地域相对48小时级", "dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_48H_H},
         # 6: {"dataListDesc": "非地域相对48小时级列表2", "dataListCode": 6, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_48H_H},
         # 7: {"dataListDesc": "大列表", "dataListCode": 7, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
+
     }
 
     # VIDEO_DATA_LIST_AB_EXP_CODE_MAPPING = {

+ 52 - 10
manager_op.py

@@ -25,7 +25,10 @@ def get_video_list(ab_exp_code, search_time, data_list_type, region_code, page_n
         # data_count = 0
         result = {'code': -1, 'message': 'request data error!'}
         return result
-    search_time = ':'.join(search_time.split('.'))
+    search_time_seg = search_time.split('.')
+    if search_time_seg[1][0] == '0':
+        search_time_seg[1] = search_time_seg[1][1]
+    search_time = ':'.join(search_time_seg)
     data = []
     key_params = config_.AB_EXP_CODE.get(ab_exp_code)
     # key_params = config_.VIDEO_DATA_LIST_AB_EXP_CODE_MAPPING.get(ab_exp_code)
@@ -38,7 +41,10 @@ def get_video_list(ab_exp_code, search_time, data_list_type, region_code, page_n
         for item in key_prefix_list:
             data_list_code = item.get('dataListCode')
             key_prefix = item.get('keyPrefix')
-            key_name = f"{key_prefix}{region_code}:{data_key}:{rule_key}:{search_time}"
+            if data_list_code == 1:
+                key_name = f"{key_prefix}{data_key}:{rule_key}:{search_time}"
+            else:
+                key_name = f"{key_prefix}{region_code}:{data_key}:{rule_key}:{search_time}"
             key_data = redis_helper.get_all_data_from_zset(key_name=key_name, desc=True, with_scores=True)
             if key_data is None:
                 continue
@@ -56,7 +62,10 @@ def get_video_list(ab_exp_code, search_time, data_list_type, region_code, page_n
             data.extend(videos)
     else:
         key_prefix = config_.VIDEO_DATA_LIST_MAPPING.get(data_list_type).get('keyPrefix')
-        key_name = f"{key_prefix}{region_code}:{data_key}:{rule_key}:{search_time}"
+        if data_list_type == 1:
+            key_name = f"{key_prefix}{data_key}:{rule_key}:{search_time}"
+        else:
+            key_name = f"{key_prefix}{region_code}:{data_key}:{rule_key}:{search_time}"
         key_data = redis_helper.get_all_data_from_zset(key_name=key_name, desc=True, with_scores=True)
         if key_data is None:
             videos = []
@@ -105,7 +114,10 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
         # data_count = 0
         result = {'code': -1, 'message': 'request data error!'}
         return result
-    search_time = ':'.join(search_time.split('.'))
+    search_time_seg = search_time.split('.')
+    if search_time_seg[1][0] == '0':
+        search_time_seg[1] = search_time_seg[1][1]
+    search_time = ':'.join(search_time_seg)
     data = []
     key_params = config_.AB_EXP_CODE.get(ab_exp_code)
     # key_params = config_.VIDEO_DATA_LIST_AB_EXP_CODE_MAPPING.get(ab_exp_code)
@@ -119,8 +131,8 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
         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}:{data_key}:{rule_key}:{search_time}"
+            if data_list_code == 1:
+                key_name = f"{key_prefix}{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:
@@ -129,12 +141,29 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
                     'abExpCode': ab_exp_code,
                     'searchTime': search_time,
                     'dataListType': data_list_code,
-                    'regionCode': code,
+                    'regionCode': '0',
                     'videoId': int(video_id),
                     'score': float(score),
                     'rank': int(rank) + 1,
                 }
                 data.append(videos)
+            else:
+                for code in code_list:
+                    key_name = f"{key_prefix}{code}:{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:
@@ -143,7 +172,10 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
         for item in key_prefix_list:
             data_list_code = item.get('dataListCode')
             key_prefix = item.get('keyPrefix')
-            key_name = f"{key_prefix}{region_code}:{data_key}:{rule_key}:{search_time}"
+            if data_list_code == 1:
+                key_name = f"{key_prefix}{data_key}:{rule_key}:{search_time}"
+            else:
+                key_name = f"{key_prefix}{region_code}:{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:
@@ -165,7 +197,10 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
         code_list = [code for _, code in config_.REGION_CODE.items()]
         key_prefix = config_.VIDEO_DATA_LIST_MAPPING.get(data_list_type).get('keyPrefix')
         for code in code_list:
-            key_name = f"{key_prefix}{code}:{data_key}:{rule_key}:{search_time}"
+            if data_list_type == 1:
+                key_name = f"{key_prefix}{data_key}:{rule_key}:{search_time}"
+            else:
+                key_name = f"{key_prefix}{code}:{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:
@@ -184,7 +219,10 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
 
     else:
         key_prefix = config_.VIDEO_DATA_LIST_MAPPING.get(data_list_type).get('keyPrefix')
-        key_name = f"{key_prefix}{region_code}:{data_key}:{rule_key}:{search_time}"
+        if data_list_type == 1:
+            key_name = f"{key_prefix}{data_key}:{rule_key}:{search_time}"
+        else:
+            key_name = f"{key_prefix}{region_code}:{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 not None and score is not None:
@@ -206,3 +244,7 @@ def search_video(ab_exp_code, search_time, data_list_type, region_code, video_id
         "data": data[(page_num - 1) * page_size:page_num * page_size]
     }
     return result
+
+
+if __name__ == '__main__':
+    get_video_list('095', '20220909.01', '0', '110000')