improve(search): progress & retries
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
69
search/downloaders.go
Normal file
69
search/downloaders.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package search
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
)
|
||||
|
||||
func getLibGenDownloadURL(md5 string, _ Source) ([]string, error) {
|
||||
// Get Page
|
||||
body, err := getPage("http://libgen.li/ads.php?md5=" + md5)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer body.Close()
|
||||
|
||||
// Parse
|
||||
doc, err := goquery.NewDocumentFromReader(body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Return Download URL
|
||||
downloadPath, exists := doc.Find("body > table > tbody > tr > td > a").Attr("href")
|
||||
if !exists {
|
||||
return nil, fmt.Errorf("Download URL not found")
|
||||
}
|
||||
|
||||
// Possible Funky URL
|
||||
downloadPath = strings.ReplaceAll(downloadPath, "\\", "/")
|
||||
return []string{fmt.Sprintf("http://libgen.li/%s", downloadPath)}, nil
|
||||
}
|
||||
|
||||
func getLibraryDownloadURL(md5 string, source Source) ([]string, error) {
|
||||
// Derive Info URL
|
||||
var infoURL string
|
||||
switch source {
|
||||
case SOURCE_LIBGEN_FICTION, SOURCE_ANNAS_ARCHIVE:
|
||||
infoURL = "http://library.lol/fiction/" + md5
|
||||
case SOURCE_LIBGEN_NON_FICTION:
|
||||
infoURL = "http://library.lol/main/" + md5
|
||||
default:
|
||||
return nil, errors.New("invalid source")
|
||||
}
|
||||
|
||||
// Get Page
|
||||
body, err := getPage(infoURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer body.Close()
|
||||
|
||||
// Parse
|
||||
doc, err := goquery.NewDocumentFromReader(body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Return Download URL
|
||||
// downloadURL, _ := doc.Find("#download [href*=cloudflare]").Attr("href")
|
||||
downloadURL, exists := doc.Find("#download h2 a").Attr("href")
|
||||
if !exists {
|
||||
return nil, errors.New("Download URL not found")
|
||||
}
|
||||
|
||||
return []string{downloadURL}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user