From 4cd8cc04127b96d682977168051a196a9420f589 Mon Sep 17 00:00:00 2001 From: yzqzss Date: Fri, 2 Jun 2023 11:53:20 +0800 Subject: [PATCH] upload --- _biliup_archive_bvid.py | 10 +++++++--- _biliup_upload_bvid.py | 24 ++++++++++++++++++------ biliup_archive_daily_bvids.py | 11 ++++++----- biliup_upload_daily_bvids.py | 6 ++++++ 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/_biliup_archive_bvid.py b/_biliup_archive_bvid.py index 47921dd..e13d91b 100644 --- a/_biliup_archive_bvid.py +++ b/_biliup_archive_bvid.py @@ -58,6 +58,9 @@ async def archive_bvid(d: DownloaderBilibili, bvid: str): pid = 0 for page in videos_info.pages: pid += 1 + if not page.p_name.startswith(f'P{pid}-'): + print(f'{bvid} 的第 {pid}P 不存在') + continue file_basename = f'{bvid}_p{pid}' video_basepath = f'{videos_basepath}/{identifier_perfix}-{file_basename}' @@ -103,6 +106,7 @@ async def download_bilibili_video_detail(client, bvid, filename): # f.write(json.dumps(r.json(), indent=4, ensure_ascii=False)) await f.write(r.text) - -# asyncio.run(archive_bvid(bvid=bvid)) - +# d = DownloaderBilibili(video_concurrency=2, part_concurrency=1, hierarchy=True, sess_data=None) +# d.progress.start() +# asyncio.run(archive_bvid(d=d, bvid='BV1Zh4y1x7RL')) +# d.progress.stop() \ No newline at end of file diff --git a/_biliup_upload_bvid.py b/_biliup_upload_bvid.py index 802e213..18e548a 100644 --- a/_biliup_upload_bvid.py +++ b/_biliup_upload_bvid.py @@ -60,20 +60,32 @@ def upload_bvid(bvid): tags = ['BiliBili', 'video'] for tag in bv_info['data']['Tags']: tags.append(tag['tag_name']) - + pubdate = bv_info['data']['View']['pubdate'] + for page in bv_info['data']['View']['pages']: + if page['page'] == int(pid): + cid = page['cid'] + part = page['part'] + break + md = { "mediatype": "web", - "collection": 'movies', - "title": bv_info['data']['View']['title'] + ' ' +videos_info['pages'][int(pid) - 1]['p_name'], + "collection": 'opensource_movies', + "title": bv_info['data']['View']['title'] + f' P{pid} ' + part , "description": bv_info['data']['View']['desc'], - # "last-updated-date": time.strftime("%Y-%m-%d"), - 'creator': bv_info['data']['View']['owner']['name'], - # 'year': + 'creator': bv_info['data']['View']['owner']['name'], # UP 主 + # UTC time + 'date': time.strftime("%Y-%m-%d", time.gmtime(pubdate)), + 'year': time.strftime("%Y", time.gmtime(pubdate)), + 'bvid': bvid, + 'aid': bv_info['data']['View']['aid'], + 'cid': cid, "subject": "; ".join( tags ), # Keywords should be separated by ; but it doesn't matter much; the alternative is to set one per field with subject[0], subject[1], ... "upload-state": "uploading", 'originalurl': f'https://www.bilibili.com/video/{bvid}?p={pid}', + # 每日top100 + 'scanner': 'bilibili top100 daily archive', } print(filedict) print(md) diff --git a/biliup_archive_daily_bvids.py b/biliup_archive_daily_bvids.py index 9cd19c5..4ad4033 100644 --- a/biliup_archive_daily_bvids.py +++ b/biliup_archive_daily_bvids.py @@ -7,7 +7,6 @@ from _biliup_archive_bvid import archive_bvid import argparse import uvloop -asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) def parse_args(): parser = argparse.ArgumentParser() @@ -22,22 +21,24 @@ def main(): with open(args.bvids, 'r', encoding='utf-8') as f: bvids = f.read().splitlines() async def do(): - d = DownloaderBilibili(video_concurrency=6, part_concurrency=1, hierarchy=True, sess_data=args.sess_data) + d = DownloaderBilibili(video_concurrency=2, part_concurrency=1, hierarchy=True, sess_data=args.sess_data) d.progress.start() futs = [] for bvid in bvids: cor = asyncio.create_task(archive_bvid(d=d, bvid=bvid)) fut = asyncio.gather(cor) futs.append(fut) - if len(futs) == 6: + if len(futs) == 2: await asyncio.gather(*futs) futs = [] if len(futs) > 0: await asyncio.gather(*futs) futs = [] d.progress.stop() - asyncio.run(do()) - loop = asyncio.get_event_loop() + await d.aclose() + # asyncio.run(do()) + asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) + loop = asyncio.get_event_loop_policy().get_event_loop() loop.run_until_complete(do()) def get_sess_data(): diff --git a/biliup_upload_daily_bvids.py b/biliup_upload_daily_bvids.py index e69de29..b480724 100644 --- a/biliup_upload_daily_bvids.py +++ b/biliup_upload_daily_bvids.py @@ -0,0 +1,6 @@ +from _biliup_upload_bvid import upload_bvid +import os + +def main(): + for bvid in os.listdir('biliup/videos'): + upload_bvid(bvid) \ No newline at end of file