This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package search
|
package search
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/url"
|
"net/url"
|
||||||
@@ -9,14 +10,34 @@ import (
|
|||||||
"github.com/PuerkitoBio/goquery"
|
"github.com/PuerkitoBio/goquery"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const ANNAS_ARCHIVE_SEARCH_URL = "https://%s/search?index=&q=%s&ext=epub&sort=&lang=en"
|
||||||
|
|
||||||
|
var annasArchiveDomains []string = []string{
|
||||||
|
"annas-archive.gl",
|
||||||
|
"annas-archive.pk",
|
||||||
|
"annas-archive.gd",
|
||||||
|
}
|
||||||
|
|
||||||
func searchAnnasArchive(query string) ([]SearchItem, error) {
|
func searchAnnasArchive(query string) ([]SearchItem, error) {
|
||||||
searchURL := "https://annas-archive.li/search?index=&q=%s&ext=epub&sort=&lang=en"
|
var allErrors []error
|
||||||
url := fmt.Sprintf(searchURL, url.QueryEscape(query))
|
|
||||||
body, err := getPage(url)
|
for _, domain := range annasArchiveDomains {
|
||||||
if err != nil {
|
url := fmt.Sprintf(ANNAS_ARCHIVE_SEARCH_URL, domain, url.QueryEscape(query))
|
||||||
return nil, err
|
body, err := getPage(url)
|
||||||
|
if err != nil {
|
||||||
|
allErrors = append(allErrors, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
parsedItem, err := parseAnnasArchive(body)
|
||||||
|
if err != nil {
|
||||||
|
allErrors = append(allErrors, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return parsedItem, nil
|
||||||
}
|
}
|
||||||
return parseAnnasArchive(body)
|
|
||||||
|
return nil, fmt.Errorf("could not query annas-archive: %w", errors.Join(allErrors...))
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseAnnasArchive(body io.ReadCloser) ([]SearchItem, error) {
|
func parseAnnasArchive(body io.ReadCloser) ([]SearchItem, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user