videos_filter.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. import time
  2. import json
  3. import traceback
  4. import ast
  5. from datetime import date, timedelta, datetime
  6. from utils import filter_video_status, send_msg_to_feishu, filter_video_status_app
  7. from db_helper import RedisHelper
  8. from config import set_config
  9. from log import Log
  10. config_, env = set_config()
  11. log_ = Log()
  12. def filter_position_videos():
  13. """按位置排序视频过滤"""
  14. log_.info("position videos filter start...")
  15. position_key_list = [config_.RECALL_POSITION1_KEY_NAME, config_.RECALL_POSITION2_KEY_NAME]
  16. redis_helper = RedisHelper()
  17. for key_name in position_key_list:
  18. position = key_name.split('.')[-1]
  19. log_.info("position = {}".format(position))
  20. # 获取数据
  21. position_videos = redis_helper.get_data_from_redis(key_name=key_name)
  22. if position_videos is None:
  23. log_.info('position {} videos is None!'.format(position))
  24. continue
  25. else:
  26. # 过滤
  27. position_video_ids = [int(video_id) for video_id in ast.literal_eval(position_videos)]
  28. filter_video_ids = filter_video_status(video_ids=position_video_ids)
  29. # 重新写入redis
  30. redis_helper.set_data_to_redis(key_name=key_name,
  31. value=str(filter_video_ids),
  32. expire_time=30 * 3600)
  33. log_.info('position {} videos filter end!'.format(position))
  34. log_.info("position videos filter end!")
  35. def filter_relevant_videos():
  36. """运营强插相关推荐视频过滤"""
  37. log_.info("relevant videos with op filter filter start...")
  38. # 读取需要过滤的头部视频id
  39. redis_helper = RedisHelper()
  40. head_videos = redis_helper.get_data_from_set(key_name=config_.RELEVANT_TOP_VIDEOS_KEY_NAME)
  41. if head_videos is None or len(head_videos) == 0:
  42. log_.info("relevant videos with op filter end! head_videos = {}".format(head_videos))
  43. return
  44. # 过滤
  45. remove_head_vids = []
  46. for head_vid in head_videos:
  47. key_name = '{}{}'.format(config_.RELEVANT_VIDEOS_WITH_OP_KEY_NAME, head_vid)
  48. # 头部视频 对应的key不存在时,将head_vid移除对应redis
  49. if not redis_helper.key_exists(key_name=key_name):
  50. remove_head_vids.append(head_vid)
  51. log_.info('head_vid = {} relevant redis key not exist!'.format(head_vid))
  52. continue
  53. # 获取头部视频对应的相关视频
  54. relevant_videos = redis_helper.get_data_from_redis(key_name=key_name)
  55. # 该视频没有指定的相关性视频,将head_vid移除对应redis
  56. if relevant_videos is None:
  57. remove_head_vids.append(head_vid)
  58. log_.info('head_vid = {} not have relevant videos!'.format(head_vid))
  59. continue
  60. # 过滤
  61. relevant_videos = json.loads(relevant_videos)
  62. relevant_video_ids = [int(item['recommend_vid']) for item in relevant_videos]
  63. filtered_videos = filter_video_status(video_ids=relevant_video_ids)
  64. # 保留可推荐 且生效中 的视频
  65. relevant_videos_new = [
  66. item for item in relevant_videos
  67. if int(item['recommend_vid']) in filtered_videos and int(item['finish_time']) > int(time.time())
  68. ]
  69. # 过滤后没有符合的视频,将head_vid移除对应redis,删除对应的相关推荐的key
  70. if len(relevant_videos_new) == 0:
  71. remove_head_vids.append(head_vid)
  72. redis_helper.del_keys(key_name=key_name)
  73. log_.info('head_vid = {} filtered finished! new relevant videos count = {}'.format(
  74. head_vid, len(relevant_videos_new)))
  75. continue
  76. # 重新写入redis
  77. # 以最晚结束的视频的结束时间 - 当前时间 + 5s 作为key的过期时间
  78. finish_time_list = [item['finish_time'] for item in relevant_videos_new]
  79. expire_time = max(finish_time_list) - int(time.time()) + 5
  80. if expire_time <= 0:
  81. log_.info('head_vid = {} expire_time <= 0!'.format(head_vid))
  82. continue
  83. # 存入redis
  84. redis_helper.set_data_to_redis(key_name=key_name,
  85. value=json.dumps(relevant_videos_new),
  86. expire_time=expire_time)
  87. log_.info('head_vid = {} filtered finished! new relevant videos count = {}'.format(
  88. head_vid, len(relevant_videos_new)))
  89. # 将需要移除的头部视频id进行移除
  90. if len(remove_head_vids) == 0:
  91. log_.info('head videos remove finished! remove_head_vids = {}'.format(remove_head_vids))
  92. log_.info("relevant videos with op filter end!")
  93. return
  94. redis_helper.remove_value_from_set(key_name=config_.RELEVANT_TOP_VIDEOS_KEY_NAME, values=tuple(remove_head_vids))
  95. log_.info('head videos remove finished! remove_head_vids = {}'.format(remove_head_vids))
  96. log_.info("relevant videos with op filter end!")
  97. def filter_rov_pool(app_type=None):
  98. """ROV召回池视频过滤"""
  99. log_.info("rov recall pool filter start ...")
  100. # 拼接redis-key
  101. if app_type is None:
  102. key_name, _ = get_pool_redis_key(pool_type='rov')
  103. else:
  104. log_.info("appType = {}".format(app_type))
  105. key_name, _ = get_pool_redis_key(pool_type='rov', app_type=app_type)
  106. # 获取视频
  107. redis_helper = RedisHelper()
  108. data = redis_helper.get_data_zset_with_index(key_name=key_name, start=0, end=-1)
  109. if data is None:
  110. log_.info("data is None")
  111. log_.info("rov recall pool filter end!")
  112. return
  113. # 过滤
  114. video_ids = [int(video_id) for video_id in data]
  115. if app_type == config_.APP_TYPE['APP']:
  116. filtered_result = filter_video_status_app(video_ids=video_ids)
  117. else:
  118. filtered_result = filter_video_status(video_ids=video_ids)
  119. # 求差集,获取需要过滤掉的视频,并从redis中移除
  120. filter_videos = set(video_ids) - set(filtered_result)
  121. log_.info("video_ids size = {}, filtered size = {}, filter sizer = {}".format(len(video_ids),
  122. len(filtered_result),
  123. len(filter_videos)))
  124. if len(filter_videos) == 0:
  125. log_.info("rov recall pool filter end!")
  126. return
  127. redis_helper.remove_value_from_zset(key_name=key_name, value=list(filter_videos))
  128. log_.info("rov recall pool filter end!")
  129. def filter_flow_pool():
  130. """流量池视频过滤"""
  131. log_.info("flow pool filter start ...")
  132. app_type_list = [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]
  133. for _, app_type in config_.APP_TYPE.items():
  134. log_.info('app_type {} videos filter start...'.format(app_type))
  135. if app_type in app_type_list:
  136. filter_flow_pool_18_19(app_type=app_type)
  137. else:
  138. # 拼接redis-key
  139. key_name = get_pool_redis_key(pool_type='flow', app_type=app_type)
  140. # 获取视频
  141. redis_helper = RedisHelper()
  142. data = redis_helper.get_data_zset_with_index(key_name=key_name, start=0, end=-1)
  143. if data is None:
  144. log_.info("data is None")
  145. log_.info("app_type {} videos filter end!".format(app_type))
  146. continue
  147. # videoId与flowPool做mapping
  148. video_ids = []
  149. mapping = {}
  150. for video in data:
  151. video_id, flow_pool = video.split('-')
  152. video_id = int(video_id)
  153. if video_id not in video_ids:
  154. video_ids.append(video_id)
  155. mapping[video_id] = [flow_pool]
  156. else:
  157. mapping[video_id].append(flow_pool)
  158. # 过滤
  159. if len(video_ids) == 0:
  160. log_.info("data size = {}, video_ids size = {}, data = {}".format(len(data), len(video_ids), data))
  161. log_.info("app_type {} videos filter end!".format(app_type))
  162. continue
  163. if app_type == config_.APP_TYPE['APP']:
  164. filtered_result = filter_video_status_app(video_ids=video_ids)
  165. else:
  166. filtered_result = filter_video_status(video_ids=video_ids)
  167. # 求差集,获取需要过滤掉的视频,并从redis中移除
  168. filter_videos = set(video_ids) - set(filtered_result)
  169. log_.info("data size = {}, video_ids size = {}, filtered size = {}, filter sizer = {}".format(
  170. len(data), len(video_ids), len(filtered_result), len(filter_videos)))
  171. # 移除
  172. if len(filter_videos) == 0:
  173. log_.info("app_type {} videos filter end!".format(app_type))
  174. continue
  175. remove_videos = ['{}-{}'.format(video_id, flow_pool)
  176. for video_id in filter_videos
  177. for flow_pool in mapping[video_id]]
  178. redis_helper.remove_value_from_zset(key_name=key_name, value=remove_videos)
  179. log_.info("app_type {} videos filter end!".format(app_type))
  180. log_.info("flow pool filter end!")
  181. def filter_flow_pool_18_19(app_type):
  182. """流量池视频过滤"""
  183. log_.info('app_type {} videos filter start...'.format(app_type))
  184. # 拼接redis-key
  185. key_name = get_pool_redis_key(pool_type='flow', app_type=app_type)
  186. # 获取视频
  187. redis_helper = RedisHelper()
  188. data = redis_helper.get_data_zset_with_index(key_name=key_name, start=0, end=-1)
  189. if data is None:
  190. log_.info("data is None")
  191. log_.info("app_type {} videos filter end!".format(app_type))
  192. return
  193. video_ids = [int(video_id) for video_id in data]
  194. # 过滤
  195. if len(video_ids) == 0:
  196. log_.info("data size = {}, video_ids size = {}, data = {}".format(len(data), len(video_ids), data))
  197. log_.info("app_type {} videos filter end!".format(app_type))
  198. return
  199. filtered_result = filter_video_status(video_ids=video_ids)
  200. # 求差集,获取需要过滤掉的视频,并从redis中移除
  201. filter_videos = set(video_ids) - set(filtered_result)
  202. log_.info("data size = {}, video_ids size = {}, filtered size = {}, filter sizer = {}".format(
  203. len(data), len(video_ids), len(filtered_result), len(filter_videos)))
  204. # 移除
  205. if len(filter_videos) == 0:
  206. log_.info("app_type {} videos filter end!".format(app_type))
  207. return
  208. redis_helper.remove_value_from_zset(key_name=key_name, value=filter_videos)
  209. log_.info("app_type {} videos filter end!".format(app_type))
  210. log_.info("flow pool filter end!")
  211. def filter_bottom():
  212. """兜底视频过滤"""
  213. log_.info("bottom videos filter start ...")
  214. # 获取视频
  215. redis_helper = RedisHelper()
  216. data = redis_helper.get_data_zset_with_index(key_name=config_.BOTTOM_KEY_NAME, start=0, end=-1)
  217. if data is None:
  218. log_.info("data is None")
  219. log_.info("bottom videos filter end!")
  220. return
  221. # 过滤
  222. video_ids = [int(video_id) for video_id in data]
  223. filtered_result = filter_video_status(video_ids=video_ids)
  224. # 求差集,获取需要过滤掉的视频,并从redis中移除
  225. filter_videos = set(video_ids) - set(filtered_result)
  226. log_.info("video_ids size = {}, filtered size = {}, filter sizer = {}".format(len(video_ids),
  227. len(filtered_result),
  228. len(filter_videos)))
  229. if len(filter_videos) == 0:
  230. log_.info("bottom videos filter end!")
  231. return
  232. redis_helper.remove_value_from_zset(key_name=config_.BOTTOM_KEY_NAME, value=list(filter_videos))
  233. log_.info("bottom videos filter end!")
  234. def filter_rov_updated():
  235. """修改过ROV的视频过滤"""
  236. log_.info("update rov videos filter start ...")
  237. # 获取视频
  238. redis_helper = RedisHelper()
  239. data = redis_helper.get_data_zset_with_index(key_name=config_.UPDATE_ROV_KEY_NAME, start=0, end=-1)
  240. if data is None:
  241. log_.info("data is None")
  242. log_.info("update rov videos filter end!")
  243. return
  244. # 过滤
  245. video_ids = [int(video_id) for video_id in data]
  246. filtered_result = filter_video_status(video_ids=video_ids)
  247. # 求差集,获取需要过滤掉的视频,并从redis中移除
  248. filter_videos = set(video_ids) - set(filtered_result)
  249. log_.info("video_ids size = {}, filtered size = {}, filter sizer = {}".format(len(video_ids),
  250. len(filtered_result),
  251. len(filter_videos)))
  252. if len(filter_videos) == 0:
  253. log_.info("update rov videos filter end!")
  254. return
  255. redis_helper.remove_value_from_zset(key_name=config_.UPDATE_ROV_KEY_NAME, value=list(filter_videos))
  256. log_.info("update rov videos filter end!")
  257. def filter_rov_updated_app():
  258. """修改过ROV的视频过滤-app推荐状态过滤"""
  259. log_.info("update rov videos app filter start ...")
  260. # 获取视频
  261. redis_helper = RedisHelper()
  262. data = redis_helper.get_data_zset_with_index(key_name=config_.UPDATE_ROV_KEY_NAME_APP, start=0, end=-1)
  263. if data is None:
  264. log_.info("data is None")
  265. log_.info("update rov videos app filter end!")
  266. return
  267. # 过滤
  268. video_ids = [int(video_id) for video_id in data]
  269. filtered_result = filter_video_status_app(video_ids=video_ids)
  270. # 求差集,获取需要过滤掉的视频,并从redis中移除
  271. filter_videos = set(video_ids) - set(filtered_result)
  272. log_.info("video_ids size = {}, filtered size = {}, filter sizer = {}".format(len(video_ids),
  273. len(filtered_result),
  274. len(filter_videos)))
  275. if len(filter_videos) == 0:
  276. log_.info("update rov videos app filter end!")
  277. return
  278. redis_helper.remove_value_from_zset(key_name=config_.UPDATE_ROV_KEY_NAME_APP, value=list(filter_videos))
  279. log_.info("update rov videos app filter end!")
  280. def get_pool_redis_key(pool_type, app_type=None):
  281. """
  282. 拼接key
  283. :param pool_type: type-string {'rov': rov召回池, 'flow': 流量池}
  284. :param app_type: 产品标识
  285. :return: key_name
  286. """
  287. redis_helper = RedisHelper()
  288. if pool_type == 'rov':
  289. # appType = 6
  290. if app_type == config_.APP_TYPE['SHORT_VIDEO']:
  291. # 获取当前所在小时
  292. redis_date = datetime.now().hour
  293. # 判断热度列表是否更新,未更新则使用前一小时的热度列表
  294. key_name = '{}{}.{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, app_type, redis_date)
  295. if redis_helper.key_exists(key_name):
  296. return key_name, redis_date
  297. else:
  298. if redis_date == 0:
  299. redis_date = 23
  300. else:
  301. redis_date = redis_date - 1
  302. key_name = '{}{}.{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, app_type, redis_date)
  303. return key_name, redis_date
  304. # appType: [18, 19]
  305. elif app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
  306. key_name_prefix = f'{config_.RECALL_KEY_NAME_PREFIX_APP_TYPE}{app_type}.'
  307. now_date = datetime.today().strftime('%Y%m%d')
  308. now_h = datetime.now().hour
  309. key_name = f"{key_name_prefix}{now_date}.{now_h}"
  310. if redis_helper.key_exists(key_name):
  311. return key_name, now_h
  312. else:
  313. if now_h == 0:
  314. redis_h = 23
  315. redis_date = (datetime.today() - timedelta(days=1)).strftime('%Y%m%d')
  316. else:
  317. redis_h = now_h - 1
  318. redis_date = now_date
  319. key_name = f"{key_name_prefix}{redis_date}.{redis_h}"
  320. return key_name, redis_h
  321. else:
  322. # appType = 13 票圈视频app
  323. if app_type == config_.APP_TYPE['APP']:
  324. key_name_prefix = config_.RECALL_KEY_NAME_PREFIX_APP
  325. # # appType: [18, 19]
  326. # elif app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
  327. # key_name_prefix = f'{config_.RECALL_KEY_NAME_PREFIX_APP_TYPE}{app_type}.'
  328. # 其他
  329. else:
  330. key_name_prefix = config_.RECALL_KEY_NAME_PREFIX
  331. # 判断热度列表是否更新,未更新则使用前一天的热度列表
  332. key_name = key_name_prefix + time.strftime('%Y%m%d')
  333. if redis_helper.key_exists(key_name):
  334. redis_date = date.today().strftime('%Y%m%d')
  335. else:
  336. redis_date = (date.today() - timedelta(days=1)).strftime('%Y%m%d')
  337. key_name = key_name_prefix + redis_date
  338. return key_name, redis_date
  339. elif pool_type == 'flow':
  340. # 流量池
  341. return config_.FLOWPOOL_KEY_NAME_PREFIX + str(app_type)
  342. else:
  343. log_.error('pool type error')
  344. return None, None
  345. def filter_app_pool():
  346. """过滤票圈视频APP小时级数据"""
  347. log_.info("app pool filter start ...")
  348. redis_helper = RedisHelper()
  349. # 获取当前日期
  350. now_date = date.today().strftime('%Y%m%d')
  351. # 获取当前所在小时
  352. now_h = datetime.now().hour
  353. log_.info(f'now_date = {now_date}, now_h = {now_h}.')
  354. if now_h < 7:
  355. redis_date = (date.today() - timedelta(days=1)).strftime('%Y%m%d')
  356. redis_h = 21
  357. elif now_h > 21:
  358. redis_date = now_date
  359. redis_h = 21
  360. else:
  361. if now_h % 2 == 0:
  362. redis_date = now_date
  363. redis_h = now_h - 1
  364. else:
  365. redis_date = now_date
  366. redis_h = now_h
  367. log_.info(f'redis_date = {redis_date}, redis_h = {redis_h}.')
  368. # 拼接key
  369. key_name = f'{config_.APP_FINAL_RECALL_KEY_NAME_PREFIX}{redis_date}.{redis_h}'
  370. # 获取视频
  371. data = redis_helper.get_data_zset_with_index(key_name=key_name, start=0, end=-1)
  372. if data is None:
  373. log_.info("data is None")
  374. log_.info("app pool filter end!")
  375. return
  376. # 过滤
  377. video_ids = [int(video_id) for video_id in data]
  378. filtered_result = filter_video_status_app(video_ids=video_ids)
  379. # 求差集,获取需要过滤掉的视频,并从redis中移除
  380. filter_videos = set(video_ids) - set(filtered_result)
  381. log_.info("video_ids size = {}, filtered size = {}, filter sizer = {}".format(len(video_ids),
  382. len(filtered_result),
  383. len(filter_videos)))
  384. if len(filter_videos) == 0:
  385. log_.info("app pool filter end!")
  386. return
  387. redis_helper.remove_value_from_zset(key_name=key_name, value=list(filter_videos))
  388. log_.info("app pool filter end!")
  389. def filter_rov_h():
  390. """过滤小程序小时级数据"""
  391. rule_params = config_.RULE_PARAMS
  392. log_.info("rov_h pool filter start ...")
  393. redis_helper = RedisHelper()
  394. # 获取当前日期
  395. now_date = date.today().strftime('%Y%m%d')
  396. # 获取当前所在小时
  397. now_h = datetime.now().hour
  398. log_.info(f'now_date = {now_date}, now_h = {now_h}.')
  399. for key, value in rule_params.items():
  400. log_.info(f"rule = {key}, param = {value}")
  401. # 需过滤两个视频列表
  402. key_prefix_list = [config_.RECALL_KEY_NAME_PREFIX_BY_H, config_.RECALL_KEY_NAME_PREFIX_DUP_H]
  403. for i, key_prefix in enumerate(key_prefix_list):
  404. # 拼接key
  405. key_name = f"{key_prefix}{key}.{now_date}.{now_h}"
  406. log_.info(f"key_name: {key_name}")
  407. # 获取视频
  408. data = redis_helper.get_data_zset_with_index(key_name=key_name, start=0, end=-1)
  409. if data is None:
  410. log_.info("data is None")
  411. log_.info("filter end!")
  412. continue
  413. # 过滤
  414. video_ids = [int(video_id) for video_id in data]
  415. filtered_result = filter_video_status(video_ids=video_ids)
  416. # 求差集,获取需要过滤掉的视频,并从redis中移除
  417. filter_videos = set(video_ids) - set(filtered_result)
  418. log_.info("video_ids size = {}, filtered size = {}, filter sizer = {}".format(len(video_ids),
  419. len(filtered_result),
  420. len(filter_videos)))
  421. if len(filter_videos) == 0:
  422. log_.info("filter end!")
  423. continue
  424. redis_helper.remove_value_from_zset(key_name=key_name, value=list(filter_videos))
  425. if i == 0:
  426. # 将小时级的数据需要过滤的视频加入到线上过滤应用列表中
  427. redis_helper.add_data_with_set(key_name=f"{config_.H_VIDEO_FILER}{key}",
  428. values=filter_videos, expire_time=2*3600)
  429. log_.info("rov_h pool filter end!")
  430. def filter_rov_day():
  431. """过滤小程序天级数据"""
  432. rule_params = config_.RULE_PARAMS_DAY
  433. log_.info("rov_day pool filter start ...")
  434. redis_helper = RedisHelper()
  435. # 获取当前日期
  436. now_date = date.today().strftime('%Y%m%d')
  437. log_.info(f'now_date = {now_date}.')
  438. for key, value in rule_params.items():
  439. log_.info(f"rule = {key}, param = {value}")
  440. # 需过滤三个视频列表
  441. key_prefix_list = [
  442. config_.RECALL_KEY_NAME_PREFIX_BY_DAY,
  443. config_.RECALL_KEY_NAME_PREFIX_DUP_DAY_PRE,
  444. config_.RECALL_KEY_NAME_PREFIX_DUP_DAY_NOW
  445. ]
  446. for i, key_prefix in enumerate(key_prefix_list):
  447. # 拼接key
  448. key_name = f"{key_prefix}{key}.{now_date}"
  449. log_.info(f"key_name: {key_name}")
  450. # 获取视频
  451. data = redis_helper.get_data_zset_with_index(key_name=key_name, start=0, end=-1)
  452. if data is None:
  453. log_.info("data is None")
  454. log_.info("filter end!")
  455. continue
  456. # 过滤
  457. video_ids = [int(video_id) for video_id in data]
  458. filtered_result = filter_video_status(video_ids=video_ids)
  459. # 求差集,获取需要过滤掉的视频,并从redis中移除
  460. filter_videos = set(video_ids) - set(filtered_result)
  461. log_.info("video_ids size = {}, filtered size = {}, filter sizer = {}".format(len(video_ids),
  462. len(filtered_result),
  463. len(filter_videos)))
  464. if len(filter_videos) == 0:
  465. log_.info("filter end!")
  466. continue
  467. redis_helper.remove_value_from_zset(key_name=key_name, value=list(filter_videos))
  468. log_.info("rov_day pool filter end!")
  469. def main():
  470. try:
  471. # ROV召回池视频过滤
  472. filter_rov_pool()
  473. # appType = 6,ROV召回池视频过滤
  474. # filter_rov_pool(app_type=config_.APP_TYPE['SHORT_VIDEO'])
  475. # appType = 13,票圈视频APP视频过滤
  476. filter_rov_pool(app_type=config_.APP_TYPE['APP'])
  477. # appType = 18, ROV召回池视频过滤
  478. filter_rov_pool(app_type=config_.APP_TYPE['LAO_HAO_KAN_VIDEO'])
  479. # appType = 19, ROV召回池视频过滤
  480. filter_rov_pool(app_type=config_.APP_TYPE['ZUI_JING_QI'])
  481. # 流量池视频过滤
  482. filter_flow_pool()
  483. # 兜底视频过滤
  484. filter_bottom()
  485. # 修改过ROV的视频过滤
  486. filter_rov_updated()
  487. filter_rov_updated_app()
  488. # 运营强插相关推荐视频过滤
  489. filter_relevant_videos()
  490. # 按位置排序视频过滤
  491. filter_position_videos()
  492. # 过滤票圈视频APP小时级数据
  493. filter_app_pool()
  494. # 过滤小程序小时级数据
  495. filter_rov_h()
  496. # 过滤小程序天级数据
  497. filter_rov_day()
  498. except Exception as e:
  499. log_.error(traceback.format_exc())
  500. send_msg_to_feishu(
  501. webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
  502. key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
  503. msg_text='{} - 过滤失败 \n {}'.format(config_.ENV_TEXT, traceback.format_exc())
  504. )
  505. return
  506. if __name__ == '__main__':
  507. main()