This is a 115 cloud driver package.

  • By sheltonzhu
  • Last update: Dec 21, 2022
  • Comments: 2

115driver

Version Reference License

Example

package main

import (
    "github.com/SheltonZhu/115driver/pkg/driver"
    "log"
)

func main() {
    cr := &driver.Credential{
        UID: "xxx",
        CID: "xxx",
        SEID: "xxx",
    }
    // or err := cr.FromCookie(cookieStr)

    client = driver.Defalut().ImportCredential(cr)
    if err := driver.LoginCheck(); err != nil {
        log.Fatalf("login error: %s", err)
    }
}

More examples can be found in reference.

Features

  • Login
    • Import credential from cookies
    • Login via QRCode
    • Get signed-in user information
  • File
    • List
    • Rename
    • Move
    • Copy
    • Delete
    • Make Directory
    • Download
    • Upload SHA1
    • Upload
    • Search
    • Get Information by ID
    • Stat File

License

MIT

Download

115driver.zip

Comments(2)

  • 1

    (driver.Pan115Client).List 问题

    简述

    在alist里浏览,发现一个有10000个文件的目录,alist里只显示1872个文件。

    复现

    在一个空目录下,创建(上传)10000个文件。

    func main() {
    	cr := &driver.Credential{
    		UID:  "xxx",
    		CID:  "xxx",
    		SEID: "xxx",
    	}
    
    	client := driver.Defalut().ImportCredential(cr)
    	if err := client.LoginCheck(); err != nil {
    		log.Fatalf("login error: %s", err)
    	}
    	files, err := client.List("目录ID")
    	if err != nil {
    		log.Fatalf("list error: %s", err)
    	}
    	log.Println(len(*files))
    }
    

    直接执行 go run main.go 的话,会出现错误:

    2022/11/08 11:20:28 list error: <html>
    <head><title>400 Request Header Or Cookie Too Large</title></head>
    <body bgcolor="white">
    <center><h1>400 Bad Request</h1></center>
    <center>Request Header Or Cookie Too Large</center>
    <hr><center>nginx/1.14.0</center>
    </body>
    </html>: unexpected error
    exit status 1
    

    可能是每一次请求都添加了一次cookie?

    定位在 pkg/driver/dir.go35 行。

    另外,这个break判断觉得可以改进一下(目前,假设总数10000,分页是2000,那最后2000就丢了):

    if offset >= int64(result.Count) {
        break
    }
    

    其他

    看到默认的分页大小是56,似乎小了一些。 115表面上最大支持1150,不过其实更大也行,比如官方的加载全部,就是limit=count的,也能请求成功。

  • 2

    Fix GetFiles

    1. ApiFileListByName 数据异常问题(如缺失、重复、多出),暂时未找到解决方法,可以考虑放弃该接口;
    2. 改用ApiFileList,默认排序FileOrderByTimenatsort=1参数可能会导致请求出错,所以移除了该参数。

    另外有个小建议,可以考虑增大limit的数值,减少请求和提高响应速度。