biliarchiver/biliup_archive_daily_bvids.py

64 lines
1.6 KiB
Python
Raw Normal View History

2023-06-01 07:00:37 -07:00
import asyncio
import datetime
2023-06-02 01:18:28 -07:00
import logging
2023-06-01 08:36:21 -07:00
import os
import sys
2023-06-01 07:00:37 -07:00
import argparse
2023-06-02 01:18:28 -07:00
from _biliup_archive_bvid import archive_bvid
from bilix.sites.bilibili.downloader import DownloaderBilibili
from rich.console import Console
2023-06-01 08:53:24 -07:00
import uvloop
2023-06-02 01:18:28 -07:00
from rich.traceback import install
install()
2023-06-01 07:00:37 -07:00
def parse_args():
parser = argparse.ArgumentParser()
today = datetime.date.today()
parser.add_argument('--sess-data', type=str, default=get_sess_data())
parser.add_argument('--bvids', type=str, default=f'bvids/bvids-{today.isoformat()}.txt')
args = parser.parse_args()
return args
def main():
args = parse_args()
2023-06-02 01:18:28 -07:00
print(args.sess_data)
2023-06-01 07:00:37 -07:00
with open(args.bvids, 'r', encoding='utf-8') as f:
bvids = f.read().splitlines()
2023-06-02 01:18:28 -07:00
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
from tasks_limit import tasks_limit
d = DownloaderBilibili(video_concurrency=tasks_limit, part_concurrency=1, hierarchy=True, sess_data=args.sess_data,
)
d.progress.start()
for bvid in bvids:
# 限制同时下载的数量
while len(asyncio.all_tasks(loop)) > tasks_limit:
loop.run_until_complete(asyncio.sleep(5))
task = loop.create_task(archive_bvid(d, bvid))
loop.run_until_complete(asyncio.sleep(5))
loop.close()
2023-06-01 07:00:37 -07:00
def get_sess_data():
2023-06-02 01:18:28 -07:00
with open(os.path.expanduser('~/.sess_data.txt'), 'r', encoding='utf-8') as f:
2023-06-01 07:00:37 -07:00
sess_data = f.read().strip()
return sess_data
if __name__ == '__main__':
2023-06-02 01:18:28 -07:00
try:
main()
except KeyboardInterrupt:
print('KeyboardInterrupt')
finally:
# 显示终端光标
console = Console()
console.show_cursor()