fix: do not convert torrent to magnet link

This commit is contained in:
Simon Ding
2025-01-31 16:34:43 +08:00
parent a8b6661ec9
commit 1386626712
4 changed files with 39 additions and 22 deletions

View File

@@ -60,6 +60,10 @@ func (c *Client) GetAll() ([]pkg.Torrent, error) {
}
func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
err := c.c.DownloadLinks([]string{link}, qbt.DownloadOptions{Savepath: &dir, Category: &c.category})
if err != nil {
return nil, errors.Wrap(err, "qbt download")
}
magnet, err := utils.Link2Magnet(link)
if err != nil {
return nil, errors.Errorf("converting link to magnet error, link: %v, error: %v", link, err)
@@ -69,10 +73,7 @@ func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
if err != nil {
return nil, errors.Wrap(err, "get hash")
}
err = c.c.DownloadLinks([]string{magnet}, qbt.DownloadOptions{Savepath: &dir, Category: &c.category})
if err != nil {
return nil, errors.Wrap(err, "qbt download")
}
return &Torrent{hash: hash, c: c.c}, nil
}

View File

@@ -61,6 +61,16 @@ func (c *Client) GetAll() ([]pkg.Torrent, error) {
}
func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
t, err := c.c.TorrentAdd(context.TODO(), transmissionrpc.TorrentAddPayload{
Filename: &link,
DownloadDir: &dir,
})
if err != nil {
return nil, err
}
log.Debugf("get torrent info: %+v", t)
magnet, err := utils.Link2Magnet(link)
if err != nil {
return nil, errors.Errorf("converting link to magnet error, link: %v, error: %v", link, err)
@@ -71,12 +81,6 @@ func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
return nil, errors.Wrap(err, "get hash")
}
t, err := c.c.TorrentAdd(context.TODO(), transmissionrpc.TorrentAddPayload{
Filename: &magnet,
DownloadDir: &dir,
})
log.Debugf("get torrent info: %+v", t)
return &Torrent{
hash: hash,
c: c.c,

12
pkg/utils/utils_test.go Normal file
View File

@@ -0,0 +1,12 @@
package utils
import (
"polaris/log"
"testing"
)
func TestLink2Magnet(t *testing.T) {
s, err := Link2Magnet("https://api.m-team.cc/api/rss/dlv2?useHttps=true&type=ipv6&sign=2ecfdb9d1317fce1edc123d024be1d65&t=1738309528&tid=900434&uid=346577")
log.Errorf("%v", err)
log.Infof("%v", s)
}