|
@@ -0,0 +1,65 @@
|
|
|
|
+import datetime
|
|
|
|
+import traceback
|
|
|
|
+import os
|
|
|
|
+
|
|
|
|
+from utils import execute_sql_from_odps
|
|
|
|
+from db_helper import RedisHelper
|
|
|
|
+from config import set_config
|
|
|
|
+from log import Log
|
|
|
|
+
|
|
|
|
+config_ = set_config()
|
|
|
|
+log_ = Log()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def update_bottom_videos():
|
|
|
|
+ """更新兜底视频"""
|
|
|
|
+ try:
|
|
|
|
+ # 获取昨日播放量top1000的视频
|
|
|
|
+ now_date = datetime.datetime.today()
|
|
|
|
+ delta_date = now_date - datetime.timedelta(days=1)
|
|
|
|
+
|
|
|
|
+ sql = "SELECT video_playcount.videoid, video_playcount.play_count " \
|
|
|
|
+ "FROM (" \
|
|
|
|
+ "SELECT videoid, COUNT(*) play_count " \
|
|
|
|
+ "FROM loghubods.video_action_log_applet " \
|
|
|
|
+ "WHERE dt = {} " \
|
|
|
|
+ "AND business = 'videoPlay' " \
|
|
|
|
+ "GROUP BY videoid" \
|
|
|
|
+ ") video_playcount INNER " \
|
|
|
|
+ "JOIN ( " \
|
|
|
|
+ "SELECT id " \
|
|
|
|
+ "FROM videoods.wx_video " \
|
|
|
|
+ "WHERE transcode_status = 3 " \
|
|
|
|
+ "AND STATUS = 1 " \
|
|
|
|
+ "AND recommend_status IN ( - 6, 1)" \
|
|
|
|
+ ") video_status " \
|
|
|
|
+ "ON video_playcount.videoid = video_status.id " \
|
|
|
|
+ "ORDER BY video_playcount.play_count DESC " \
|
|
|
|
+ "LIMIT 1000;".format(delta_date.strftime('%Y%m%d'))
|
|
|
|
+
|
|
|
|
+ records = execute_sql_from_odps(project='loghubods', sql=sql)
|
|
|
|
+
|
|
|
|
+ # 视频按照昨日播放量写入redis
|
|
|
|
+ videos = {}
|
|
|
|
+ with records.open_reader() as reader:
|
|
|
|
+ for record in reader:
|
|
|
|
+ video_id = record['videoid']
|
|
|
|
+ videos[video_id] = record['play_count']
|
|
|
|
+ print(videos)
|
|
|
|
+
|
|
|
|
+ redis_helper = RedisHelper()
|
|
|
|
+ redis_helper.add_data_with_zset(key_name=config_.BOTTOM_KEY_NAME, data=videos)
|
|
|
|
+ # 移除bottom key的过期时间,将其转换为永久状态
|
|
|
|
+ redis_helper.persist_key(key_name=config_.BOTTOM_KEY_NAME)
|
|
|
|
+
|
|
|
|
+ log_.info('{} update bottom videos success!'.format(now_date))
|
|
|
|
+ except Exception as e:
|
|
|
|
+ log_.error(traceback.format_exc())
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+if __name__ == '__main__':
|
|
|
|
+ update_bottom_videos()
|
|
|
|
+ # 将日志上传到oss
|
|
|
|
+ log_cmd = "ossutil cp -r -f {} oss://{}/{}".format(log_.logname, config_.BUCKET_NAME,
|
|
|
|
+ config_.OSS_FOLDER_LOGS + 'bottom_videos/')
|
|
|
|
+ os.system(log_cmd)
|