|
@@ -238,7 +238,7 @@ class FilterVideos(object):
|
|
|
else:
|
|
|
return [int(video_id) for video_id in filtered_viewed_result]
|
|
|
|
|
|
- def filter_videos(self, pool_type='rov'):
|
|
|
+ def filter_videos(self, pool_type='rov', province_code=None):
|
|
|
"""视频过滤"""
|
|
|
# 预曝光过滤
|
|
|
st_pre = time.time()
|
|
@@ -286,8 +286,22 @@ class FilterVideos(object):
|
|
|
})
|
|
|
if not filtered_viewed_result:
|
|
|
return None
|
|
|
+ filtered_viewed_videos = [int(video_id) for video_id in filtered_viewed_result]
|
|
|
+ if pool_type == 'flow':
|
|
|
+ # 流量池视频需过滤屏蔽视频
|
|
|
+ if province_code is None:
|
|
|
+ return filtered_viewed_videos
|
|
|
+ else:
|
|
|
+ shield_key_name_list = config_.SHIELD_CONFIG.get(province_code, None)
|
|
|
+ if shield_key_name_list is not None:
|
|
|
+ filtered_shield_video_ids = self.filter_shield_video(
|
|
|
+ video_ids=filtered_viewed_videos, shield_key_name_list=shield_key_name_list
|
|
|
+ )
|
|
|
+ return filtered_shield_video_ids
|
|
|
+ else:
|
|
|
+ return filtered_viewed_videos
|
|
|
else:
|
|
|
- return [int(video_id) for video_id in filtered_viewed_result]
|
|
|
+ return filtered_viewed_videos
|
|
|
|
|
|
def filter_video_previewed(self, video_ids):
|
|
|
"""
|
|
@@ -313,39 +327,39 @@ class FilterVideos(object):
|
|
|
filtered_videos = [video_id for video_id in video_ids if video_id not in pe_videos]
|
|
|
return filtered_videos
|
|
|
|
|
|
- def filter_video_status(self, video_ids):
|
|
|
- """
|
|
|
- 对视频状态进行过滤
|
|
|
- :param video_ids: 视频id列表 type-list
|
|
|
- :return: filtered_videos
|
|
|
- """
|
|
|
- if len(video_ids) == 1:
|
|
|
- sql = "set hg_experimental_enable_shard_pruning=off; " \
|
|
|
- "SELECT video_id " \
|
|
|
- "FROM {} " \
|
|
|
- "WHERE audit_status = 5 " \
|
|
|
- "AND applet_rec_status IN (1, -6) " \
|
|
|
- "AND open_status = 1 " \
|
|
|
- "AND payment_status = 0 " \
|
|
|
- "AND encryption_status != 5 " \
|
|
|
- "AND transcoding_status = 3 " \
|
|
|
- "AND video_id IN ({});".format(config_.VIDEO_STATUS, video_ids[0])
|
|
|
- else:
|
|
|
- sql = "set hg_experimental_enable_shard_pruning=off; " \
|
|
|
- "SELECT video_id " \
|
|
|
- "FROM {} " \
|
|
|
- "WHERE audit_status = 5 " \
|
|
|
- "AND applet_rec_status IN (1, -6) " \
|
|
|
- "AND open_status = 1 " \
|
|
|
- "AND payment_status = 0 " \
|
|
|
- "AND encryption_status != 5 " \
|
|
|
- "AND transcoding_status = 3 " \
|
|
|
- "AND video_id IN {};".format(config_.VIDEO_STATUS, tuple(video_ids))
|
|
|
-
|
|
|
- hologres_helper = HologresHelper()
|
|
|
- data = hologres_helper.get_data(sql=sql)
|
|
|
- filtered_videos = [int(temp[0]) for temp in data]
|
|
|
- return filtered_videos
|
|
|
+ # def filter_video_status(self, video_ids):
|
|
|
+ # """
|
|
|
+ # 对视频状态进行过滤
|
|
|
+ # :param video_ids: 视频id列表 type-list
|
|
|
+ # :return: filtered_videos
|
|
|
+ # """
|
|
|
+ # if len(video_ids) == 1:
|
|
|
+ # sql = "set hg_experimental_enable_shard_pruning=off; " \
|
|
|
+ # "SELECT video_id " \
|
|
|
+ # "FROM {} " \
|
|
|
+ # "WHERE audit_status = 5 " \
|
|
|
+ # "AND applet_rec_status IN (1, -6) " \
|
|
|
+ # "AND open_status = 1 " \
|
|
|
+ # "AND payment_status = 0 " \
|
|
|
+ # "AND encryption_status != 5 " \
|
|
|
+ # "AND transcoding_status = 3 " \
|
|
|
+ # "AND video_id IN ({});".format(config_.VIDEO_STATUS, video_ids[0])
|
|
|
+ # else:
|
|
|
+ # sql = "set hg_experimental_enable_shard_pruning=off; " \
|
|
|
+ # "SELECT video_id " \
|
|
|
+ # "FROM {} " \
|
|
|
+ # "WHERE audit_status = 5 " \
|
|
|
+ # "AND applet_rec_status IN (1, -6) " \
|
|
|
+ # "AND open_status = 1 " \
|
|
|
+ # "AND payment_status = 0 " \
|
|
|
+ # "AND encryption_status != 5 " \
|
|
|
+ # "AND transcoding_status = 3 " \
|
|
|
+ # "AND video_id IN {};".format(config_.VIDEO_STATUS, tuple(video_ids))
|
|
|
+ #
|
|
|
+ # hologres_helper = HologresHelper()
|
|
|
+ # data = hologres_helper.get_data(sql=sql)
|
|
|
+ # filtered_videos = [int(temp[0]) for temp in data]
|
|
|
+ # return filtered_videos
|
|
|
|
|
|
def filter_video_viewed(self, video_ids, types=(1, 6,)):
|
|
|
"""
|
|
@@ -373,6 +387,25 @@ class FilterVideos(object):
|
|
|
filtered_videos = result['data']
|
|
|
return filtered_videos
|
|
|
|
|
|
+ def filter_shield_video(self, video_ids, shield_key_name_list):
|
|
|
+ """
|
|
|
+ 过滤屏蔽视频视频
|
|
|
+ :param video_ids: 需过滤的视频列表 type-list
|
|
|
+ :param shield_key_name_list: 过滤视频 redis-key
|
|
|
+ :return: filtered_videos 过滤后的列表 type-list
|
|
|
+ """
|
|
|
+ if len(video_ids) == 0:
|
|
|
+ return video_ids
|
|
|
+ # 根据Redis缓存中的数据过滤
|
|
|
+ redis_helper = RedisHelper()
|
|
|
+ for shield_key_name in shield_key_name_list:
|
|
|
+ shield_videos_list = redis_helper.get_data_from_set(key_name=shield_key_name)
|
|
|
+ if not shield_videos_list:
|
|
|
+ continue
|
|
|
+ shield_videos = [int(video) for video in shield_videos_list]
|
|
|
+ video_ids = [video_id for video_id in video_ids if video_id not in shield_videos]
|
|
|
+ return video_ids
|
|
|
+
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
# filter_ = FilterVideos(app_type=1, mid='22', uid='www', video_ids=[1, 2, 3, 55])
|