diff --git a/_biliup_archive_bvid.py b/_biliup_archive_bvid.py index c2c83e1..47921dd 100644 --- a/_biliup_archive_bvid.py +++ b/_biliup_archive_bvid.py @@ -36,17 +36,17 @@ async def new_get_subtitle_info(client: httpx.AsyncClient, bvid, cid): api.get_subtitle_info = new_get_subtitle_info -async def archive_bvid(bvid: str, sess_data: str): +async def archive_bvid(d: DownloaderBilibili, bvid: str): if not os.path.exists('biliup.home'): raise Exception('先创建 biliup.home 文件') # 需要先实例化一个用来进行http请求的client - d = DownloaderBilibili(video_concurrency=5, part_concurrency=10, hierarchy=True, sess_data=sess_data) + # d = DownloaderBilibili(video_concurrency=5, part_concurrency=10, hierarchy=True, sess_data=sess_data) # first we should initialize a http client url = f'https://www.bilibili.com/video/{bvid}/' # data = await api.get_video_info(client, "https://www.bilibili.com/video/BV1jK4y1N7ST?p=5") # d.update_cookies_from_browser('firefox') - d.update_cookies_from_browser + videos_basepath = f'biliup/videos/{bvid}' videos_info = await api.get_video_info(d.client, url) os.makedirs(videos_basepath, exist_ok=True) @@ -56,7 +56,6 @@ async def archive_bvid(bvid: str, sess_data: str): await f.write(json.dumps(videos_info.dict(), ensure_ascii=False, indent=4)) pid = 0 - d.progress.start() for page in videos_info.pages: pid += 1 @@ -88,8 +87,7 @@ async def archive_bvid(bvid: str, sess_data: str): async with aiofiles.open(f'{video_basepath}/_downloaded.mark', 'w', encoding='utf-8') as f: await f.write('') - await d.aclose() - d.progress.stop() + async def download_bilibili_video_detail(client, bvid, filename): diff --git a/biliup_archive_daily_bvids.py b/biliup_archive_daily_bvids.py index bd97f33..47d910e 100644 --- a/biliup_archive_daily_bvids.py +++ b/biliup_archive_daily_bvids.py @@ -1,5 +1,8 @@ import asyncio import datetime +import os +import sys +from bilix.sites.bilibili.downloader import DownloaderBilibili from _biliup_archive_bvid import archive_bvid import argparse @@ -15,8 +18,19 @@ def main(): args = parse_args() with open(args.bvids, 'r', encoding='utf-8') as f: bvids = f.read().splitlines() - for bvid in bvids: - asyncio.run(archive_bvid(bvid=bvid, sess_data=args.sess_data)) + d = DownloaderBilibili(video_concurrency=5, part_concurrency=1, hierarchy=True, sess_data=args.sess_data) + d.progress.start() + async def do(): + cors = [] + for bvid in bvids: + if sys.version_info <= (3, 10): + cor = asyncio.ensure_future(archive_bvid(d=d, bvid=bvid)) + else: + cor = asyncio.create_task(archive_bvid(d=d, bvid=bvid)) + cors.append(cor) + await asyncio.gather(*cors) + asyncio.run(do()) + d.progress.stop() def get_sess_data():