收集Bilibili直播间的轮播列表并预测未来给定时间录播播放的视频。
- python >= 3.6
- requests
- tqdm
- pytz
目前没找到B站直接获取轮播列表的API,暂时采用定时获取当前轮播视频的方式累积轮播列表的信息。
# 每60s获取一次当前轮播视频,应保持后台运行
python roundplay_info_fetcher.py <room_id> --save_dir results --sleep_sec 60
# 获取收集到的轮播列表中所有视频的信息(包括视频时长)
python gen_roundplay_video_list.py --fetch_folder results/<room_id> --sleep_sec 2
录播列表存储在results/<room_id>
下,包括:
<datetime>.txt.gz
: 累积的当前录播视频查询结果video_info.txt
: 累积的录播视频信息roundplay_seq.txt
: 录播列表,各列分别为[在录播列表内的序号(从1开始), BV号, 分P序号, 视频时长(秒), URL, 视频标题]
# 默认输入时间为北京时间,格式<yyyy-mm-dd-HH-MM>,必须晚于当前时间
python predict_roundplay_video.py <room_id> <%Y-%m-%d-%H-%M> --fetch_folder results/<room_id>
输入输出示例:
python predict_roundplay_video.py 21602686 "2021-03-08-19-00" --fetch_folder results/21602686
--------------------------------------------------------------------------------------------------------------
bvid: BV1zg4y1q7mc
pid: 1
title: BV1zg4y1q7mc-【2020.06.12录播】夏日大作战-P1
time: 63:5
url: https://www.bilibili.com/video/BV1zg4y1q7mc?p=1&t=3785