Skip to content

Commit

Permalink
add more configs in the config file
Browse files Browse the repository at this point in the history
  • Loading branch information
orzogc committed Jan 15, 2022
1 parent 8c320c7 commit 9d513f4
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 17 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

`fake115uploader -u 文件` 先尝试用秒传模式上传文件,失败后改用普通模式上传。

`fake115uploader -m 文件` 先尝试用秒传模式上传文件,失败后改用断点续传模式上传,可以随时中断上传再重启上传(适合用于上传超大文件,注意暂停上传的时间不要超过数周)。可以用 `-parts-num 分片数量` 参数指定上传文件的分片数量,数量范围为1到10000。
`fake115uploader -m 文件` 先尝试用秒传模式上传文件,失败后改用断点续传模式上传,可以随时中断上传再重启上传(适合用于上传超大文件,注意暂停上传的时间不要超过数周)。可以设置fake115uploader.json的partsNum或者用 `-parts-num 分片数量` 参数指定上传文件的分片数量,数量范围为1到10000。

`fake115uploader -b 保存文件 文件` 将文件的115 hashlink(115://文件名|文件大小|文件HASH值|块HASH值)追加写入到指定的保存文件。

Expand All @@ -45,9 +45,9 @@

上传文件时加上参数 `-e` ,上传成功后自动删除本地原文件。

运行时加上参数 `-retry 重试次数` 设置HTTP请求失败后的重试次数,默认为0(即不重试)。
设置fake115uploader.json的httpRetry或运行时加上参数 `-http-retry 重试次数` 设置HTTP请求失败后的重试次数,默认为0(即不重试)。

运行时加上参数 `-v` 显示更详细的信息(调试用)。

### 代理设置
`fake115uploader`的HTTP请求和OSS上传默认使用环境变量`http_proxy``https_proxy`的值作为代理,使用参数`-forbid-oss-proxy`禁止使用代理上传OSS,或者使用参数`-oss-proxy 代理`设置OSS上传代理。
`fake115uploader`的HTTP请求和OSS上传默认使用环境变量`http_proxy``https_proxy`的值作为代理。可以使用参数`-forbid-oss-proxy`禁止使用代理上传OSS。可以设置fake115uploader.json的ossProxy或者使用参数`-oss-proxy 代理`设置OSS上传代理,代理格式和HTTP代理一致
37 changes: 25 additions & 12 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,7 @@ var (
internal *bool
removeFile *bool
forbidProxy *bool
ossProxy *string
retry *uint
recursive *bool
partsNum *uint
verbose *bool
userID string
userKey string
Expand All @@ -82,6 +79,9 @@ type uploadConfig struct {
Cookies string `json:"cookies"` // 115网页版的Cookie
CID uint64 `json:"cid"` // 115里文件夹的cid
ResultDir string `json:"resultDir"` // 在指定文件夹保存上传结果
HTTPRetry uint `json:"httpRetry"` // HTTP请求失败后的重试次数
OSSProxy string `json:"ossProxy"` // OSS上传代理
PartsNum uint `json:"partsNum"` // 断点续传的分片数量
}

// 上传结果数据
Expand Down Expand Up @@ -205,7 +205,7 @@ func exitPrint() {

// 进行http请求
func doRequest(req *http.Request) (resp *http.Response, err error) {
for i := 0; i < int(*retry+1); i++ {
for i := 0; i < int(config.HTTPRetry+1); i++ {
resp, err = httpClient.Do(req)
if err == nil {
return resp, nil
Expand Down Expand Up @@ -359,10 +359,10 @@ func initialize() (e error) {
internal = flag.Bool("a", false, "利用阿里云内网上传文件,需要在阿里云服务器上运行本程序")
removeFile = flag.Bool("e", false, "上传成功后自动删除原文件")
forbidProxy = flag.Bool("forbid-oss-proxy", false, "禁止使用代理上传OSS")
ossProxy = flag.String("oss-proxy", "", "指定OSS上传使用的`代理`")
retry = flag.Uint("retry", 0, "HTTP请求失败后的`重试次数`,默认为0(即不重试)")
ossProxy := flag.String("oss-proxy", "", "指定OSS上传使用的`代理`")
httpRetry := flag.Uint("http-retry", 0, "HTTP请求失败后的`重试次数`,默认为0(即不重试)")
recursive = flag.Bool("recursive", false, "递归上传文件夹")
partsNum = flag.Uint("parts-num", 0, "断点续传模式上传文件的`分片数量`,范围为1到10000")
partsNum := flag.Uint("parts-num", 0, "断点续传模式上传文件的`分片数量`,范围为1到10000,默认为0(即自动分片)")
verbose = flag.Bool("v", false, "显示更详细的信息(调试用)")
help := flag.Bool("h", false, "显示帮助信息")

Expand Down Expand Up @@ -403,7 +403,11 @@ func initialize() (e error) {
log.Println("-parts-num参数只支持断点续传模式")
os.Exit(1)
}
if *partsNum > maxParts {
// 优先使用参数指定的分片数量
if *partsNum != 0 {
config.PartsNum = *partsNum
}
if config.PartsNum > maxParts {
log.Printf("分片数量不能大于%d", maxParts)
os.Exit(1)
}
Expand Down Expand Up @@ -471,6 +475,11 @@ func initialize() (e error) {
}
}

// 优先使用参数指定的HTTP请求重试次数
if *httpRetry != 0 {
config.HTTPRetry = *httpRetry
}

err := getUserKey()
checkErr(err)

Expand All @@ -486,14 +495,18 @@ func initialize() (e error) {

// oss代理
if !*forbidProxy {
// 优先级 ossProxy > http_proxy > https_proxy
// 优先级 ossProxy > http_proxy > https_proxy > 设置文件
*ossProxy = strings.TrimSpace(*ossProxy)
if *ossProxy == "" {
*ossProxy = strings.TrimSpace(os.Getenv("http_proxy"))
if *ossProxy == "" {
*ossProxy = strings.TrimSpace(os.Getenv("https_proxy"))
}
}
if *ossProxy == "" {
*ossProxy = strings.TrimSpace(os.Getenv("https_proxy"))
}
if *ossProxy == "" {
*ossProxy = config.OSSProxy
}

if *ossProxy != "" {
proxyURL, err := url.Parse(*ossProxy)
if err == nil {
Expand Down
4 changes: 2 additions & 2 deletions multipart.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ func multipartUploadFile(ft *fastToken, file string, sp *saveProgress) (e error)
return fmt.Errorf("%s 的大小超过115GB,取消上传", file)
}
// 是否指定分片数量
if *partsNum != 0 {
chunks, err = oss.SplitFileByPartNum(file, int(*partsNum))
if config.PartsNum != 0 {
chunks, err = oss.SplitFileByPartNum(file, int(config.PartsNum))
checkErr(err)
} else {
for i := int64(1); i < 10; i++ {
Expand Down

0 comments on commit 9d513f4

Please sign in to comment.