Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
BiliDriveEx
提交
464024d9
B
BiliDriveEx
项目概览
OpenDocCN
/
BiliDriveEx
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
BiliDriveEx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
464024d9
编写于
3月 10, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化逻辑
上级
c47bffbb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
24 deletion
+22
-24
BiliDriveEx/__main__.py
BiliDriveEx/__main__.py
+22
-24
未找到文件。
BiliDriveEx/__main__.py
浏览文件 @
464024d9
...
...
@@ -190,13 +190,13 @@ def download_handle(args):
mode
=
"r+b"
if
os
.
path
.
exists
(
file_name
)
else
"wb"
with
open
(
file_name
,
mode
)
as
f
:
for
i
in
range
(
nblocks
):
for
i
,
block_dict
in
enumerate
(
meta_dict
[
'block'
]
):
offset
=
block_offset
(
meta_dict
,
i
)
hdl
=
trpool
.
submit
(
tr_download
,
i
,
meta_dict
[
'block'
][
i
]
,
f
,
offset
)
hdl
=
trpool
.
submit
(
tr_download
,
i
,
block_dict
,
f
,
offset
)
hdls
.
append
(
hdl
)
for
h
in
hdls
:
h
.
result
()
if
not
succ
:
return
f
.
truncate
(
sum
(
block
[
'size'
]
for
block
in
meta_dict
[
'block'
])
)
f
.
truncate
(
meta_dict
[
'size'
]
)
log
(
f
"
{
os
.
path
.
basename
(
file_name
)
}
(
{
size_string
(
meta_dict
[
'size'
])
}
) 下载完毕, 用时
{
time
.
time
()
-
start_time
:.
1
f
}
秒, 平均速度
{
size_string
(
meta_dict
[
'size'
]
/
(
time
.
time
()
-
start_time
))
}
/s"
)
sha1
=
calc_sha1
(
read_in_chunk
(
file_name
))
...
...
@@ -224,6 +224,19 @@ def history_handle(args):
else
:
print
(
f
"暂无历史记录"
)
def
interact_mode
(
parser
,
subparsers
):
subparsers
.
add_parser
(
"help"
,
help
=
"show this help message"
).
set_defaults
(
func
=
lambda
_
:
parser
.
parse_args
([
"--help"
]).
func
())
subparsers
.
add_parser
(
"version"
,
help
=
"show program's version number"
).
set_defaults
(
func
=
lambda
_
:
parser
.
parse_args
([
"--version"
]).
func
())
subparsers
.
add_parser
(
"exit"
,
help
=
"exit program"
).
set_defaults
(
func
=
lambda
_
:
os
.
_exit
(
0
))
parser
.
print_help
()
while
True
:
try
:
args
=
shlex
.
split
(
input
(
"BiliDriveEx > "
))
args
=
parser
.
parse_args
(
args
)
args
.
func
(
args
)
except
:
pass
def
main
():
signal
.
signal
(
signal
.
SIGINT
,
lambda
signum
,
frame
:
os
.
kill
(
os
.
getpid
(),
9
))
parser
=
argparse
.
ArgumentParser
(
prog
=
"BiliDriveEx"
,
description
=
"Make Bilibili A Great Cloud Storage!"
,
formatter_class
=
argparse
.
RawDescriptionHelpFormatter
)
...
...
@@ -260,27 +273,12 @@ def main():
info_parser
.
set_defaults
(
func
=
info_handle
)
history_parser
=
subparsers
.
add_parser
(
"history"
,
help
=
"show upload history"
)
history_parser
.
set_defaults
(
func
=
history_handle
)
shell
=
False
while
True
:
if
shell
:
args
=
shlex
.
split
(
input
(
"BiliDriveEx > "
))
try
:
args
=
parser
.
parse_args
(
args
)
args
.
func
(
args
)
except
:
pass
else
:
args
=
parser
.
parse_args
()
try
:
args
.
func
(
args
)
break
except
AttributeError
as
ex
:
traceback
.
print_exc
(
file
=
sys
.
stdout
)
shell
=
True
subparsers
.
add_parser
(
"help"
,
help
=
"show this help message"
).
set_defaults
(
func
=
lambda
_
:
parser
.
parse_args
([
"--help"
]).
func
())
subparsers
.
add_parser
(
"version"
,
help
=
"show program's version number"
).
set_defaults
(
func
=
lambda
_
:
parser
.
parse_args
([
"--version"
]).
func
())
subparsers
.
add_parser
(
"exit"
,
help
=
"exit program"
).
set_defaults
(
func
=
lambda
_
:
os
.
_exit
(
0
))
parser
.
print_help
()
if
len
(
sys
.
argv
)
!=
1
:
args
=
parser
.
parse_args
()
args
.
func
(
args
)
else
:
interact_mode
(
parser
,
subparsers
)
if
__name__
==
"__main__"
:
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录