From 061c462f0b231fcbced3b734fd3565dd3c43e803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E7=A7=8B=E6=9E=AB=E5=BD=B1?= Date: Thu, 27 Oct 2022 15:26:08 +0800 Subject: [PATCH] feat(mediatrack): get real url (#2132) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat:get real url for mediatrack redirect token 一次有效,点击第二次就抛出了`400`错误。本次提交直接获取302后的真实链接返回前端 * add cache cache 60 Second --- drivers/mediatrack/driver.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/mediatrack/driver.go b/drivers/mediatrack/driver.go index a34125e0..b1557d2d 100644 --- a/drivers/mediatrack/driver.go +++ b/drivers/mediatrack/driver.go @@ -10,6 +10,7 @@ import ( "os" "path" "strconv" + "time" "github.com/alist-org/alist/v3/drivers/base" "github.com/alist-org/alist/v3/internal/driver" @@ -91,7 +92,21 @@ func (d *MediaTrack) Link(ctx context.Context, file model.Obj, args model.LinkAr } token := utils.Json.Get(body, "data", "token").ToString() url = "https://kayn.api.mediatrack.cn/v1/download/redirect?token=" + token - return &model.Link{URL: url}, nil + res, err := base.NoRedirectClient.R().Get(url) + if err != nil { + return nil, err + } + log.Debug(res.String()) + link := model.Link{ + URL: url, + } + log.Debugln("res code: ", res.StatusCode()) + if res.StatusCode() == 302 { + link.URL = res.Header().Get("location") + expired := time.Duration(60) * time.Second + link.Expiration = &expired + } + return &link, nil } func (d *MediaTrack) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error {