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='目标排行 rid,0 为全站排行榜 [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) 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: for bvid in bvids: f.write(f'{bvid}' + '\n') print(f'已保存 {len(bvids)} 个 bvid 到 {bvids_filepath}') if __name__ == '__main__': main()