2022-11-01 07:31:31 +00:00
|
|
|
package _115
|
|
|
|
|
|
|
|
import (
|
2022-11-04 13:16:52 +00:00
|
|
|
"fmt"
|
|
|
|
|
2022-11-01 07:31:31 +00:00
|
|
|
"github.com/SheltonZhu/115driver/pkg/driver"
|
2022-11-04 13:16:52 +00:00
|
|
|
"github.com/pkg/errors"
|
2022-11-01 07:31:31 +00:00
|
|
|
)
|
2022-11-09 10:15:06 +00:00
|
|
|
|
2022-11-05 07:50:57 +00:00
|
|
|
var UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 115Browser/23.9.3.2 115disk/30.1.0"
|
2022-11-09 10:15:06 +00:00
|
|
|
|
2022-11-01 07:31:31 +00:00
|
|
|
func (d *Pan115) login() error {
|
2022-11-04 13:16:52 +00:00
|
|
|
var err error
|
2022-11-01 07:31:31 +00:00
|
|
|
opts := []driver.Option{
|
2022-11-05 07:50:57 +00:00
|
|
|
driver.UA(UserAgent),
|
2022-11-09 10:15:06 +00:00
|
|
|
}
|
2022-11-01 07:31:31 +00:00
|
|
|
d.client = driver.New(opts...)
|
|
|
|
cr := &driver.Credential{}
|
2022-11-04 13:16:52 +00:00
|
|
|
if d.Addition.QRCodeToken != "" {
|
|
|
|
s := &driver.QRCodeSession{
|
|
|
|
UID: d.Addition.QRCodeToken,
|
|
|
|
}
|
|
|
|
if cr, err = d.client.QRCodeLogin(s); err != nil {
|
|
|
|
return errors.Wrap(err, "failed to login by qrcode")
|
|
|
|
}
|
|
|
|
d.Addition.Cookie = fmt.Sprintf("UID=%s;CID=%s;SEID=%s", cr.UID, cr.CID, cr.SEID)
|
|
|
|
d.Addition.QRCodeToken = ""
|
|
|
|
} else if d.Addition.Cookie != "" {
|
|
|
|
if err = cr.FromCookie(d.Addition.Cookie); err != nil {
|
|
|
|
return errors.Wrap(err, "failed to login by cookies")
|
|
|
|
}
|
|
|
|
d.client.ImportCredential(cr)
|
|
|
|
} else {
|
|
|
|
return errors.New("missing cookie or qrcode account")
|
2022-11-01 07:31:31 +00:00
|
|
|
}
|
|
|
|
return d.client.LoginCheck()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (d *Pan115) getFiles(fileId string) ([]driver.File, error) {
|
|
|
|
res := make([]driver.File, 0)
|
|
|
|
files, err := d.client.List(fileId)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
for _, file := range *files {
|
|
|
|
res = append(res, file)
|
|
|
|
}
|
|
|
|
return res, nil
|
|
|
|
}
|