Explorar o código

区域屏蔽需求 打印日志

zhangbo hai 1 ano
pai
achega
a06929329a
Modificáronse 5 ficheiros con 106 adicións e 28 borrados
  1. 2 1
      config.py
  2. 31 7
      parameter_dir/parameter_update.py
  3. 18 14
      utils.py
  4. 34 2
      utils_dir/my_utils.py
  5. 21 4
      video_recall.py

+ 2 - 1
config.py

@@ -18,6 +18,7 @@ class BaseConfig(object):
         'JOURNEY': 22,  # 票圈足迹
         'BLESSING_YEAR': 3,  # 票圈福年
         'H5': 12,  # H5
+        'PIAO_QUAN_BLESSING': 2, # 票圈 | 祝福
     }
     # 白名单(影视,宗教)过滤Redis
     REDIS_INFO_FILTER = {
@@ -2206,7 +2207,7 @@ class ProductionConfig(BaseConfig):
 def set_config():
     # 获取环境变量 ROV_SERVER_ENV
     env = os.environ.get('ROV_SERVER_ENV')
-    # env = 'dev'
+    env = 'dev'
     if env is None:
         # log_.error('ENV ERROR: is None!')
         return

+ 31 - 7
parameter_dir/parameter_update.py

@@ -1,23 +1,47 @@
-import json
+import sys
+sys.path.append("../utils_dir/")
+sys.path.append("utils_dir/")
+from my_utils import parse_json_for_risk_rule
+from my_utils import parse_json_for_risk_videos
 from db_helper import RedisHelper
 from config import set_config
+
+
 config_ = set_config()
 
 RISK_SHIELD_FILTER_RULE_V1_JSON = "RISK_SHIELD_FILTER_RULE_V1_JSON"
 RISK_SHIELD_FILTER_VIDEO_V1_STR = "RISK_SHIELD_FILTER_VIDEO_V1_STR"
 
-def param_update_risk():
+def param_update_risk_rule() -> dict:
     """
     定时更新风险过滤的规则
     key=RISK_SHIELD_FILTER_RULE_V1_JSON
-    value= "{\"VLOG\": [\"北京\"]}"
+    value= "{\"0\": [\"110000\"]}"
     """
     redis_helper = RedisHelper()
     tmp = redis_helper.get_data_from_redis(key_name=RISK_SHIELD_FILTER_RULE_V1_JSON)
     if tmp is not None:
-        v1 = json.loads(tmp)
-    global RISK_SHIELD_FILTER_VIDEO_V1_STR
+        data = parse_json_for_risk_rule(tmp)
+        return data
+    return {}
+def param_update_risk_videos() -> list:
+    """
+    定时更新风险过滤的videos
+    key = "RISK_SHIELD_FILTER_VIDEO_V1_STR"
+    value = "7536230,1,2,3,4,5,6,7,8,9,10"
+    """
+    redis_helper = RedisHelper()
     tmp = redis_helper.get_data_from_redis(key_name=RISK_SHIELD_FILTER_VIDEO_V1_STR)
     if tmp is not None:
-        v2 = json.loads(tmp)
-    return v1, v2
+        data = parse_json_for_risk_videos(tmp)
+        return data
+    return []
+
+if __name__ == '__main__':
+    pass
+    d1 = param_update_risk_rule()
+    d2 = param_update_risk_videos()
+    print(d1, type(d1))
+    print(d2, type(d2))
+
+

+ 18 - 14
utils.py

@@ -6,14 +6,18 @@ import time
 import gevent
 import pandas as pd
 import random
-import copy
-
 from datetime import datetime
 # from db_helper import HologresHelper, RedisHelper, MysqlHelper
 from db_helper import RedisHelper, MysqlHelper
 from config import set_config
 from log import Log
 
+import sys
+sys.path.append("parameter_dir/")
+print()
+from parameter_update import param_update_risk_rule
+from parameter_update import param_update_risk_videos
+
 config_ = set_config()
 log_ = Log()
 
@@ -844,22 +848,22 @@ class FilterVideos(object):
         return filtered_videos
 
     def filter_videos_with_risk_video(self, video_ids, app_type, region_code):
-        # 1 判断是否过滤,不展示的app+区域列表 RISK_SHIELD_FILTER_V1_JSON
-        app_region_filtered = {
-            0: [110000]
-        }
-        # 初始化为:展示,不过滤。todo 测试时使用 True
-        if_filtered = False
-        if_filtered = True
-        if str(app_type) in app_region_filtered.keys() and region_code in app_region_filtered[app_type]:
+        # 1 判断是否过滤,不展示的app+区域列表,-1必须过滤
+        app_region_filtered = param_update_risk_rule()
+        if app_type in app_region_filtered.keys():
+            if_filtered = False
+            if region_code in app_region_filtered[app_type]:
+                if_filtered = True
+        else:
+            if_filtered = True
+        if region_code == -1:
             if_filtered = True
         if not if_filtered:
             return video_ids[0: min(20, len(video_ids))]
-        # 2 确认过滤,获取风险video列表
-        videos_with_risk = [i for i in range(1000)]
-        videos_with_risk.append(7536230)
+        # 2 确认过滤,获取风险video列表param_update_risk_videos
+        videos_with_risk = param_update_risk_videos()
         # 3 过滤 返回结果
-        video_ids_new = [id for id in video_ids if id not in videos_with_risk]
+        video_ids_new = [i for i in video_ids if i not in videos_with_risk]
         return video_ids_new[0: min(20, len(video_ids_new))]
 
 if __name__ == '__main__':

+ 34 - 2
utils_dir/my_utils.py

@@ -1,4 +1,36 @@
 import json
+from log import Log
 
-def parse_json_for_risk_rule(s: str):
-    pass
+log_ = Log()
+
+def parse_json_for_risk_rule(s: str) -> dict:
+    """
+    定时更新风险过滤的规则
+    key=RISK_SHIELD_FILTER_RULE_V1_JSON
+    value= "{\"VLOG\": [\"北京\"]}"
+    """
+    # 1 解析json格式,格式错误直接返回空字典。
+    try:
+        data = json.loads(s)
+        data_new = {}
+        for k, v in data.items():
+            data_new[int(k)] = v
+    except Exception as e:
+        log_.error("{}: parse json is wrong with in parse_json_for_risk_rule:{}".format(e, s))
+        return {}
+    return data_new
+
+def parse_json_for_risk_videos(s: str) -> list:
+    """
+    定时更新风险过滤的规则
+    key = "RISK_SHIELD_FILTER_VIDEO_V1_STR"
+    value = "7536230,1,2,3,4,5,6,7,8,9,10"
+    """
+    # 1 解析字符串,格式错误直接返回空list。
+    try:
+        data = s.split(",")
+        data_new = [int(i) for i in data]
+    except Exception as e:
+        log_.error("{}: parse str is wrong with in parse_json_for_risk_videos:{}".format(e, s))
+        return []
+    return data_new

+ 21 - 4
video_recall.py

@@ -2829,7 +2829,7 @@ class PoolRecall(object):
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
                                    app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
-            ge = gevent.spawn(filter_.filter_videos)
+            ge = gevent.spawn(filter_.filter_videos, '', province_code, None)
             ge.join()
             filtered_result = ge.get()
 
@@ -3135,7 +3135,7 @@ class PoolRecall(object):
         #print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
                                app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
-        filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal')
+        filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal', region_code=self.get_region_code())
         if filtered_viewed_videos is None:
             return recall_result
         #print("filtered_viewed_videos:", filtered_viewed_videos)
@@ -3706,7 +3706,7 @@ class PoolRecall(object):
         #print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
                                app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
-        filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal')
+        filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal', region_code=self.get_region_code())
         if filtered_viewed_videos is None:
             return recall_result
         #print("filtered_viewed_videos:", filtered_viewed_videos)
@@ -3809,7 +3809,7 @@ class PoolRecall(object):
         #print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
                                app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
-        filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal')
+        filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal', region_code=self.get_region_code())
         if filtered_viewed_videos is None:
             return recall_result
         #print("filtered_viewed_videos:", filtered_viewed_videos)
@@ -3864,3 +3864,20 @@ class PoolRecall(object):
                 recall_result.append(recall_dict[vid])
         #print("u2i recall_result:", recall_result)
         return recall_result
+
+    def get_region_code(self):
+        # 获取存在城市分组数据的城市编码列表
+        city_code_list = [code for _, code in config_.CITY_CODE.items()]
+        # 获取provinceCode
+        province_code = self.client_info.get('provinceCode', '-1')
+        # 获取cityCode
+        city_code = self.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'
+        return region_code