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

33
text.go
View file

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