Documentation
¶
Index ¶
- Variables
- func ErrnoMessage(errno int) string
- func ExtractSurl(shareURL string) string
- func IsAccountCredentials(ck string) bool
- func ParseCapacityString(capacityStr string) int64
- func ParseSharePageHTML(response string) ([]baiduShareFile, error)
- func RefreshSystemConfigCache()
- func SanitizeCookie(raw string) string
- type AlipanExtraData
- type AlipanService
- func (a *AlipanService) DeleteFiles(fileList []string) (*TransferResult, error)
- func (a *AlipanService) GetFiles(pdirFid string) (*TransferResult, error)
- func (a *AlipanService) GetServiceType() ServiceType
- func (a *AlipanService) GetUserInfo(ck *string) (*UserInfo, error)
- func (a *AlipanService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)
- func (a *AlipanService) SetCKSRepository(cksRepo repo.CksRepository, cks entity.Cks)
- func (a *AlipanService) Transfer(shareID string) (*TransferResult, error)
- func (a *AlipanService) UpdateConfig(config *PanConfig)
- type BaiduPanService
- func (b *BaiduPanService) DeleteFiles(fileList []string) (*TransferResult, error)
- func (b *BaiduPanService) GetFiles(pdirFid string) (*TransferResult, error)
- func (b *BaiduPanService) GetServiceType() ServiceType
- func (b *BaiduPanService) GetUserInfo(cookie *string) (*UserInfo, error)
- func (b *BaiduPanService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)
- func (u *BaiduPanService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
- func (b *BaiduPanService) Share(fid string) (*TransferResult, error)
- func (b *BaiduPanService) Transfer(shareID string) (*TransferResult, error)
- func (x *BaiduPanService) UpdateConfig(config *PanConfig)
- type BasePanService
- func (b *BasePanService) ExecuteWithRetry(executeFunc func() ([]byte, error), maxRetries int, retryDelay time.Duration) ([]byte, error)
- func (b *BasePanService) ExtractFileName(urlStr string) string
- func (b *BasePanService) GetConfig() *PanConfig
- func (b *BasePanService) GetHeader(key string) string
- func (b *BasePanService) HTTPDelete(requestURL string) ([]byte, error)
- func (b *BasePanService) HTTPGet(requestURL string, queryParams map[string]string) ([]byte, error)
- func (b *BasePanService) HTTPPatch(requestURL string, data interface{}) ([]byte, error)
- func (b *BasePanService) HTTPPost(requestURL string, data interface{}, queryParams map[string]string) ([]byte, error)
- func (b *BasePanService) HTTPPostForm(requestURL string, rawBody string, queryParams map[string]string) ([]byte, error)
- func (b *BasePanService) HTTPPut(requestURL string, data interface{}) ([]byte, error)
- func (b *BasePanService) IsValidURL(urlStr string) bool
- func (b *BasePanService) ParseJSONResponse(data []byte, v interface{}) error
- func (b *BasePanService) SanitizeFileName(fileName string) string
- func (b *BasePanService) SetHeader(key, value string)
- func (b *BasePanService) SetHeaders(headers map[string]string)
- type CaptchaData
- type PanConfig
- type PanFactory
- func (f *PanFactory) CreatePanService(url string, config *PanConfig) (PanService, error)
- func (f *PanFactory) CreatePanServiceByType(serviceType ServiceType, config *PanConfig) (PanService, error)
- func (f *PanFactory) GetAlipanService(config *PanConfig) PanService
- func (f *PanFactory) GetBaiduService(config *PanConfig) PanService
- func (f *PanFactory) GetQuarkService(config *PanConfig) PanService
- func (f *PanFactory) GetUCService(config *PanConfig) PanService
- func (f *PanFactory) GetXunleiService(config *PanConfig) PanService
- type PanService
- type PasswordResult
- type QuarkPanService
- func (q *QuarkPanService) DeleteFiles(fileList []string) (*TransferResult, error)
- func (q *QuarkPanService) GetCookie() string
- func (q *QuarkPanService) GetFiles(pdirFid string) (*TransferResult, error)
- func (q *QuarkPanService) GetServiceType() ServiceType
- func (q *QuarkPanService) GetUserInfo(cookie *string) (*UserInfo, error)
- func (xq *QuarkPanService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
- func (q *QuarkPanService) SetCookie(cookie string)
- func (q *QuarkPanService) Share(fid string) (*TransferResult, error)
- func (q *QuarkPanService) Transfer(shareID string) (*TransferResult, error)
- func (q *QuarkPanService) UpdateConfig(config *PanConfig)
- type SaveResult
- type ServiceType
- type ShareBtnResult
- type ShareResult
- type Sharer
- type StokenResult
- type TaskResult
- type TransferResult
- type UCPasswordResult
- type UCSaveResult
- type UCService
- func (u *UCService) DeleteFiles(fileList []string) (*TransferResult, error)
- func (u *UCService) GetFiles(pdirFid string) (*TransferResult, error)
- func (u *UCService) GetServiceType() ServiceType
- func (u *UCService) GetUserInfo(cookie *string) (*UserInfo, error)
- func (u *UCService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)
- func (u *UCService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
- func (u *UCService) Share(fid string) (*TransferResult, error)
- func (u *UCService) Transfer(shareID string) (*TransferResult, error)
- func (u *UCService) UpdateConfig(config *PanConfig)
- type UCShareBtnResult
- type UCShareResult
- type UCStokenResult
- type UCTaskResult
- type UserInfo
- type XLBatchShareResp
- type XLCommonResp
- type XLFileInfo
- type XLRestoreResp
- type XLShareFolderResp
- type XLShareInfo
- type XLShareListResp
- type XLTaskResult
- type XunleiAccountCredentials
- type XunleiExtraData
- type XunleiPanService
- func (x *XunleiPanService) DeleteFiles(fileList []string) (*TransferResult, error)
- func (x *XunleiPanService) FileBatchShare(ids []string, needPassword bool, expirationDays int) (*XLBatchShareResp, error)
- func (x *XunleiPanService) GetAccessTokenByRefreshToken(refreshToken string) (XunleiTokenData, error)
- func (x *XunleiPanService) GetFiles(pdirFid string) (*TransferResult, error)
- func (x *XunleiPanService) GetServiceType() ServiceType
- func (x *XunleiPanService) GetShareFolder(shareID, passCodeToken, parentID string) (*XLShareFolderResp, error)
- func (x *XunleiPanService) GetShareList(pageToken string) (*XLShareListResp, error)
- func (x *XunleiPanService) GetUserInfo(cookie *string) (*UserInfo, error)
- func (x *XunleiPanService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)
- func (x *XunleiPanService) Keepalive() error
- func (x *XunleiPanService) LoginByRefreshToken(refreshToken string) (XunleiTokenData, error)
- func (x *XunleiPanService) LoginWithCredentials(username, password, creditkey string) (XunleiTokenData, error)
- func (x *XunleiPanService) Restore(shareID, passCodeToken string, fileIDs []string) (*XLRestoreResp, error)
- func (x *XunleiPanService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
- func (x *XunleiPanService) SetClientType(clientType string)
- func (x *XunleiPanService) Share(fid string) (*TransferResult, error)
- func (x *XunleiPanService) ShareBatchDelete(ids []string) (*XLCommonResp, error)
- func (x *XunleiPanService) Transfer(shareID string) (*TransferResult, error)
- func (x *XunleiPanService) UpdateConfig(config *PanConfig)
- type XunleiReviewError
- type XunleiTokenData
Constants ¶
This section is empty.
Variables ¶
var ErrorCodeMap = map[int]string{
-1: "链接错误,链接失效或缺少提取码",
-3: "分享失败,文件不存在或无法分享",
-4: "转存失败,无效登录。请退出账号在其他地方的登录",
-6: "转存失败,请用浏览器无痕模式获取 Cookie 后再试",
-7: "转存失败,转存文件夹名有非法字符,不能包含 < > | * ? \\ :",
-8: "转存失败,目录中已有同名文件或文件夹存在",
-9: "链接错误,提取码错误",
-10: "转存失败,容量不足",
-12: "链接错误,提取码错误",
-62: "转存失败,链接访问次数过多,请稍后再试",
0: "转存成功",
2: "转存失败,目标目录不存在",
4: "转存失败,目录中存在同名文件",
12: "转存失败,转存文件数超过限制",
20: "转存失败,容量不足",
105: "链接错误,所访问的页面不存在",
115: "分享链接已失效(文件禁止分享)",
145: "分享链接已失效",
-65: "触发频率限制",
132: "删除文件需要二次身份验证(手机短信),请在浏览器登录账号完成验证后再试",
200025: "提取码输入错误,请检查提取码",
}
ErrorCodeMap 百度网盘 errno → 可读中文消息
Functions ¶
func ErrnoMessage ¶ added in v1.4.0
ErrnoMessage 查 errno 对应消息,未知码返回兜底文案
func ExtractSurl ¶ added in v1.4.0
ExtractSurl 从百度分享链接提取 surl(去掉 /s/ 前导的 "1")
func IsAccountCredentials ¶ added in v1.3.5
IsAccountCredentials 检查ck是否包含账号密码信息
func ParseCapacityString ¶
ParseCapacityString 解析容量字符串为字节数
func ParseSharePageHTML ¶ added in v1.4.0
ParseSharePageHTML 解析百度分享页 HTML/JSON 片段,提取 shareid/share_uk/fs_id/server_filename/isdir
func RefreshSystemConfigCache ¶ added in v1.2.3
func RefreshSystemConfigCache()
RefreshSystemConfigCache 全局刷新系统配置缓存(供外部调用)
func SanitizeCookie ¶ added in v1.4.0
SanitizeCookie 清理 Cookie 字符串:移除换行/回车/制表符,trim 首尾空白。 用户从浏览器 DevHeaders 直接复制的 Cookie 经常夹带这些不可见字符, 导致 HTTP 请求头格式错误、百度返回 401 或 set-cookie 异常。 参考实现:moss baidu_utils.go:115-118。
Types ¶
type AlipanExtraData ¶ added in v1.5.1
type AlipanExtraData struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"` // 最新轮换值(与 Cks.Ck 冗余,便于单字段读写)
DriveID string `json:"drive_id"` // 网盘 ID(去硬编码,research R2)
ExpiresAt int64 `json:"expires_at"` // access_token 过期 unix 秒
UrldbFolderID string `json:"urldb_folder_id"` // urldb 目录 file_id(懒初始化,research R5)
DeviceID string `json:"device_id"` // 设备指纹(x-device-id)
UserID string `json:"user_id"` // 阿里云盘 user_id(从 access_token JWT 解析,动态签名需要)
PrivateKey string `json:"private_key"` // secp256k1 私钥 hex(动态签名用,移植 OpenList)
}
AlipanExtraData 阿里云盘运行期数据,JSON 序列化后存入 Cks.Extra(data-model.md §2.1)
type AlipanService ¶
type AlipanService struct {
*BasePanService
// contains filtered or unexported fields
}
AlipanService 阿里云盘服务
func NewAlipanService ¶
func NewAlipanService(config *PanConfig) *AlipanService
NewAlipanService 创建阿里云盘服务(每次新建实例;per-account 限速器在 SetCKSRepository 时按账号绑定)
func (*AlipanService) DeleteFiles ¶
func (a *AlipanService) DeleteFiles(fileList []string) (*TransferResult, error)
DeleteFiles 删除文件(清理用;FR-008)。fid 可能是逗号分隔(转存时 join 存储)。 错误信息确保能被 cleanup_service.isFileNotExist 宽松匹配(research R8)。
func (*AlipanService) GetFiles ¶
func (a *AlipanService) GetFiles(pdirFid string) (*TransferResult, error)
GetFiles 获取文件列表
func (*AlipanService) GetServiceType ¶
func (a *AlipanService) GetServiceType() ServiceType
GetServiceType 获取服务类型
func (*AlipanService) GetUserInfo ¶
func (a *AlipanService) GetUserInfo(ck *string) (*UserInfo, error)
GetUserInfo 传入的 *ck 为 refresh_token(Cks.Ck 或表单输入)。 用 refresh_token 换 access_token,调 /v2/user/get,返回容量/会员/昵称, 并经 UserInfo.ExtraData 携带 AlipanExtraData(含 access_token/drive_id)供首次持久化。
func (*AlipanService) GetUserInfoByEntity ¶ added in v1.3.0
func (a *AlipanService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)
GetUserInfoByEntity 从 entity.Cks 获取用户信息(research R13)
func (*AlipanService) SetCKSRepository ¶ added in v1.3.0
func (a *AlipanService) SetCKSRepository(cksRepo repo.CksRepository, cks entity.Cks)
SetCKSRepository 注入账号凭证仓储(research R4) 从 cks.Ck(refresh_token) 与 cks.Extra(AlipanExtraData) 解析凭证,并绑定 per-account 限速器。
func (*AlipanService) Transfer ¶
func (a *AlipanService) Transfer(shareID string) (*TransferResult, error)
func (*AlipanService) UpdateConfig ¶
func (a *AlipanService) UpdateConfig(config *PanConfig)
UpdateConfig 更新配置(线程安全)
type BaiduPanService ¶
type BaiduPanService struct {
*BasePanService
}
BaiduPanService 百度网盘服务
func NewBaiduPanService ¶
func NewBaiduPanService(config *PanConfig) *BaiduPanService
NewBaiduPanService 创建百度网盘服务
func (*BaiduPanService) DeleteFiles ¶
func (b *BaiduPanService) DeleteFiles(fileList []string) (*TransferResult, error)
DeleteFiles 删除文件(fileList 元素可能是逗号连接的多路径)
func (*BaiduPanService) GetFiles ¶
func (b *BaiduPanService) GetFiles(pdirFid string) (*TransferResult, error)
GetFiles 获取文件列表
func (*BaiduPanService) GetServiceType ¶
func (b *BaiduPanService) GetServiceType() ServiceType
GetServiceType 获取服务类型
func (*BaiduPanService) GetUserInfo ¶
func (b *BaiduPanService) GetUserInfo(cookie *string) (*UserInfo, error)
GetUserInfo 获取用户信息
百度网盘网页版的用户信息分散在两个 API:
- /api/gettemplatevariable —— 仅返回 username / uk / vip_type(不含容量)
- /api/quota —— 返回 total / used(字节数,int64)
历史代码试图用单个 API 拿全部字段(fields 里塞 total_capacity/used_capacity), 但百度会静默忽略不支持的 field,导致容量恒为 0。这里改成两次请求组合。
func (*BaiduPanService) GetUserInfoByEntity ¶ added in v1.3.0
func (b *BaiduPanService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)
GetUserInfoByEntity 根据 entity.Cks 获取用户信息(待实现)
func (*BaiduPanService) SetCKSRepository ¶ added in v1.3.0
func (u *BaiduPanService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
func (*BaiduPanService) Share ¶ added in v1.5.4
func (b *BaiduPanService) Share(fid string) (*TransferResult, error)
Share 对系统已存文件按 fid 重新生成百度分享链接(实现 Sharer,FR-015)。 fid 即百度 fs_id(int64,存为字符串);period=1 永久分享。失败时由调用方回退到「判原始→转存」。
func (*BaiduPanService) Transfer ¶
func (b *BaiduPanService) Transfer(shareID string) (*TransferResult, error)
Transfer 转存分享链接
func (*BaiduPanService) UpdateConfig ¶ added in v1.3.0
func (x *BaiduPanService) UpdateConfig(config *PanConfig)
type BasePanService ¶
type BasePanService struct {
// contains filtered or unexported fields
}
BasePanService 基础网盘服务
func NewBasePanService ¶
func NewBasePanService(config *PanConfig) *BasePanService
NewBasePanService 创建基础网盘服务
func (*BasePanService) ExecuteWithRetry ¶
func (b *BasePanService) ExecuteWithRetry(executeFunc func() ([]byte, error), maxRetries int, retryDelay time.Duration) ([]byte, error)
ExecuteWithRetry 带重试的请求执行
func (*BasePanService) ExtractFileName ¶
func (b *BasePanService) ExtractFileName(urlStr string) string
ExtractFileName 从URL中提取文件名
func (*BasePanService) GetHeader ¶
func (b *BasePanService) GetHeader(key string) string
GetHeader 获取请求头
func (*BasePanService) HTTPDelete ¶
func (b *BasePanService) HTTPDelete(requestURL string) ([]byte, error)
HTTPDelete 发送DELETE请求
func (*BasePanService) HTTPPatch ¶ added in v1.5.0
func (b *BasePanService) HTTPPatch(requestURL string, data interface{}) ([]byte, error)
HTTPPatch 发送PATCH请求
func (*BasePanService) HTTPPost ¶
func (b *BasePanService) HTTPPost(requestURL string, data interface{}, queryParams map[string]string) ([]byte, error)
HTTPPost 发送POST请求
func (*BasePanService) HTTPPostForm ¶ added in v1.4.0
func (b *BasePanService) HTTPPostForm(requestURL string, rawBody string, queryParams map[string]string) ([]byte, error)
HTTPPostForm 发送原始字符串 body(如 application/x-www-form-urlencoded), 不做 JSON 包装。用于百度 verify/transfer/pset/filemanager。
func (*BasePanService) HTTPPut ¶
func (b *BasePanService) HTTPPut(requestURL string, data interface{}) ([]byte, error)
HTTPPut 发送PUT请求
func (*BasePanService) IsValidURL ¶
func (b *BasePanService) IsValidURL(urlStr string) bool
IsValidURL 验证URL格式
func (*BasePanService) ParseJSONResponse ¶
func (b *BasePanService) ParseJSONResponse(data []byte, v interface{}) error
ParseJSONResponse 解析JSON响应
func (*BasePanService) SanitizeFileName ¶
func (b *BasePanService) SanitizeFileName(fileName string) string
SanitizeFileName 清理文件名
func (*BasePanService) SetHeader ¶
func (b *BasePanService) SetHeader(key, value string)
SetHeader 设置请求头
func (*BasePanService) SetHeaders ¶
func (b *BasePanService) SetHeaders(headers map[string]string)
SetHeaders 批量设置请求头
type CaptchaData ¶ added in v1.3.0
type CaptchaData struct {
CaptchaToken string `json:"captcha_token"`
ExpiresAt int64 `json:"expires_at"`
}
CaptchaData 存储在数据库中的验证码令牌数据
type PanConfig ¶
type PanConfig struct {
URL string `json:"url"`
Code string `json:"code"`
IsType int `json:"isType"` // 0: 转存并分享后的资源信息, 1: 直接获取资源信息
ExpiredType int `json:"expiredType"` // 1: 分享永久, 2: 临时
AdFid string `json:"adFid"` // 夸克专用 - 分享时带上这个文件的fid
Stoken string `json:"stoken"`
Cookie string `json:"cookie"`
}
PanConfig 网盘配置
type PanFactory ¶
type PanFactory struct{}
PanFactory 网盘工厂
func (*PanFactory) CreatePanService ¶
func (f *PanFactory) CreatePanService(url string, config *PanConfig) (PanService, error)
CreatePanService 根据URL创建对应的网盘服务
func (*PanFactory) CreatePanServiceByType ¶
func (f *PanFactory) CreatePanServiceByType(serviceType ServiceType, config *PanConfig) (PanService, error)
CreatePanServiceByType 根据服务类型创建对应的网盘服务
func (*PanFactory) GetAlipanService ¶
func (f *PanFactory) GetAlipanService(config *PanConfig) PanService
GetAlipanService 获取阿里云盘服务单例
func (*PanFactory) GetBaiduService ¶
func (f *PanFactory) GetBaiduService(config *PanConfig) PanService
GetBaiduService 获取百度网盘服务单例
func (*PanFactory) GetQuarkService ¶
func (f *PanFactory) GetQuarkService(config *PanConfig) PanService
GetQuarkService 获取夸克网盘服务单例
func (*PanFactory) GetUCService ¶
func (f *PanFactory) GetUCService(config *PanConfig) PanService
GetUCService 获取UC网盘服务单例
func (*PanFactory) GetXunleiService ¶ added in v1.2.3
func (f *PanFactory) GetXunleiService(config *PanConfig) PanService
GetXunleiService 获取迅雷网盘服务单例
type PanService ¶
type PanService interface {
// Transfer 转存分享链接
Transfer(shareID string) (*TransferResult, error)
// GetFiles 获取文件列表
GetFiles(pdirFid string) (*TransferResult, error)
// DeleteFiles 删除文件
DeleteFiles(fileList []string) (*TransferResult, error)
// GetUserInfo 获取用户信息
GetUserInfo(ck *string) (*UserInfo, error)
// GetServiceType 获取服务类型
GetServiceType() ServiceType
SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
UpdateConfig(config *PanConfig)
}
PanService 网盘服务接口
type PasswordResult ¶
type QuarkPanService ¶
type QuarkPanService struct {
*BasePanService
// contains filtered or unexported fields
}
QuarkPanService 夸克网盘服务
func NewQuarkPanService ¶
func NewQuarkPanService(config *PanConfig) *QuarkPanService
NewQuarkPanService 创建夸克网盘服务(单例模式)
func (*QuarkPanService) DeleteFiles ¶
func (q *QuarkPanService) DeleteFiles(fileList []string) (*TransferResult, error)
DeleteFiles 删除文件
func (*QuarkPanService) GetCookie ¶ added in v1.0.9
func (q *QuarkPanService) GetCookie() string
GetCookie 获取当前Cookie
func (*QuarkPanService) GetFiles ¶
func (q *QuarkPanService) GetFiles(pdirFid string) (*TransferResult, error)
GetFiles 获取文件列表
func (*QuarkPanService) GetServiceType ¶
func (q *QuarkPanService) GetServiceType() ServiceType
GetServiceType 获取服务类型
func (*QuarkPanService) GetUserInfo ¶
func (q *QuarkPanService) GetUserInfo(cookie *string) (*UserInfo, error)
GetUserInfo 获取用户信息
func (*QuarkPanService) SetCKSRepository ¶ added in v1.3.0
func (xq *QuarkPanService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
func (*QuarkPanService) SetCookie ¶ added in v1.0.9
func (q *QuarkPanService) SetCookie(cookie string)
SetCookie 设置Cookie
func (*QuarkPanService) Share ¶ added in v1.5.4
func (q *QuarkPanService) Share(fid string) (*TransferResult, error)
Share 对系统已存文件按 fid 重新生成夸克分享链接(实现 Sharer,FR-015)。 夸克分享为异步任务,流程须与 Transfer 的分享段完全对齐:
getShareBtn 创建任务 → waitForTask 轮询直到 Status==2 拿 share_id → getSharePassword 取最终 ShareURL。
早期实现只看 share_id 非空就返回、且跳过 getSharePassword,会在任务尚未完成时拿到未生效的 share_id, 导致拼出的链接打开是「已删除」状态。此处复用 waitForTask(检查 Status==2)+ getSharePassword 修复。 失败时由调用方(决策树)回退到「判原始→转存」,故此处失败是安全的降级。
func (*QuarkPanService) Transfer ¶
func (q *QuarkPanService) Transfer(shareID string) (*TransferResult, error)
Transfer 转存分享链接
func (*QuarkPanService) UpdateConfig ¶
func (q *QuarkPanService) UpdateConfig(config *PanConfig)
UpdateConfig 更新配置(线程安全)
type SaveResult ¶
type SaveResult struct {
TaskID string `json:"task_id"`
}
type ServiceType ¶
type ServiceType int
ServiceType 定义网盘服务类型
const ( Quark ServiceType = iota Alipan BaiduPan UC NotFound Xunlei Tianyi Pan123 Pan115 )
func ExtractServiceType ¶
func ExtractServiceType(url string) ServiceType
ExtractServiceType 从URL中提取服务类型
func ExtractShareId ¶
func ExtractShareId(url string) (string, ServiceType)
ExtractShareId 从URL中提取分享ID
type ShareBtnResult ¶
type ShareBtnResult struct {
}
type ShareResult ¶
type Sharer ¶ added in v1.5.4
type Sharer interface {
Share(fid string) (*TransferResult, error)
}
Sharer 对系统已存文件按 fid 重新生成分享链接的能力(独立于 PanService,仅 quark/xunlei/baidu 实现)。 用于「转存链接 saveUrl 已存在但失效」时的恢复操作(FR-015),避免对原始链接重复转存。
type StokenResult ¶
定义各种结果结构体
type TaskResult ¶
type TransferResult ¶
type TransferResult struct {
Success bool `json:"success"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
Title string `json:"title,omitempty"`
Fid string `json:"fid,omitempty"`
}
TransferResult 转存结果
func SuccessResult ¶
func SuccessResult(message string, data interface{}) *TransferResult
SuccessResult 创建成功结果
type UCPasswordResult ¶ added in v1.5.0
type UCSaveResult ¶ added in v1.5.0
type UCSaveResult struct {
TaskID string `json:"task_id"`
}
type UCService ¶
type UCService struct {
*BasePanService
// contains filtered or unexported fields
}
UCService UC网盘服务
func (*UCService) DeleteFiles ¶
func (u *UCService) DeleteFiles(fileList []string) (*TransferResult, error)
DeleteFiles 删除文件
func (*UCService) GetFiles ¶
func (u *UCService) GetFiles(pdirFid string) (*TransferResult, error)
GetFiles 获取文件列表
func (*UCService) GetServiceType ¶
func (u *UCService) GetServiceType() ServiceType
GetServiceType 获取服务类型
func (*UCService) GetUserInfo ¶
GetUserInfo 获取用户信息(容量 + 会员状态)。
走 UC 已验证可用的 /member 接口(主机 pc-api.uc.cn/1/clouddrive,pr=UCBrowser), 取 total_capacity / use_capacity / member_type。
注意:早期实现的 https://drive.uc.cn/api/user/info 为无效端点(302 跳转回首页 HTML, 导致 "invalid character '<'" 解析错误),已弃用。/member 不返回昵称,而 UC 无公开的 昵称接口(/user/info 返回 404),故 Username 使用占位值。
func (*UCService) GetUserInfoByEntity ¶ added in v1.3.0
GetUserInfoByEntity 根据 entity.Cks 获取用户信息
func (*UCService) SetCKSRepository ¶ added in v1.3.0
func (u *UCService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
SetCKSRepository 设置CKS仓储(与夸克保持一致的空实现形态)
func (*UCService) Share ¶ added in v1.5.4
func (u *UCService) Share(fid string) (*TransferResult, error)
Share 对系统已存文件按 fid 重新生成 UC 分享链接(实现 Sharer,FR-015)。 UC 与夸克同构,分享为异步任务,流程须与 Transfer 的分享段完全对齐:
getShareBtn 创建任务 → waitForTask 轮询直到 Status==2 拿 share_id → getSharePassword 取最终 ShareURL。
若像早期 quark Share 那样只看 share_id 非空就返回、跳过 getSharePassword, 会拿到任务尚未完成时的未生效 share_id,导致链接打开是「已删除」状态。 失败时由调用方(决策树)回退到「判原始→转存」,故此处失败是安全的降级。
func (*UCService) Transfer ¶
func (u *UCService) Transfer(shareID string) (*TransferResult, error)
Transfer 转存分享链接
func (*UCService) UpdateConfig ¶ added in v1.3.0
UpdateConfig 更新配置(线程安全)
type UCShareBtnResult ¶ added in v1.5.0
type UCShareBtnResult struct {
}
type UCShareResult ¶ added in v1.5.0
type UCStokenResult ¶ added in v1.5.0
type UCTaskResult ¶ added in v1.5.0
type UserInfo ¶
type UserInfo struct {
Username string `json:"username"` // 用户名
VIPStatus bool `json:"vipStatus"` // VIP状态
UsedSpace int64 `json:"usedSpace"` // 已使用空间
TotalSpace int64 `json:"totalSpace"` // 总空间
ServiceType string `json:"serviceType"` // 服务类型
ExtraData string `json:"extraData"` // 额外信息
}
UserInfo 用户信息结构体
type XLBatchShareResp ¶ added in v1.2.3
type XLBatchShareResp struct {
ShareURL string `json:"share_url"`
} `json:"data"`
}
type XLCommonResp ¶ added in v1.2.3
type XLFileInfo ¶ added in v1.2.3
type XLRestoreResp ¶ added in v1.2.3
type XLShareFolderResp ¶ added in v1.2.3
type XLShareListResp ¶ added in v1.2.3
type XLShareListResp struct {
List []struct {
ShareID string `json:"share_id"`
Title string `json:"title"`
} `json:"list"`
} `json:"data"`
}
结构体完全对齐 xunleix
type XLTaskResult ¶ added in v1.2.3
type XunleiAccountCredentials ¶ added in v1.3.5
type XunleiAccountCredentials struct {
Username string `json:"username"` // 手机号(不包含+86前缀)
Password string `json:"password"` // 密码
RefreshToken string `json:"refresh_token"` // 当前有效的refresh_token
Creditkey string `json:"creditkey"` // 信任密钥(review 短信验证后用于绕过新设备安全验证)
ClientType string `json:"client_type"` // 身份类型 android|browser,默认 android(决定 client_id/盐值/API host)
}
XunleiAccountCredentials 迅雷账号凭据结构
func ParseCredentialsFromCk ¶ added in v1.3.5
func ParseCredentialsFromCk(ck string) (*XunleiAccountCredentials, error)
ParseCredentialsFromCk 从ck字段解析账号凭据
func (*XunleiAccountCredentials) ToJsonString ¶ added in v1.3.5
func (c *XunleiAccountCredentials) ToJsonString() (string, error)
ToJsonString 转换为JSON字符串
type XunleiExtraData ¶ added in v1.3.0
type XunleiExtraData struct {
Captcha *CaptchaData `json:"captcha,omitempty"`
Token *XunleiTokenData `json:"token,omitempty"`
Credentials *XunleiAccountCredentials `json:"credentials,omitempty"` // 账号密码信息
}
type XunleiPanService ¶ added in v1.2.3
type XunleiPanService struct {
*BasePanService
// contains filtered or unexported fields
}
func GetXunleiInstance ¶ added in v1.2.3
func GetXunleiInstance() *XunleiPanService
GetXunleiInstance 获取迅雷网盘服务单例实例
func NewXunleiPanService ¶ added in v1.2.3
func NewXunleiPanService(config *PanConfig) *XunleiPanService
NewXunleiPanService 创建迅雷网盘服务
func (*XunleiPanService) DeleteFiles ¶ added in v1.2.3
func (x *XunleiPanService) DeleteFiles(fileList []string) (*TransferResult, error)
DeleteFiles 永久删除网盘文件(不进回收站,直接释放空间)- 实现 PanService 接口。 使用 POST /drive/v1/files:batchDelete(参考 OpenList thunder_browser Remove, RemoveWay=delete), 需 access_token + captcha_token。
func (*XunleiPanService) FileBatchShare ¶ added in v1.2.3
func (x *XunleiPanService) FileBatchShare(ids []string, needPassword bool, expirationDays int) (*XLBatchShareResp, error)
FileBatchShare 创建分享(使用 BasePanService)
func (*XunleiPanService) GetAccessTokenByRefreshToken ¶ added in v1.3.0
func (x *XunleiPanService) GetAccessTokenByRefreshToken(refreshToken string) (XunleiTokenData, error)
func (*XunleiPanService) GetFiles ¶ added in v1.2.3
func (x *XunleiPanService) GetFiles(pdirFid string) (*TransferResult, error)
GetFiles 获取文件列表 - 匹配 PHP 版本接口调用
func (*XunleiPanService) GetServiceType ¶ added in v1.2.3
func (x *XunleiPanService) GetServiceType() ServiceType
GetServiceType 获取服务类型
func (*XunleiPanService) GetShareFolder ¶ added in v1.2.3
func (x *XunleiPanService) GetShareFolder(shareID, passCodeToken, parentID string) (*XLShareFolderResp, error)
GetShareFolder 获取分享内容(使用 BasePanService)
func (*XunleiPanService) GetShareList ¶ added in v1.2.3
func (x *XunleiPanService) GetShareList(pageToken string) (*XLShareListResp, error)
GetShareList 严格对齐 GET + query(使用 BasePanService)
func (*XunleiPanService) GetUserInfo ¶ added in v1.2.3
func (x *XunleiPanService) GetUserInfo(cookie *string) (*UserInfo, error)
GetUserInfo 获取用户信息 - 实现 PanService 接口,cookie 参数为 refresh_token,先获取 access_token 再访问 API
func (*XunleiPanService) GetUserInfoByEntity ¶ added in v1.3.0
func (x *XunleiPanService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)
GetUserInfoByEntity 根据 entity.Cks 获取用户信息(待实现)
func (*XunleiPanService) Keepalive ¶ added in v1.5.0
func (x *XunleiPanService) Keepalive() error
Keepalive 保活:刷新并持久化 access_token(顺带给 refresh_token 续命),供定时保活任务调用。 仅刷新令牌,不调用其它网盘 API,避免因无关接口失败而误判账号失效。
func (*XunleiPanService) LoginByRefreshToken ¶ added in v1.5.0
func (x *XunleiPanService) LoginByRefreshToken(refreshToken string) (XunleiTokenData, error)
LoginByRefreshToken 用 refresh_token 直接登录。
func (*XunleiPanService) LoginWithCredentials ¶ added in v1.3.5
func (x *XunleiPanService) LoginWithCredentials(username, password, creditkey string) (XunleiTokenData, error)
LoginWithCredentials 账号密码登录(保留,前端不再调用)。
func (*XunleiPanService) Restore ¶ added in v1.2.3
func (x *XunleiPanService) Restore(shareID, passCodeToken string, fileIDs []string) (*XLRestoreResp, error)
Restore 转存(使用 BasePanService)
func (*XunleiPanService) SetCKSRepository ¶ added in v1.3.0
func (x *XunleiPanService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)
SetCKSRepository 设置 CksRepository 和 entity
func (*XunleiPanService) SetClientType ¶ added in v1.5.0
func (x *XunleiPanService) SetClientType(clientType string)
SetClientType 按账号 client_type(android/browser)切换身份 profile,并同步请求头。
func (*XunleiPanService) Share ¶ added in v1.5.4
func (x *XunleiPanService) Share(fid string) (*TransferResult, error)
Share 对系统已存文件按 fid 重新生成迅雷分享链接(实现 Sharer,FR-015)。 expiration_days=0 表示永久分享(迅雷语义)。失败时由调用方(决策树)回退到「判原始→转存」。
func (*XunleiPanService) ShareBatchDelete ¶ added in v1.2.3
func (x *XunleiPanService) ShareBatchDelete(ids []string) (*XLCommonResp, error)
ShareBatchDelete 取消分享(使用 BasePanService)
func (*XunleiPanService) Transfer ¶ added in v1.2.3
func (x *XunleiPanService) Transfer(shareID string) (*TransferResult, error)
Transfer 转存分享链接 - 实现 PanService 接口,匹配 XunleiPan.php 的逻辑
func (*XunleiPanService) UpdateConfig ¶ added in v1.2.3
func (x *XunleiPanService) UpdateConfig(config *PanConfig)
type XunleiReviewError ¶ added in v1.5.0
XunleiReviewError 账号密码登录触发迅雷新设备安全验证(review)。 携带 creditkey 与验证链接,供上层透传给前端走 creditkey 闭环(对齐 OpenList)。
func (*XunleiReviewError) Error ¶ added in v1.5.0
func (e *XunleiReviewError) Error() string
type XunleiTokenData ¶ added in v1.3.0
type XunleiTokenData struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
ExpiresIn int64 `json:"expires_in"`
ExpiresAt int64 `json:"expires_at"`
Sub string `json:"sub"`
TokenType string `json:"token_type"`
UserId string `json:"user_id"`
}
XunleiExtraData 所有额外数据的容器