work #2

Merged
partisan merged 3 commits from work into main 2024-06-12 13:00:43 +00:00
2 changed files with 45 additions and 17 deletions
Showing only changes of commit 1d17841048 - Show all commits

View file

@ -90,7 +90,9 @@ func getImageResultsFromCacheOrFetch(cacheKey CacheKey, query, safe, lang string
case results := <-cacheChan: case results := <-cacheChan:
if results == nil { if results == nil {
combinedResults = fetchImageResults(query, safe, lang, page) combinedResults = fetchImageResults(query, safe, lang, page)
if len(combinedResults) > 0 {
resultsCache.Set(cacheKey, convertToSearchResults(combinedResults)) resultsCache.Set(cacheKey, convertToSearchResults(combinedResults))
}
} else { } else {
_, _, imageResults := convertToSpecificResults(results) _, _, imageResults := convertToSpecificResults(results)
combinedResults = imageResults combinedResults = imageResults
@ -98,20 +100,31 @@ func getImageResultsFromCacheOrFetch(cacheKey CacheKey, query, safe, lang string
case <-time.After(2 * time.Second): case <-time.After(2 * time.Second):
log.Println("Cache check timeout") log.Println("Cache check timeout")
combinedResults = fetchImageResults(query, safe, lang, page) combinedResults = fetchImageResults(query, safe, lang, page)
if len(combinedResults) > 0 {
resultsCache.Set(cacheKey, convertToSearchResults(combinedResults)) resultsCache.Set(cacheKey, convertToSearchResults(combinedResults))
} }
}
return combinedResults return combinedResults
} }
func fetchImageResults(query, safe, lang string, page int) []ImageSearchResult { func fetchImageResults(query, safe, lang string, page int) []ImageSearchResult {
var results []ImageSearchResult
var err error
for attempts := 0; attempts < len(imageEngines); attempts++ {
engine := selectImageEngine() engine := selectImageEngine()
log.Printf("Using image search engine: %s", engine.Name) log.Printf("Using image search engine: %s", engine.Name)
results, err := engine.Func(query, safe, lang, page) results, err = engine.Func(query, safe, lang, page)
if err != nil { if err != nil {
log.Printf("Error performing image search with %s: %v", engine.Name, err) log.Printf("Error performing image search with %s: %v", engine.Name, err)
return nil continue
}
if len(results) > 0 {
break
}
} }
return results return results

19
text.go
View file

@ -69,7 +69,9 @@ func getTextResultsFromCacheOrFetch(cacheKey CacheKey, query, safe, lang string,
case results := <-cacheChan: case results := <-cacheChan:
if results == nil { if results == nil {
combinedResults = fetchTextResults(query, safe, lang, page) combinedResults = fetchTextResults(query, safe, lang, page)
if len(combinedResults) > 0 {
resultsCache.Set(cacheKey, convertToSearchResults(combinedResults)) resultsCache.Set(cacheKey, convertToSearchResults(combinedResults))
}
} else { } else {
textResults, _, _ := convertToSpecificResults(results) textResults, _, _ := convertToSpecificResults(results)
combinedResults = textResults combinedResults = textResults
@ -77,8 +79,10 @@ func getTextResultsFromCacheOrFetch(cacheKey CacheKey, query, safe, lang string,
case <-time.After(2 * time.Second): case <-time.After(2 * time.Second):
log.Println("Cache check timeout") log.Println("Cache check timeout")
combinedResults = fetchTextResults(query, safe, lang, page) combinedResults = fetchTextResults(query, safe, lang, page)
if len(combinedResults) > 0 {
resultsCache.Set(cacheKey, convertToSearchResults(combinedResults)) resultsCache.Set(cacheKey, convertToSearchResults(combinedResults))
} }
}
return combinedResults return combinedResults
} }
@ -88,20 +92,31 @@ func prefetchPage(query, safe, lang string, page int) {
if _, exists := resultsCache.Get(cacheKey); !exists { if _, exists := resultsCache.Get(cacheKey); !exists {
log.Printf("Page %d not cached, caching now...", page) log.Printf("Page %d not cached, caching now...", page)
pageResults := fetchTextResults(query, safe, lang, page) pageResults := fetchTextResults(query, safe, lang, page)
if len(pageResults) > 0 {
resultsCache.Set(cacheKey, convertToSearchResults(pageResults)) resultsCache.Set(cacheKey, convertToSearchResults(pageResults))
}
} else { } else {
log.Printf("Page %d already cached", page) log.Printf("Page %d already cached", page)
} }
} }
func fetchTextResults(query, safe, lang string, page int) []TextSearchResult { func fetchTextResults(query, safe, lang string, page int) []TextSearchResult {
var results []TextSearchResult
var err error
for attempts := 0; attempts < len(searchEngines); attempts++ {
engine := selectSearchEngine() engine := selectSearchEngine()
log.Printf("Using search engine: %s", engine.Name) log.Printf("Using search engine: %s", engine.Name)
results, err := engine.Func(query, safe, lang, page) results, err = engine.Func(query, safe, lang, page)
if err != nil { if err != nil {
log.Printf("Error performing search with %s: %v", engine.Name, err) log.Printf("Error performing search with %s: %v", engine.Name, err)
return nil continue
}
if len(results) > 0 {
break
}
} }
return results return results