Browse Source

在回滚的版本上增加过滤的兜底

zhangbo 1 year ago
parent
commit
0486a208bd
1 changed files with 46 additions and 2 deletions
  1. 46 2
      utils.py

+ 46 - 2
utils.py

@@ -6,7 +6,10 @@ import time
 import gevent
 import pandas as pd
 import random
-from datetime import datetime
+from datetime import date, timedelta, datetime
+
+from typing import List
+
 # from db_helper import HologresHelper, RedisHelper, MysqlHelper
 from db_helper import RedisHelper, MysqlHelper
 from config import set_config
@@ -19,6 +22,15 @@ from parameter_update import param_update_risk_filter_flag
 config_ = set_config()
 log_ = Log()
 
+FESTIVAL = {
+    "春节": [2024020510, 2024021000],
+    "初一": [2024021010, 2024021100],
+    "初二": [2024021110, 2024021200],
+    "初三": [2024021210, 2024021300],
+    "初四": [2024021310, 2024021400],
+    "初五": [2024021410, 2024021500],
+    "情人节": [2024021410, 2024021500]
+}
 
 def send_msg_to_feishu(msg_text):
     """发送消息到飞书"""
@@ -335,7 +347,7 @@ class FilterVideos(object):
         # todo: 添加app和region的风险过滤。
         st_viewed = time.time()
         videos_filtered = self.filter_videos_with_risk_video(self.video_ids, self.app_type, region_code)
-
+        videos_filtered = self.filter_videos_with_festival(videos_filtered)
         # log_.info({
         #     'logTimestamp': int(time.time() * 1000),
         #     'pool_type': "zhangbo-filter-pool_type",
@@ -729,6 +741,7 @@ class FilterVideos(object):
         # todo: 添加app和region的风险过滤。
         st_viewed = time.time()
         videos_filtered = self.filter_videos_with_risk_video(self.video_ids, self.app_type, region_code)
+        videos_filtered = self.filter_videos_with_festival(videos_filtered)
         # log_.info({
         #     'logTimestamp': int(time.time() * 1000),
         #     'pool_type': "zhangbo-filter-pool_type",
@@ -892,6 +905,37 @@ class FilterVideos(object):
         else:
             return video_ids[:min(self.force_truncation, len(video_ids))]
 
+    def filter_videos_with_festival(self, video_ids: List[int]):
+        # 1 获取当前时间,判断过滤标准
+        now_date = datetime.today()
+        now_dt = datetime.strftime(now_date, '%Y%m%d%H')
+        now_dt_int = int(now_dt)
+        filter_fes = []
+        for k, v in FESTIVAL.items():
+            if now_dt_int >= v[0] and now_dt_int < v[1]:
+                filter_fes.append(k)
+        if len(filter_fes) == 0:
+            return video_ids
+        # 2 过滤
+        redis_keys = ["alg_recsys_video_tags_" + str(id) for id in video_ids]
+        redis_helper = RedisHelper()
+        redis_values = redis_helper.get_batch_key(redis_keys)
+        if redis_values and len(redis_values) > 0 and len(redis_values) == len(redis_keys):
+            video_ids_new = []
+            for id, tags in zip(video_ids, redis_values):
+                flag = True
+                if tags and len(tags) > 0:
+                    for t in tags.split(","):
+                        if t in filter_fes:
+                            flag = False
+                            break
+                if flag:
+                    video_ids_new.append(id)
+            return video_ids_new
+        else:
+            return video_ids
+
+
 if __name__ == '__main__':
     user = [
         ('weixin_openid_o0w175fDc8pNnywrYN49E341tKfI', ''),