| 
					
				 | 
			
			
				@@ -341,6 +341,77 @@ def filter_flow_pool_new_with_level(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_.info("flow pool filter end!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def filter_flow_pool_level_score_process(app_type, flow_pool_id, key_name): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 获取视频 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    redis_helper = RedisHelper() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = redis_helper.get_all_data_from_zset(key_name=key_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if data is None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_.info(f"flow_pool_id = {flow_pool_id}, data is None") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_.info(f"app_type = {app_type}, flow_pool_id = {flow_pool_id}, videos filter end!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # videoId与flowPool做mapping 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    video_ids = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mapping = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for video in data: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video_id, flow_pool = video.split('-') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video_id = int(video_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if video_id not in video_ids: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            video_ids.append(video_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mapping[video_id] = [flow_pool] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mapping[video_id].append(flow_pool) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 过滤 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if len(video_ids) == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_.info(f"data size = {len(data)}, video_ids size = {len(video_ids)}, data = {data}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_.info(f"app_type = {app_type}, flow_pool_id = {flow_pool_id}, videos filter end!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if app_type == config_.APP_TYPE['APP']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filtered_result = filter_video_status_app(video_ids=video_ids) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filtered_result = filter_video_status(video_ids=video_ids) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 求差集,获取需要过滤掉的视频,并从redis中移除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter_videos = set(video_ids) - set(filtered_result) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log_.info("data size = {}, video_ids size = {}, filtered size = {}, filter sizer = {}".format( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        len(data), len(video_ids), len(filtered_result), len(filter_videos))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 移除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if len(filter_videos) == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_.info(f"app_type = {app_type}, flow_pool_id = {flow_pool_id} videos filter end!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    remove_videos = ['{}-{}'.format(video_id, flow_pool) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     for video_id in filter_videos 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     for flow_pool in mapping[video_id]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    redis_helper.remove_value_from_zset(key_name=key_name, value=remove_videos) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log_.info(f"app_type = {app_type}, flow_pool_id = {flow_pool_id} videos filter end!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def filter_flow_pool_new_with_level_score(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """流量池视频过滤""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log_.info("flow pool filter start ...") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    level_weight = redis_helper.get_data_from_redis(key_name=config_.FLOWPOOL_LEVEL_WEIGHT_KEY_NAME) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    level_list = [level for level in json.loads(level_weight)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log_.info(f"level_list: {level_list}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    app_type_list = [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for _, app_type in config_.APP_TYPE.items(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_.info('app_type {} videos filter start...'.format(app_type)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if app_type in app_type_list: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            filter_flow_pool_18_19(app_type=app_type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for flow_pool_id in [None, config_.QUICK_FLOW_POOL_ID]: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log_.info(f"flow_pool_id = {flow_pool_id}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # 拼接redis-key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if flow_pool_id == config_.QUICK_FLOW_POOL_ID: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    key_name = get_pool_redis_key(pool_type='flow_level_score', app_type=app_type, flow_pool_id=flow_pool_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    filter_flow_pool_level_score_process(app_type, flow_pool_id, key_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for level in level_list: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        key_name = get_pool_redis_key(pool_type='flow_level_score', app_type=app_type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                      flow_pool_id=flow_pool_id, level=level) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        filter_flow_pool_level_score_process(app_type, flow_pool_id, key_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        log_.info(f"app_type = {app_type}, level = {level} videos filter end!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log_.info(f"app_type = {app_type} videos filter end!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log_.info("flow pool filter end!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def filter_flow_pool_18_19(app_type): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """流量池视频过滤""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_.info('app_type {} videos filter start...'.format(app_type)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -534,6 +605,11 @@ def get_pool_redis_key(pool_type, app_type=None, flow_pool_id=None, level=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return f"{config_.FLOWPOOL_KEY_NAME_PREFIX_SET}{app_type}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return f"{config_.FLOWPOOL_KEY_NAME_PREFIX_SET_LEVEL}{app_type}:{level}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif pool_type == 'flow_level_score': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if flow_pool_id == config_.QUICK_FLOW_POOL_ID: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return f"{config_.QUICK_FLOWPOOL_KEY_NAME_PREFIX}{app_type}:{flow_pool_id}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return f"{config_.FLOWPOOL_KEY_NAME_PREFIX_SET_LEVEL_SCORE}{app_type}:{level}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log_.error('pool type error') 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1084,6 +1160,7 @@ def main(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         filter_flow_pool() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # filter_flow_pool_new() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         filter_flow_pool_new_with_level() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter_flow_pool_new_with_level_score() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 兜底视频过滤 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # filter_bottom() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 修改过ROV的视频过滤 
			 |