Explorar o código

shield-videos-20220826

liqian %!s(int64=2) %!d(string=hai) anos
pai
achega
e4413ca46b
Modificáronse 2 ficheiros con 35 adicións e 4 borrados
  1. 8 3
      config.py
  2. 27 1
      shield_videos.py

+ 8 - 3
config.py

@@ -439,11 +439,16 @@ class BaseConfig(object):
     TABLE_BENSHAN_ZHUFU = 'benshanzhufu_videolist'
     # 本山祝福视频redis存储key
     BENSHAN_ZHUFU_KEY_NAME = 'benshanzf: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 = {
-        '110000': [BENSHAN_ZHUFU_KEY_NAME, ],
-        '500000': [BENSHAN_ZHUFU_KEY_NAME, ],
-        '-1': [BENSHAN_ZHUFU_KEY_NAME, ],
+        '110000': [BENSHAN_ZHUFU_KEY_NAME, ],  # 北京
+        '500000': [BENSHAN_ZHUFU_KEY_NAME, ],  # 重庆
+        '-1': [BENSHAN_ZHUFU_KEY_NAME, SPECIAL_AREA_LIMIT_KEY_NAME, ],
     }
 
 

+ 27 - 1
shield_videos.py

@@ -1,4 +1,5 @@
 import traceback
+import datetime
 from config import set_config
 from log import Log
 from utils import execute_sql_from_odps
@@ -31,8 +32,33 @@ def get_benshanzhufu_videos():
         log_.error(traceback.format_exc())
 
 
+def get_special_area_limit_videos():
+    """获取特殊地域屏蔽视频并存入redis"""
+    try:
+        # 获取本山祝福视频
+        sql = f"SELECT videoid FROM {config_.PROJECT_SPECIAL_AREA_LIMIT}.{config_.TABLE_SPECIAL_AREA_LIMIT};"
+        records = execute_sql_from_odps(project=config_.PROJECT_SPECIAL_AREA_LIMIT, sql=sql)
+        video_id_list = []
+        with records.open_reader() as reader:
+            for record in reader:
+                video_id = int(record['videoid'])
+                video_id_list.append(video_id)
+        log_.info(f"count = {len(video_id_list)}")
+        # 存入redis
+        if len(video_id_list) > 0:
+            redis_helper.del_keys(key_name=config_.SPECIAL_AREA_LIMIT_KEY_NAME)
+            redis_helper.add_data_with_set(key_name=config_.SPECIAL_AREA_LIMIT_KEY_NAME, values=video_id_list,
+                                           expire_time=25 * 3600)
+
+    except Exception as e:
+        log_.error(traceback.format_exc())
+
+
 def main():
-    get_benshanzhufu_videos()
+    now_h = datetime.datetime.now().hour
+    if now_h == 4:
+        get_benshanzhufu_videos()
+    get_special_area_limit_videos()
 
 
 if __name__ == '__main__':