ソースを参照

add region_rule_h config: rule4-2

liqian 2 年 前
コミット
835343b131
2 ファイル変更51 行追加35 行削除
  1. 35 25
      config.py
  2. 16 10
      region_rule_rank_h.py

+ 35 - 25
config.py

@@ -146,6 +146,36 @@ class BaseConfig(object):
         'rule1': {'view_type': 'pre-view', 'return_count': 21, 'score_rule': 0},
     }
 
+    # 本山祝福视频列表,在北京+重庆+无地域划分表中屏蔽
+    PROJECT_BENSHAN_ZHUFU = 'loghubods'
+    TABLE_BENSHAN_ZHUFU = 'benshanzhufu_videolist'
+    # 本山祝福视频redis存储key
+    BENSHAN_ZHUFU_KEY_NAME = 'benshanzf:videos'
+    # 小年糕视频列表,在北京+无地域划分表中屏蔽
+    PROJECT_XNG = 'loghubods'
+    TABLE_XNG = 'xng_videos'
+    # 小年糕视频redis存储key
+    XNG_KEY_NAME = 'xng:videos'
+    # 特殊地区屏蔽危险视频列表,在广州+深圳+成都+无地域划分表中屏蔽
+    PROJECT_SPECIAL_AREA_LIMIT = 'loghubods'
+    TABLE_SPECIAL_AREA_LIMIT = 'special_area_recommend_limit'
+    # 特殊地区屏蔽危险视频redis存储key
+    SPECIAL_AREA_LIMIT_KEY_NAME = 'special:area:limit:videos'
+    # 屏蔽视频配置 key:region_code, value:videos key list
+    SHIELD_CONFIG = {
+        REGION_CODE['北京']: [XNG_KEY_NAME, ],
+        REGION_CODE['None']: [XNG_KEY_NAME, ],
+    }
+    # 屏蔽视频配置实验组
+    SHIELD_CONFIG2 = {
+        REGION_CODE['北京']: [XNG_KEY_NAME, SPECIAL_AREA_LIMIT_KEY_NAME, ],
+        REGION_CODE['None']: [SPECIAL_AREA_LIMIT_KEY_NAME, XNG_KEY_NAME, ],
+        CITY_CODE['广州']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
+        CITY_CODE['深圳']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
+        CITY_CODE['成都']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
+        CITY_CODE['长沙']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
+    }
+
     # ##### 区分appType数据
     DATA_PARAMS = {
         'data1': {APP_TYPE['VLOG']: 0},  # vlog
@@ -308,6 +338,10 @@ class BaseConfig(object):
             # 涉政视频过滤
             'rule4-1': {'view_type': 'video-show-region', 'platform_return_rate': 0.001,
                         'region_24h_rule_key': 'rule2', '24h_rule_key': 'rule3', 'political_filter': True},
+            # 特殊地域屏蔽危险视频
+            'rule4-2': {'view_type': 'video-show-region', 'platform_return_rate': 0.001,
+                        'region_24h_rule_key': 'rule2', '24h_rule_key': 'rule3', 'shield_config': SHIELD_CONFIG2},
+
             # 'rule6': {'view_type': 'preview', 'platform_return_rate': 0.001,
             #           'region_24h_rule_key': 'rule3', '24h_rule_key': 'rule2'},
             'rule7': {'view_type': 'video-show-region', 'platform_return_rate': 0.001,
@@ -355,6 +389,7 @@ class BaseConfig(object):
         'params_list': [
             {'data': 'data1', 'rule': 'rule4'},  # 095 vlog
             {'data': 'data1', 'rule': 'rule4-1'},  # 095-1
+            {'data': 'data1', 'rule': 'rule4-2'},  # 262 特殊地域屏蔽危险视频
             # {'data': 'data2', 'rule': 'rule4'},
             {'data': 'data2', 'rule': 'rule7-1'},  # 121 内容精选
             # {'data': 'data3', 'rule': 'rule7'},
@@ -648,31 +683,6 @@ class BaseConfig(object):
     # 限流视频分发数记录 redis key前缀,完整格式:'limit:video:distribute:count:{videoId}'
     KEY_NAME_PREFIX_LIMIT_VIDEO_DISTRIBUTE_COUNT = 'limit:video:distribute:count:'
 
-    # 本山祝福视频列表,在北京+重庆+无地域划分表中屏蔽
-    PROJECT_BENSHAN_ZHUFU = 'loghubods'
-    TABLE_BENSHAN_ZHUFU = 'benshanzhufu_videolist'
-    # 本山祝福视频redis存储key
-    BENSHAN_ZHUFU_KEY_NAME = 'benshanzf:videos'
-    # 小年糕视频列表,在北京+无地域划分表中屏蔽
-    PROJECT_XNG = 'loghubods'
-    TABLE_XNG = 'xng_videos'
-    # 小年糕视频redis存储key
-    XNG_KEY_NAME = 'xng:videos'
-    # 特殊地区屏蔽危险视频列表,在广州+深圳+成都+无地域划分表中屏蔽
-    PROJECT_SPECIAL_AREA_LIMIT = 'loghubods'
-    TABLE_SPECIAL_AREA_LIMIT = 'special_area_recommend_limit'
-    # 特殊地区屏蔽危险视频redis存储key
-    SPECIAL_AREA_LIMIT_KEY_NAME = 'special:area:limit:videos'
-    # 屏蔽视频配置 key:region_code, value:videos key list
-    SHIELD_CONFIG = {
-        REGION_CODE['北京']: [XNG_KEY_NAME, SPECIAL_AREA_LIMIT_KEY_NAME, ],
-        REGION_CODE['None']: [SPECIAL_AREA_LIMIT_KEY_NAME, XNG_KEY_NAME, ],
-        CITY_CODE['广州']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
-        CITY_CODE['深圳']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
-        CITY_CODE['成都']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
-        CITY_CODE['长沙']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
-    }
-
     # 涉政视频列表,除票圈vlog、票圈视频、票圈视频APP外其他端都屏蔽
     PROJECT_POLITICAL_VIDEOS = 'loghubods'
     TABLE_POLITICAL_VIDEOS = 'shielded_politics_videolist'

+ 16 - 10
region_rule_rank_h.py

@@ -277,7 +277,8 @@ def video_rank(df, now_date, now_h, rule_key, param, region, data_key, rule_rank
     # log_.info('filtered_videos count = {}'.format(len(filtered_videos)))
 
     # 屏蔽视频过滤
-    shield_key_name_list = config_.SHIELD_CONFIG.get(region, None)
+    shield_config = param.get('shield_config', config_.SHIELD_CONFIG)
+    shield_key_name_list = shield_config.get(region, None)
     if shield_key_name_list is not None:
         filtered_videos = filter_shield_video(video_ids=filtered_videos, shield_key_name_list=shield_key_name_list)
         # log_.info(f"shield filtered_videos count = {len(filtered_videos)}")
@@ -323,16 +324,17 @@ def video_rank(df, now_date, now_h, rule_key, param, region, data_key, rule_rank
     # 与其他召回视频池去重,存入对应的redis
     dup_to_redis(h_video_ids=h_video_ids, now_date=now_date, now_h=now_h, rule_key=rule_key,
                  region_24h_rule_key=region_24h_rule_key, by_24h_rule_key=by_24h_rule_key, by_48h_rule_key=by_48h_rule_key,
-                 region=region, data_key=data_key, rule_rank_h_flag=rule_rank_h_flag, political_filter=political_filter)
+                 region=region, data_key=data_key, rule_rank_h_flag=rule_rank_h_flag, political_filter=political_filter,
+                 shield_config=shield_config)
 
 
-def dup_data(h_video_ids, initial_key_name, dup_key_name, region, political_filter):
+def dup_data(h_video_ids, initial_key_name, dup_key_name, region, political_filter, shield_config):
     redis_helper = RedisHelper()
     if redis_helper.key_exists(key_name=initial_key_name):
         initial_data = redis_helper.get_all_data_from_zset(key_name=initial_key_name, with_scores=True)
         # 屏蔽视频过滤
         initial_video_ids = [int(video_id) for video_id, _ in initial_data]
-        shield_key_name_list = config_.SHIELD_CONFIG.get(region, None)
+        shield_key_name_list = shield_config.get(region, None)
         if shield_key_name_list is not None:
             initial_video_ids = filter_shield_video(video_ids=initial_video_ids,
                                                     shield_key_name_list=shield_key_name_list)
@@ -354,7 +356,7 @@ def dup_data(h_video_ids, initial_key_name, dup_key_name, region, political_filt
 
 
 def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region_24h_rule_key, by_24h_rule_key, by_48h_rule_key,
-                 region, data_key, rule_rank_h_flag, political_filter):
+                 region, data_key, rule_rank_h_flag, political_filter, shield_config):
     """将地域分组小时级数据与其他召回视频池去重,存入对应的redis"""
     # ##### 去重更新地域分组小时级24h列表,并另存为redis中
     region_24h_key_name = \
@@ -364,7 +366,8 @@ def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region_24h_rule_key, by
         f"{config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H}{region}:{data_key}:{rule_key}:" \
         f"{datetime.datetime.strftime(now_date, '%Y%m%d')}:{now_h}"
     h_video_ids = dup_data(h_video_ids=h_video_ids, initial_key_name=region_24h_key_name,
-                           dup_key_name=region_24h_dup_key_name, region=region, political_filter=political_filter)
+                           dup_key_name=region_24h_dup_key_name, region=region, political_filter=political_filter,
+                           shield_config=shield_config)
 
     if rule_rank_h_flag == '48h':
 
@@ -375,7 +378,8 @@ def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region_24h_rule_key, by
             f"{config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_48H_H}{region}:{data_key}:{rule_key}:" \
             f"{datetime.datetime.strftime(now_date, '%Y%m%d')}:{now_h}"
         h_video_ids = dup_data(h_video_ids=h_video_ids, initial_key_name=h_48h_key_name,
-                               dup_key_name=h_48h_dup_key_name, region=region, political_filter=political_filter)
+                               dup_key_name=h_48h_dup_key_name, region=region, political_filter=political_filter,
+                               shield_config=shield_config)
 
         # ##### 去重小程序相对48h 筛选后剩余数据 更新结果,并另存为redis中
         if by_48h_rule_key == 'rule1':
@@ -386,7 +390,7 @@ def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region_24h_rule_key, by
                 f"{datetime.datetime.strftime(now_date, '%Y%m%d')}:{now_h}"
             h_video_ids = dup_data(h_video_ids=h_video_ids, initial_key_name=other_h_48h_key_name,
                                    dup_key_name=other_h_48h_dup_key_name, region=region,
-                                   political_filter=political_filter)
+                                   political_filter=political_filter, shield_config=shield_config)
 
     else:
         # ##### 去重小程序相对24h更新结果,并另存为redis中
@@ -396,7 +400,8 @@ def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region_24h_rule_key, by
             f"{config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H}{region}:{data_key}:{rule_key}:" \
             f"{datetime.datetime.strftime(now_date, '%Y%m%d')}:{now_h}"
         h_video_ids = dup_data(h_video_ids=h_video_ids, initial_key_name=h_24h_key_name,
-                               dup_key_name=h_24h_dup_key_name, region=region, political_filter=political_filter)
+                               dup_key_name=h_24h_dup_key_name, region=region, political_filter=political_filter,
+                               shield_config=shield_config)
 
         # ##### 去重小程序相对24h 筛选后剩余数据 更新结果,并另存为redis中
         # if by_24h_rule_key in ['rule3', 'rule4']:
@@ -406,7 +411,8 @@ def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region_24h_rule_key, by
             f"{config_.RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H}{region}:{data_key}:{rule_key}:" \
             f"{datetime.datetime.strftime(now_date, '%Y%m%d')}:{now_h}"
         h_video_ids = dup_data(h_video_ids=h_video_ids, initial_key_name=other_h_24h_key_name,
-                               dup_key_name=other_h_24h_dup_key_name, region=region, political_filter=political_filter)
+                               dup_key_name=other_h_24h_dup_key_name, region=region, political_filter=political_filter,
+                               shield_config=shield_config)
 
     # ##### 去重小程序模型更新结果,并另存为redis中
     # model_key_name = get_rov_redis_key(now_date=now_date)