biliarchiver/biliup_get_bvids_from_ranking_by_rid.py

48 lines
1.4 KiB
Python
Raw Normal View History

2023-06-02 11:40:11 -07:00
import os
import time
import requests
import json
import argparse
def arg_parse():
parser = argparse.ArgumentParser()
parser.add_argument('--rid', type=int, default=0, help='目标排行 rid0 为全站排行榜 [default: 0]')
args = parser.parse_args()
return args
def main():
args = arg_parse()
rid: int = args.rid
bilibili_ranking_api = "https://api.bilibili.com/x/web-interface/ranking/v2"
bilibili_ranking_params = {
"rid": rid,
"type": "all"
}
r = requests.get(bilibili_ranking_api, params=bilibili_ranking_params)
r.raise_for_status()
ranking_json = json.loads(r.text)
assert ranking_json['code'] == 0 # 0 为成功HTTP 200 不能信)
ranking = ranking_json['data']['list']
bvids = []
for video_info in ranking:
# print(video_info['title'], video_info['bvid'], video_info['pic'])
bvid = video_info['bvid']
bvids.append(bvid)
import datetime
today = datetime.date.today()
os.makedirs('bvids', exist_ok=True)
2023-06-02 11:44:35 -07:00
bvids_filepath = f'bvids/by-ranking/rid-{rid}/rid-{rid}-{int(time.time())}.txt'
os.makedirs(os.path.dirname(bvids_filepath), exist_ok=True)
with open(bvids_filepath, 'w', encoding='utf-8') as f:
2023-06-02 11:40:11 -07:00
for bvid in bvids:
f.write(f'{bvid}' + '\n')
2023-06-02 11:45:30 -07:00
print(f'已保存 {len(bvids)} 个 bvid 到 {bvids_filepath}')
2023-06-02 11:41:56 -07:00
if __name__ == '__main__':
main()