2022-04-28 15:25:21 +00:00
|
|
|
package baiduphoto
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"fmt"
|
|
|
|
"math"
|
|
|
|
"math/rand"
|
|
|
|
"regexp"
|
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/Xhofe/alist/model"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2022-05-10 03:43:54 +00:00
|
|
|
API_URL = "https://photo.baidu.com/youai"
|
|
|
|
ALBUM_API_URL = API_URL + "/album/v1"
|
|
|
|
FILE_API_URL_V1 = API_URL + "/file/v1"
|
|
|
|
FILE_API_URL_V2 = API_URL + "/file/v2"
|
2022-04-28 15:25:21 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
ErrNotSupportName = errors.New("only chinese and english, numbers and underscores are supported, and the length is no more than 20")
|
|
|
|
)
|
|
|
|
|
|
|
|
//Tid生成
|
|
|
|
func getTid() string {
|
|
|
|
return fmt.Sprintf("3%d%.0f", time.Now().Unix(), math.Floor(9000000*rand.Float64()+1000000))
|
|
|
|
}
|
|
|
|
|
|
|
|
// 检查名称
|
|
|
|
func checkName(name string) bool {
|
|
|
|
return len(name) <= 20 && regexp.MustCompile("[\u4e00-\u9fa5A-Za-z0-9_]").MatchString(name)
|
|
|
|
}
|
|
|
|
|
|
|
|
func getTime(t int64) *time.Time {
|
|
|
|
tm := time.Unix(t, 0)
|
|
|
|
return &tm
|
|
|
|
}
|
|
|
|
|
|
|
|
func fsidsFormat(ids ...string) string {
|
|
|
|
var buf []string
|
|
|
|
for _, id := range ids {
|
|
|
|
e := strings.Split(id, "|")
|
|
|
|
buf = append(buf, fmt.Sprintf("{\"fsid\":%s,\"uk\":%s}", e[0], e[1]))
|
|
|
|
}
|
|
|
|
return fmt.Sprintf("[%s]", strings.Join(buf, ","))
|
|
|
|
}
|
|
|
|
|
|
|
|
func fsidsFormatNotUk(ids ...string) string {
|
|
|
|
var buf []string
|
|
|
|
for _, id := range ids {
|
|
|
|
buf = append(buf, fmt.Sprintf("{\"fsid\":%s}", strings.Split(id, "|")[0]))
|
|
|
|
}
|
|
|
|
return fmt.Sprintf("[%s]", strings.Join(buf, ","))
|
|
|
|
}
|
|
|
|
|
|
|
|
func splitID(id string) []string {
|
|
|
|
return strings.SplitN(id, "|", 3)[:3]
|
|
|
|
}
|
|
|
|
|
|
|
|
func joinID(ids ...interface{}) string {
|
|
|
|
idsStr := make([]string, 0, len(ids))
|
|
|
|
for _, id := range ids {
|
|
|
|
idsStr = append(idsStr, fmt.Sprint(id))
|
|
|
|
}
|
|
|
|
return strings.Join(idsStr, "|")
|
|
|
|
}
|
|
|
|
|
|
|
|
func IsAlbum(file *model.File) bool {
|
|
|
|
return file.Id != "" && file.IsDir()
|
|
|
|
}
|
|
|
|
|
|
|
|
func IsAlbumFile(file *model.File) bool {
|
|
|
|
return file.Id != "" && !file.IsDir()
|
|
|
|
}
|
|
|
|
|
|
|
|
func IsRoot(file *model.File) bool {
|
|
|
|
return file.Id == "" && file.IsDir()
|
|
|
|
}
|
|
|
|
|
|
|
|
func MustString(str string, err error) string {
|
|
|
|
return str
|
|
|
|
}
|