pan

package
v1.3.7 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2026 License: GPL-3.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	XLUSER_CLIENT_ID = "XW5SkOhLDjnOZP7J" // 登录
	PAN_CLIENT_ID    = "Xqp0kJBXWhwaTpB6" // 获取文件列表
	CLIENT_SECRET    = "Og9Vr1L8Ee6bh0olFxFDRg"
	CLIENT_VERSION   = "1.92.9" // 更新为与xunlei_3项目相同的版本
	PACKAG_ENAME     = "pan.xunlei.com"
)

新增常量定义

Variables

View Source
var SALTS = []string{
	"QG3/GhopO+5+T",
	"1Sv94+ANND3lDmmw",
	"q2eTxRva8b3B5d",
	"m2",
	"VIc5CZRBMU71ENfbOh0+RgWIuzLy",
	"66M8Wpw6nkBEekOtL6e",
	"N0rucK7S8W/vrRkfPto5urIJJS8dVY0S",
	"oLAR7pdUVUAp9xcuHWzrU057aUhdCJrt",
	"6lxcykBSsfI//GR9",
	"r50cz+1I4gbU/fk8",
	"tdwzrTc4SNFC4marNGTgf05flC85A",
	"qvNVUDFjfsOMqvdi2gB8gCvtaJAIqxXs",
}

Functions

func IsAccountCredentials added in v1.3.5

func IsAccountCredentials(ck string) bool

IsAccountCredentials 检查ck是否包含账号密码信息

func ParseCapacityString

func ParseCapacityString(capacityStr string) int64

ParseCapacityString 解析容量字符串为字节数

func RefreshSystemConfigCache added in v1.2.3

func RefreshSystemConfigCache()

RefreshSystemConfigCache 全局刷新系统配置缓存(供外部调用)

Types

type AlipanBatchResult

type AlipanBatchResult struct {
	Responses []struct {
		Body struct {
			Code    string `json:"code"`
			Message string `json:"message"`
			FileID  string `json:"file_id"`
		} `json:"body"`
	} `json:"responses"`
}

type AlipanService

type AlipanService struct {
	*BasePanService
	// contains filtered or unexported fields
}

AlipanService 阿里云盘服务

func GetAlipanInstance

func GetAlipanInstance() *AlipanService

GetAlipanInstance 获取阿里云盘服务单例实例

func NewAlipanService

func NewAlipanService(config *PanConfig) *AlipanService

NewAlipanService 创建阿里云盘服务(单例模式)

func (*AlipanService) DeleteFiles

func (a *AlipanService) DeleteFiles(fileList []string) (*TransferResult, error)

DeleteFiles 删除文件

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(cookie *string) (*UserInfo, error)

GetUserInfo 获取用户信息

func (*AlipanService) GetUserInfoByEntity added in v1.3.0

func (a *AlipanService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)

GetUserInfoByEntity 根据 entity.Cks 获取用户信息(待实现)

func (*AlipanService) SetCKSRepository added in v1.3.0

func (u *AlipanService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)

func (*AlipanService) Transfer

func (a *AlipanService) Transfer(shareID string) (*TransferResult, error)

Transfer 转存分享链接

func (*AlipanService) UpdateConfig

func (a *AlipanService) UpdateConfig(config *PanConfig)

UpdateConfig 更新配置(线程安全)

type AlipanShareInfo

type AlipanShareInfo struct {
	ShareName string `json:"share_name"`
	FileInfos []struct {
		FileID string `json:"file_id"`
	} `json:"file_infos"`
}

定义阿里云盘相关的结构体

type AlipanShareResult

type AlipanShareResult struct {
	ShareURL   string   `json:"share_url"`
	ShareTitle string   `json:"share_title"`
	FileIDList []string `json:"file_id_list"`
}

type AlipanShareToken

type AlipanShareToken struct {
	ShareToken string `json:"share_token"`
}

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 删除文件

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 获取用户信息

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) 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) GetConfig

func (b *BasePanService) GetConfig() *PanConfig

GetConfig 获取配置

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) HTTPGet

func (b *BasePanService) HTTPGet(requestURL string, queryParams map[string]string) ([]byte, error)

HTTPGet 发送GET请求

func (*BasePanService) HTTPPost

func (b *BasePanService) HTTPPost(requestURL string, data interface{}, queryParams map[string]string) ([]byte, error)

HTTPPost 发送POST请求

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 GetInstance

func GetInstance() *PanFactory

GetInstance 获取单例实例(推荐使用)

func NewPanFactory

func NewPanFactory() *PanFactory

NewPanFactory 创建网盘工厂实例(单例模式)

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 PasswordResult struct {
	ShareURL   string `json:"share_url"`
	ShareTitle string `json:"share_title"`
	Code       string `json:"code"`
	FirstFile  struct {
		Fid string `json:"fid"`
	} `json:"first_file"`
}

type QuarkPanService

type QuarkPanService struct {
	*BasePanService
	// contains filtered or unexported fields
}

QuarkPanService 夸克网盘服务

func GetQuarkInstance

func GetQuarkInstance() *QuarkPanService

GetQuarkInstance 获取夸克网盘服务单例实例

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) 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

func (ServiceType) String

func (s ServiceType) String() string

String 返回服务类型的字符串表示

type ShareBtnResult

type ShareBtnResult struct {
	TaskID string `json:"task_id"`
}

type ShareResult

type ShareResult struct {
	Share struct {
		Title string `json:"title"`
	} `json:"share"`
	List []struct {
		Fid           string `json:"fid"`
		ShareFidToken string `json:"share_fid_token"`
	} `json:"list"`
}

type StokenResult

type StokenResult struct {
	Stoken string `json:"stoken"`
	Title  string `json:"title"`
}

定义各种结果结构体

type TaskResult

type TaskResult struct {
	Status  int    `json:"status"`
	ShareID string `json:"share_id"`
	SaveAs  struct {
		SaveAsTopFids []string `json:"save_as_top_fids"`
	} `json:"save_as"`
}

type TransferResult

type TransferResult struct {
	Success  bool        `json:"success"`
	Message  string      `json:"message"`
	Data     interface{} `json:"data,omitempty"`
	ShareURL string      `json:"shareUrl,omitempty"`
	Title    string      `json:"title,omitempty"`
	Fid      string      `json:"fid,omitempty"`
}

TransferResult 转存结果

func ErrorResult

func ErrorResult(message string) *TransferResult

ErrorResult 创建错误结果

func SuccessResult

func SuccessResult(message string, data interface{}) *TransferResult

SuccessResult 创建成功结果

type UCService

type UCService struct {
	*BasePanService
}

UCService UC网盘服务

func NewUCService

func NewUCService(config *PanConfig) *UCService

NewUCService 创建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

func (u *UCService) GetUserInfo(cookie *string) (*UserInfo, error)

GetUserInfo 获取用户信息

func (*UCService) GetUserInfoByEntity added in v1.3.0

func (u *UCService) GetUserInfoByEntity(cks entity.Cks) (*UserInfo, error)

GetUserInfoByEntity 根据 entity.Cks 获取用户信息(待实现)

func (*UCService) SetCKSRepository added in v1.3.0

func (u *UCService) SetCKSRepository(cksRepo repo.CksRepository, entity entity.Cks)

func (*UCService) Transfer

func (u *UCService) Transfer(shareID string) (*TransferResult, error)

Transfer 转存分享链接

func (*UCService) UpdateConfig added in v1.3.0

func (x *UCService) UpdateConfig(config *PanConfig)

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 {
	Data struct {
		ShareURL string `json:"share_url"`
	} `json:"data"`
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

type XLCommonResp added in v1.2.3

type XLCommonResp struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

type XLFileInfo added in v1.2.3

type XLFileInfo struct {
	FileID string `json:"file_id"`
	Name   string `json:"name"`
}

type XLRestoreResp added in v1.2.3

type XLRestoreResp struct {
	Data struct {
		TaskID string `json:"task_id"`
	} `json:"data"`
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

type XLShareFolderResp added in v1.2.3

type XLShareFolderResp struct {
	Data struct {
		Files []struct {
			FileID string `json:"file_id"`
			Name   string `json:"name"`
		} `json:"files"`
	} `json:"data"`
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

type XLShareInfo added in v1.2.3

type XLShareInfo struct {
	ShareID string       `json:"share_id"`
	Title   string       `json:"title"`
	Files   []XLFileInfo `json:"files"`
}

新增辅助结构体

type XLShareListResp added in v1.2.3

type XLShareListResp struct {
	Data struct {
		List []struct {
			ShareID string `json:"share_id"`
			Title   string `json:"title"`
		} `json:"list"`
	} `json:"data"`
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

结构体完全对齐 xunleix

type XLTaskResult added in v1.2.3

type XLTaskResult struct {
	Status int    `json:"status"`
	TaskID string `json:"task_id"`
	Data   struct {
		ShareID string `json:"share_id"`
	} `json:"data"`
}

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
}

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 接口

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) LoginWithCredentials added in v1.3.5

func (x *XunleiPanService) LoginWithCredentials(username, password 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) 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 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 所有额外数据的容器

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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