This commit is contained in:
+16
-1
@@ -78,6 +78,7 @@ func (s *SearchService) SearchMedia(queries []string) ([]SearchResult, error) {
|
||||
|
||||
seen := map[string]bool{}
|
||||
results := make([]SearchResult, 0, 60)
|
||||
var lastErr error
|
||||
for _, query := range queries {
|
||||
query = strings.TrimSpace(query)
|
||||
if query == "" {
|
||||
@@ -91,6 +92,17 @@ func (s *SearchService) SearchMedia(queries []string) ([]SearchResult, error) {
|
||||
|
||||
items, err := s.search(searchQuery, source.categories, source.engine, source.name)
|
||||
if err != nil {
|
||||
lastErr = err
|
||||
items, err = s.search(searchQuery, source.categories, "", source.name)
|
||||
}
|
||||
if err != nil {
|
||||
lastErr = err
|
||||
if source.categories != "general" {
|
||||
items, err = s.search(searchQuery, "general", "", source.name)
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
lastErr = err
|
||||
continue
|
||||
}
|
||||
for _, item := range items {
|
||||
@@ -109,6 +121,9 @@ func (s *SearchService) SearchMedia(queries []string) ([]SearchResult, error) {
|
||||
sort.SliceStable(results, func(i, j int) bool {
|
||||
return sourceWeight(results[i].Source) > sourceWeight(results[j].Source)
|
||||
})
|
||||
if len(results) == 0 && lastErr != nil {
|
||||
return nil, lastErr
|
||||
}
|
||||
return results, nil
|
||||
}
|
||||
|
||||
@@ -133,7 +148,7 @@ func (s *SearchService) search(query, categories, engine, source string) ([]Sear
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode >= 300 {
|
||||
return nil, fmt.Errorf("searxng returned status %d", resp.StatusCode)
|
||||
return nil, fmt.Errorf("searxng returned status %d for query %q", resp.StatusCode, query)
|
||||
}
|
||||
|
||||
var payload struct {
|
||||
|
||||
Reference in New Issue
Block a user