82 lines
1.4 KiB
Go
82 lines
1.4 KiB
Go
package animetosho
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/gocolly/colly"
|
|
"strings"
|
|
)
|
|
|
|
func TorrentFile(viewURL string) (string, error) {
|
|
var torrentLink string
|
|
|
|
c := colly.NewCollector()
|
|
|
|
c.OnHTML("a[href]", func(e *colly.HTMLElement) {
|
|
if strings.HasSuffix(e.Attr("href"), ".torrent") {
|
|
torrentLink = e.Attr("href")
|
|
}
|
|
})
|
|
|
|
var e error
|
|
c.OnError(func(r *colly.Response, err error) {
|
|
e = err
|
|
})
|
|
if e != nil {
|
|
return "", e
|
|
}
|
|
|
|
c.Visit(viewURL)
|
|
|
|
if torrentLink == "" {
|
|
return "", errors.New("download link not found")
|
|
}
|
|
|
|
return torrentLink, nil
|
|
}
|
|
|
|
func TorrentMagnet(viewURL string) (string, error) {
|
|
var magnetLink string
|
|
|
|
c := colly.NewCollector()
|
|
|
|
c.OnHTML("a[href]", func(e *colly.HTMLElement) {
|
|
if strings.HasPrefix(e.Attr("href"), "magnet:?xt=") {
|
|
magnetLink = e.Attr("href")
|
|
}
|
|
})
|
|
|
|
var e error
|
|
c.OnError(func(r *colly.Response, err error) {
|
|
e = err
|
|
})
|
|
if e != nil {
|
|
return "", e
|
|
}
|
|
|
|
c.Visit(viewURL)
|
|
|
|
if magnetLink == "" {
|
|
return "", errors.New("magnet link not found")
|
|
}
|
|
|
|
return magnetLink, nil
|
|
}
|
|
|
|
func TorrentHash(viewURL string) (string, error) {
|
|
|
|
file, err := TorrentFile(viewURL)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
file = strings.Replace(file, "https://", "", 1)
|
|
//template := "%s/storage/torrent/%s/%s"
|
|
parts := strings.Split(file, "/")
|
|
|
|
if len(parts) < 4 {
|
|
return "", errors.New("hash not found")
|
|
}
|
|
|
|
return parts[3], nil
|
|
}
|