This commit is contained in:
yzqzss 2023-06-02 11:53:20 +08:00
parent a6ea6906b7
commit 4cd8cc0412
4 changed files with 37 additions and 14 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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():

View File

@ -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)