# -*- coding: utf-8 -*-
# @ModuleName: old_video_recall
# @Author: Liqian
# @Time: 2022/4/25 下午3:33
# @Software: PyCharm
import pandas as pd
from datetime import datetime
from my_utils import get_data_from_odps, filter_video_status
from db_helper import RedisHelper
from my_config import set_config
from log import Log

config_, env = set_config()
log_ = Log()


def get_old_videos():
    """获取老旧视频"""
    now_date = datetime.strftime(datetime.today(), '%Y%m%d')
    log_.info(f"now_date = {now_date}")
    project = config_.OLD_VIDEOS_PROJECT
    table = config_.OLD_VIDEOS_TABLE
    records = get_data_from_odps(project=project, table=table, date=now_date)
    video_ids = [int(record['videoid']) for record in records]
    log_.info(f'videos count = {len(video_ids)}')
    if len(video_ids) > 0:
        # 对视频状态进行过滤
        filtered_videos = filter_video_status(list(video_ids))
        log_.info('filter videos status finished, filtered_videos count={}'.format(len(filtered_videos)))
        if not filtered_videos:
            log_.info('视频状态不符合分发')
            return None
        # 上传数据到redis
        key_name = f'{config_.RECALL_KEY_NAME_PREFIX_OLD_VIDEOS}{now_date}'
        redis_helper = RedisHelper()
        # 如果key已存在,删除key
        if redis_helper.key_exists(key_name):
            redis_helper.del_keys(key_name)
        # 写入redis
        redis_helper.add_data_with_set(key_name=key_name, values=filtered_videos, expire_time=24 * 3600)
        log_.info('data to redis finished!')
    else:
        log_.info(f'no data!')


if __name__ == '__main__':
    get_old_videos()