mirror of https://github.com/Xhofe/alist
				
				
				
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
| package mediatrack
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| 	"net/http"
 | |
| 	"strconv"
 | |
| 
 | |
| 	"github.com/alist-org/alist/v3/drivers/base"
 | |
| 	"github.com/alist-org/alist/v3/pkg/utils"
 | |
| 	"github.com/go-resty/resty/v2"
 | |
| 	log "github.com/sirupsen/logrus"
 | |
| )
 | |
| 
 | |
| // do others that not defined in Driver interface
 | |
| 
 | |
| func (d *MediaTrack) request(url string, method string, callback base.ReqCallback, resp interface{}) ([]byte, error) {
 | |
| 	req := base.RestyClient.R()
 | |
| 	req.SetHeader("Authorization", "Bearer "+d.AccessToken)
 | |
| 	if callback != nil {
 | |
| 		callback(req)
 | |
| 	}
 | |
| 	var e BaseResp
 | |
| 	req.SetResult(&e)
 | |
| 	res, err := req.Execute(method, url)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	log.Debugln(res.String())
 | |
| 	if e.Status != "SUCCESS" {
 | |
| 		return nil, errors.New(e.Message)
 | |
| 	}
 | |
| 	if resp != nil {
 | |
| 		err = utils.Json.Unmarshal(res.Body(), resp)
 | |
| 	}
 | |
| 	return res.Body(), err
 | |
| }
 | |
| 
 | |
| func (d *MediaTrack) getFiles(parentId string) ([]File, error) {
 | |
| 	files := make([]File, 0)
 | |
| 	url := fmt.Sprintf("https://jayce.api.mediatrack.cn/v4/assets/%s/children", parentId)
 | |
| 	sort := ""
 | |
| 	if d.OrderBy != "" {
 | |
| 		if d.OrderDesc {
 | |
| 			sort = "-"
 | |
| 		}
 | |
| 		sort += d.OrderBy
 | |
| 	}
 | |
| 	page := 1
 | |
| 	for {
 | |
| 		var resp ChildrenResp
 | |
| 		_, err := d.request(url, http.MethodGet, func(req *resty.Request) {
 | |
| 			req.SetQueryParams(map[string]string{
 | |
| 				"page": strconv.Itoa(page),
 | |
| 				"size": "50",
 | |
| 				"sort": sort,
 | |
| 			})
 | |
| 		}, &resp)
 | |
| 		if err != nil {
 | |
| 			return nil, err
 | |
| 		}
 | |
| 		if len(resp.Data.Assets) == 0 {
 | |
| 			break
 | |
| 		}
 | |
| 		page++
 | |
| 		files = append(files, resp.Data.Assets...)
 | |
| 	}
 | |
| 	return files, nil
 | |
| }
 |