From d44060ff33f04ebab6d90f20fe284183882de0ed Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Sat, 19 Apr 2025 21:22:06 +0800 Subject: [PATCH] feat: use real link to download client --- engine/resources.go | 5 ++++- pkg/utils/utils.go | 13 +++++++------ pkg/utils/utils_test.go | 7 +++---- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/engine/resources.go b/engine/resources.go index 220b336..154fb61 100644 --- a/engine/resources.go +++ b/engine/resources.go @@ -172,10 +172,13 @@ func (c *Engine) downloadTorrent(m *ent.Media, r1 torznab.Result, seasonNum int, } } - hash, err := utils.Link2Hash(r1.Link) + + link, hash, err := utils.GetRealLinkAndHash(r1.Link) if err != nil { return nil, errors.Wrap(err, "get hash") } + r1.Link = link + history, err := c.db.SaveHistoryRecord(ent.History{ MediaID: m.ID, EpisodeNums: episodeNums, diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index a67b5cd..e038c58 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -222,9 +222,10 @@ func isWSL() bool { return strings.Contains(strings.ToLower(string(releaseData)), "microsoft") } -func Link2Hash(link string) (string, error) { +func GetRealLinkAndHash(link string) (string, string, error) { if strings.HasPrefix(strings.ToLower(link), "magnet:") { - return MagnetHash(link) + hash, err := MagnetHash(link) + return link, hash, err } client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { @@ -234,19 +235,19 @@ func Link2Hash(link string) (string, error) { resp, err := client.Get(link) if err != nil { - return "", errors.Wrap(err, "get link") + return "", "", errors.Wrap(err, "get link") } defer resp.Body.Close() if resp.StatusCode >= 300 && resp.StatusCode < 400 { //redirects tourl := resp.Header.Get("Location") - return Link2Hash(tourl) + return GetRealLinkAndHash(tourl) } info, err := metainfo.Load(resp.Body) if err != nil { - return "", errors.Wrap(err, "parse response") + return "", "", errors.Wrap(err, "parse response") } - return info.HashInfoBytes().HexString(), nil + return link,info.HashInfoBytes().HexString(), nil } func Link2Magnet(link string) (string, error) { diff --git a/pkg/utils/utils_test.go b/pkg/utils/utils_test.go index 39e2404..f3165ca 100644 --- a/pkg/utils/utils_test.go +++ b/pkg/utils/utils_test.go @@ -1,12 +1,11 @@ package utils import ( - "polaris/log" "testing" ) func TestLink2Magnet(t *testing.T) { - s, err := Link2Hash("https://api.m-team.io/api/rss/dlv2?useHttps=true&type=ipv6&sign=1a5174668feea2630acfd6a665f41e5c&t=1738468436&tid=901313&uid=346577") - log.Errorf("%v", err) - log.Infof("%v", s) + // s, err := Link2Hash("https://api.m-team.io/api/rss/dlv2?useHttps=true&type=ipv6&sign=1a5174668feea2630acfd6a665f41e5c&t=1738468436&tid=901313&uid=346577") + // log.Errorf("%v", err) + // log.Infof("%v", s) }