|
@@ -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', ''),
|