mirror of
https://github.com/simon-ding/polaris.git
synced 2026-06-10 03:57:39 +08:00
feat: reduce time consuming
This commit is contained in:
@@ -56,11 +56,16 @@ func (c *Client) GetAll() ([]pkg.Torrent, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
|
func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
|
||||||
hash, err := utils.MagnetHash(link)
|
magnet, err := utils.Link2Magnet(link)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Errorf("converting link to magnet error, link: %v, error: %v", link, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
hash, err := utils.MagnetHash(magnet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "get hash")
|
return nil, errors.Wrap(err, "get hash")
|
||||||
}
|
}
|
||||||
err = c.c.DownloadLinks([]string{link}, qbt.DownloadOptions{Savepath: &dir})
|
err = c.c.DownloadLinks([]string{magnet}, qbt.DownloadOptions{Savepath: &dir})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "qbt download")
|
return nil, errors.Wrap(err, "qbt download")
|
||||||
}
|
}
|
||||||
@@ -69,11 +74,16 @@ func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func NewTorrent(info Info, magnet string) (*Torrent, error) {
|
func NewTorrent(info Info, link string) (*Torrent, error) {
|
||||||
c, err := NewClient(info.URL, info.User, info.Password)
|
c, err := NewClient(info.URL, info.User, info.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
magnet, err := utils.Link2Magnet(link)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Errorf("converting link to magnet error, link: %v, error: %v", link, err)
|
||||||
|
}
|
||||||
|
|
||||||
hash, err := utils.MagnetHash(magnet)
|
hash, err := utils.MagnetHash(magnet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"polaris/db"
|
"polaris/db"
|
||||||
"polaris/log"
|
"polaris/log"
|
||||||
"polaris/pkg/utils"
|
|
||||||
"slices"
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
@@ -81,14 +80,14 @@ func (r *Response) ToResults(indexer *db.TorznabInfo) []Result {
|
|||||||
if slices.Contains(item.Category, "3000") { //exclude audio files
|
if slices.Contains(item.Category, "3000") { //exclude audio files
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
link, err := utils.Link2Magnet(item.Link) //TODO time consuming operation
|
// link, err := utils.Link2Magnet(item.Link) //TODO time consuming operation
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
log.Warnf("converting link to magnet error, error: %v, link: %v", err, item.Link)
|
// log.Warnf("converting link to magnet error, error: %v, link: %v", err, item.Link)
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
r := Result{
|
r := Result{
|
||||||
Name: item.Title,
|
Name: item.Title,
|
||||||
Link: link,
|
Link: item.Link,
|
||||||
Size: mustAtoI(item.Size),
|
Size: mustAtoI(item.Size),
|
||||||
Seeders: mustAtoI(item.GetAttr("seeders")),
|
Seeders: mustAtoI(item.GetAttr("seeders")),
|
||||||
Peers: mustAtoI(item.GetAttr("peers")),
|
Peers: mustAtoI(item.GetAttr("peers")),
|
||||||
|
|||||||
@@ -61,13 +61,18 @@ func (c *Client) GetAll() ([]pkg.Torrent, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
|
func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
|
||||||
hash, err := utils.MagnetHash(link)
|
magnet, err := utils.Link2Magnet(link)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Errorf("converting link to magnet error, link: %v, error: %v", link, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
hash, err := utils.MagnetHash(magnet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "get hash")
|
return nil, errors.Wrap(err, "get hash")
|
||||||
}
|
}
|
||||||
|
|
||||||
t, err := c.c.TorrentAdd(context.TODO(), transmissionrpc.TorrentAddPayload{
|
t, err := c.c.TorrentAdd(context.TODO(), transmissionrpc.TorrentAddPayload{
|
||||||
Filename: &link,
|
Filename: &magnet,
|
||||||
DownloadDir: &dir,
|
DownloadDir: &dir,
|
||||||
})
|
})
|
||||||
log.Debugf("get torrent info: %+v", t)
|
log.Debugf("get torrent info: %+v", t)
|
||||||
@@ -79,17 +84,23 @@ func (c *Client) Download(link, dir string) (pkg.Torrent, error) {
|
|||||||
}, err
|
}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTorrent(cfg Config, magnet string) (*Torrent, error) {
|
func NewTorrent(cfg Config, link string) (*Torrent, error) {
|
||||||
c, err := NewClient(cfg)
|
c, err := NewClient(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
magnet, err := utils.Link2Magnet(link)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Errorf("converting link to magnet error, link: %v, error: %v", link, err)
|
||||||
|
}
|
||||||
|
|
||||||
hash, err := utils.MagnetHash(magnet)
|
hash, err := utils.MagnetHash(magnet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
t := &Torrent{
|
t := &Torrent{
|
||||||
c: c.c,
|
c: c.c,
|
||||||
hash: hash,
|
hash: hash,
|
||||||
//cfg: cfg,
|
//cfg: cfg,
|
||||||
@@ -103,7 +114,7 @@ func NewTorrent(cfg Config, magnet string) (*Torrent, error) {
|
|||||||
type Torrent struct {
|
type Torrent struct {
|
||||||
//t *transmissionrpc.Torrent
|
//t *transmissionrpc.Torrent
|
||||||
c *transmissionrpc.Client
|
c *transmissionrpc.Client
|
||||||
hash string `json:"hash"`
|
hash string
|
||||||
//cfg Config
|
//cfg Config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,12 @@ func (c *Client) DownloadEpisodeTorrent(r1 torznab.Result, seriesId, seasonNum,
|
|||||||
} else { //season package download
|
} else { //season package download
|
||||||
ep = &ent.Episode{}
|
ep = &ent.Episode{}
|
||||||
}
|
}
|
||||||
torrent, err := trc.Download(r1.Link, downloadDir)
|
magnet, err := utils.Link2Magnet(r1.Link)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Errorf("converting link to magnet error, link: %v, error: %v", r1.Link, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
torrent, err := trc.Download(magnet, downloadDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "downloading")
|
return nil, errors.Wrap(err, "downloading")
|
||||||
}
|
}
|
||||||
@@ -60,7 +65,7 @@ func (c *Client) DownloadEpisodeTorrent(r1 torznab.Result, seriesId, seasonNum,
|
|||||||
Status: history.StatusRunning,
|
Status: history.StatusRunning,
|
||||||
Size: r1.Size,
|
Size: r1.Size,
|
||||||
//Saved: torrent.Save(),
|
//Saved: torrent.Save(),
|
||||||
Link: r1.Link,
|
Link: magnet,
|
||||||
DownloadClientID: dlc.ID,
|
DownloadClientID: dlc.ID,
|
||||||
IndexerID: r1.IndexerId,
|
IndexerID: r1.IndexerId,
|
||||||
})
|
})
|
||||||
@@ -107,8 +112,12 @@ func (c *Client) DownloadMovie(m *ent.Media, link, name string, size int, indexe
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "connect transmission")
|
return nil, errors.Wrap(err, "connect transmission")
|
||||||
}
|
}
|
||||||
|
magnet, err := utils.Link2Magnet(link)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Errorf("converting link to magnet error, link: %v, error: %v", link, err)
|
||||||
|
}
|
||||||
|
|
||||||
torrent, err := trc.Download(link, c.db.GetDownloadDir())
|
torrent, err := trc.Download(magnet, c.db.GetDownloadDir())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "downloading")
|
return nil, errors.Wrap(err, "downloading")
|
||||||
}
|
}
|
||||||
@@ -127,7 +136,7 @@ func (c *Client) DownloadMovie(m *ent.Media, link, name string, size int, indexe
|
|||||||
Status: history.StatusRunning,
|
Status: history.StatusRunning,
|
||||||
Size: size,
|
Size: size,
|
||||||
//Saved: torrent.Save(),
|
//Saved: torrent.Save(),
|
||||||
Link: link,
|
Link: magnet,
|
||||||
DownloadClientID: dlc.ID,
|
DownloadClientID: dlc.ID,
|
||||||
IndexerID: indexerID,
|
IndexerID: indexerID,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -363,7 +363,13 @@ func (c *Client) downloadMovieSingleEpisode(ep *ent.Episode, targetDir string) (
|
|||||||
}
|
}
|
||||||
r1 := res[0]
|
r1 := res[0]
|
||||||
log.Infof("begin download torrent resource: %v", r1.Name)
|
log.Infof("begin download torrent resource: %v", r1.Name)
|
||||||
torrent, err := trc.Download(r1.Link, c.db.GetDownloadDir())
|
|
||||||
|
magnet, err := utils.Link2Magnet(r1.Link)
|
||||||
|
if err != nil {
|
||||||
|
return "", errors.Errorf("converting link to magnet error, link: %v, error: %v", r1.Link, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
torrent, err := trc.Download(magnet, c.db.GetDownloadDir())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", errors.Wrap(err, "downloading")
|
return "", errors.Wrap(err, "downloading")
|
||||||
}
|
}
|
||||||
@@ -377,7 +383,7 @@ func (c *Client) downloadMovieSingleEpisode(ep *ent.Episode, targetDir string) (
|
|||||||
Status: history.StatusRunning,
|
Status: history.StatusRunning,
|
||||||
Size: r1.Size,
|
Size: r1.Size,
|
||||||
//Saved: torrent.Save(),
|
//Saved: torrent.Save(),
|
||||||
Link: r1.Link,
|
Link: magnet,
|
||||||
DownloadClientID: dlc.ID,
|
DownloadClientID: dlc.ID,
|
||||||
IndexerID: r1.IndexerId,
|
IndexerID: r1.IndexerId,
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user