baidu_netdisk

package
v4.1.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 1, 2026 License: AGPL-3.0 Imports: 28 Imported by: 1

Documentation

Index

Constants

View Source
const (
	UPLOAD_FALLBACK_API          = "https://d.pcs.baidu.com" // 备用上传地址
	UPLOAD_URL_EXPIRE_TIME       = time.Minute * 60          // 上传地址有效期(分钟)
	DEFAULT_UPLOAD_SLICE_TIMEOUT = time.Second * 60          // 上传分片请求默认超时时间
	UPLOAD_RETRY_COUNT           = 3
	UPLOAD_RETRY_WAIT_TIME       = time.Second * 1
	UPLOAD_RETRY_MAX_WAIT_TIME   = time.Second * 5
)
View Source
const (
	DefaultSliceSize int64 = 4 * utils.MB
	VipSliceSize     int64 = 16 * utils.MB
	SVipSliceSize    int64 = 32 * utils.MB

	MaxSliceNum       = 2048 // 文档写的是 1024/没写 ,但实际测试是 2048
	SliceStep   int64 = 1 * utils.MB
)

Variables

View Source
var (
	ErrBaiduEmptyFilesNotAllowed = errors.New("empty files are not allowed by baidu netdisk")
)
View Source
var ErrUploadIDExpired = errors.New("uploadid expired")

Functions

func DecryptMd5

func DecryptMd5(encryptMd5 string) string

func EncryptMd5

func EncryptMd5(originalMd5 string) string

Types

type Addition

type Addition struct {
	driver.RootPath
	OrderBy               string `json:"order_by" type:"select" options:"name,time,size" default:"name"`
	OrderDirection        string `json:"order_direction" type:"select" options:"asc,desc" default:"asc"`
	DownloadAPI           string `json:"download_api" type:"select" options:"official,crack,crack_video" default:"official"`
	UseOnlineAPI          bool   `json:"use_online_api" default:"true"`
	APIAddress            string `json:"api_url_address" default:"https://api.oplist.org/baiduyun/renewapi"`
	ClientID              string `json:"client_id"`
	ClientSecret          string `json:"client_secret"`
	CustomCrackUA         string `json:"custom_crack_ua" required:"true" default:"netdisk"`
	AccessToken           string
	RefreshToken          string `json:"refresh_token" required:"true"`
	UploadThread          string `json:"upload_thread" default:"3" help:"1<=thread<=32"`
	UploadSliceTimeout    int    `json:"upload_timeout" type:"number" default:"60" help:"per-slice upload timeout in seconds"`
	UploadAPI             string `json:"upload_api" default:"https://d.pcs.baidu.com"`
	UseDynamicUploadAPI   bool   `` /* 169-byte string literal not displayed */
	CustomUploadPartSize  int64  `json:"custom_upload_part_size" type:"number" default:"0" help:"0 for auto"`
	LowBandwithUploadMode bool   `json:"low_bandwith_upload_mode" default:"false"`
	OnlyListVideoFile     bool   `json:"only_list_video_file" default:"false"`
}

type BaiduNetdisk

type BaiduNetdisk struct {
	model.Storage
	Addition
	// contains filtered or unexported fields
}

func (*BaiduNetdisk) Config

func (d *BaiduNetdisk) Config() driver.Config

func (*BaiduNetdisk) Copy

func (d *BaiduNetdisk) Copy(ctx context.Context, srcObj, dstDir model.Obj) error

func (*BaiduNetdisk) Drop

func (d *BaiduNetdisk) Drop(ctx context.Context) error

func (*BaiduNetdisk) GetAddition

func (d *BaiduNetdisk) GetAddition() driver.Additional

func (*BaiduNetdisk) GetDetails added in v4.1.4

func (d *BaiduNetdisk) GetDetails(ctx context.Context) (*model.StorageDetails, error)

func (*BaiduNetdisk) Init

func (d *BaiduNetdisk) Init(ctx context.Context) error
func (d *BaiduNetdisk) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error)

func (*BaiduNetdisk) List

func (d *BaiduNetdisk) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error)

func (*BaiduNetdisk) MakeDir

func (d *BaiduNetdisk) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) (model.Obj, error)

func (*BaiduNetdisk) Move

func (d *BaiduNetdisk) Move(ctx context.Context, srcObj, dstDir model.Obj) (model.Obj, error)

func (*BaiduNetdisk) Put

Put

**注意**: 截至 2024/04/20 百度云盘 api 接口返回的时间永远是当前时间,而不是文件时间。 而实际上云盘存储的时间是文件时间,所以此处需要覆盖时间,保证缓存与云盘的数据一致

func (*BaiduNetdisk) PutRapid

func (d *BaiduNetdisk) PutRapid(ctx context.Context, dstDir model.Obj, stream model.FileStreamer) (model.Obj, error)

func (*BaiduNetdisk) Remove

func (d *BaiduNetdisk) Remove(ctx context.Context, obj model.Obj) error

func (*BaiduNetdisk) Rename

func (d *BaiduNetdisk) Rename(ctx context.Context, srcObj model.Obj, newName string) (model.Obj, error)

type DownloadResp

type DownloadResp struct {
	Errmsg string `json:"errmsg"`
	Errno  int    `json:"errno"`
	List   []struct {
		//Category    int    `json:"category"`
		//DateTaken   int    `json:"date_taken,omitempty"`
		Dlink string `json:"dlink"`
	} `json:"list"`
	//Names struct {
	//} `json:"names"`
	RequestId string `json:"request_id"`
}

type DownloadResp2

type DownloadResp2 struct {
	Errno int `json:"errno"`
	Info  []struct {
		//ExtentTinyint4 int `json:"extent_tinyint4"`
		//ExtentTinyint1 int `json:"extent_tinyint1"`
		//Bitmap string `json:"bitmap"`
		//Category int `json:"category"`
		//Isdir int `json:"isdir"`
		//Videotag int `json:"videotag"`
		Dlink string `json:"dlink"`
	} `json:"info"`
	RequestID int64 `json:"request_id"`
}

type File

type File struct {
	//TkbindId     int    `json:"tkbind_id"`
	//OwnerType    int    `json:"owner_type"`
	Category int `json:"category"`
	//RealCategory string `json:"real_category"`
	FsId int64 `json:"fs_id"`
	//OperId      int   `json:"oper_id"`
	Thumbs struct {
		//Icon string `json:"icon"`
		Url3 string `json:"url3"`
	} `json:"thumbs"`

	Size int64 `json:"size"`
	//ExtentTinyint7 int    `json:"extent_tinyint7"`
	Path string `json:"path"`
	//Share          int    `json:"share"`
	//Pl             int    `json:"pl"`
	ServerFilename string `json:"server_filename"`
	Md5            string `json:"md5"`
	//OwnerId        int    `json:"owner_id"`
	//Unlist int `json:"unlist"`
	Isdir int `json:"isdir"`

	// list resp
	ServerCtime int64 `json:"server_ctime"`
	ServerMtime int64 `json:"server_mtime"`
	LocalMtime  int64 `json:"local_mtime"`
	LocalCtime  int64 `json:"local_ctime"`

	// only create and precreate resp
	Ctime int64 `json:"ctime"`
	Mtime int64 `json:"mtime"`
}

type ListResp

type ListResp struct {
	Errno     int    `json:"errno"`
	GuidInfo  string `json:"guid_info"`
	List      []File `json:"list"`
	RequestId int64  `json:"request_id"`
	Guid      int    `json:"guid"`
}

type PrecreateResp

type PrecreateResp struct {
	Errno      int   `json:"errno"`
	RequestId  int64 `json:"request_id"`
	ReturnType int   `json:"return_type"`

	// return_type=1
	Path      string `json:"path"`
	Uploadid  string `json:"uploadid"`
	BlockList []int  `json:"block_list"`

	// return_type=2
	File File `json:"info"`

	UploadURL string `json:"-"` // 保存断点续传对应的上传域名
}

type QuotaResp added in v4.1.4

type QuotaResp struct {
	Errno     int    `json:"errno"`
	RequestId int64  `json:"request_id"`
	Total     uint64 `json:"total"`
	Used      uint64 `json:"used"`
}

type TokenErrResp

type TokenErrResp struct {
	ErrorDescription string `json:"error_description"`
	Error            string `json:"error"`
}

type UploadServerResp added in v4.1.7

type UploadServerResp struct {
	BakServer  []any `json:"bak_server"`
	BakServers []struct {
		Server string `json:"server"`
	} `json:"bak_servers"`
	ClientIP    string `json:"client_ip"`
	ErrorCode   int    `json:"error_code"`
	ErrorMsg    string `json:"error_msg"`
	Expire      int    `json:"expire"`
	Host        string `json:"host"`
	Newno       string `json:"newno"`
	QuicServer  []any  `json:"quic_server"`
	QuicServers []struct {
		Server string `json:"server"`
	} `json:"quic_servers"`
	RequestID  int64 `json:"request_id"`
	Server     []any `json:"server"`
	ServerTime int   `json:"server_time"`
	Servers    []struct {
		Server string `json:"server"`
	} `json:"servers"`
	Sl int `json:"sl"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL