Files
GHStaK d3fb5e15e9
build-push / docker (push) Successful in 4m22s
Reduce search timeout pressure on reverted baseline
2026-03-18 14:01:39 +09:00

71 lines
2.9 KiB
Go

package services
import "strings"
type searchCollector interface {
Name() string
MaxResults() int
Enabled(enabledPlatforms map[string]bool) bool
BuildQueries(base string) []string
Collect(searcher *SearchService, query string) ([]SearchResult, error)
Accept(result SearchResult) bool
Enrich(searcher *SearchService, result SearchResult) SearchResult
}
type envatoCollector struct{}
func (envatoCollector) Name() string { return "Envato" }
func (envatoCollector) MaxResults() int { return 12 }
func (envatoCollector) Enabled(enabledPlatforms map[string]bool) bool {
return len(enabledPlatforms) == 0 || enabledPlatforms["envato"]
}
func (envatoCollector) BuildQueries(base string) []string { return buildEnvatoQueries(base) }
func (envatoCollector) Collect(searcher *SearchService, query string) ([]SearchResult, error) {
return searcher.searchWithFallback(query, "general", searcher.WebEngine, "Envato")
}
func (envatoCollector) Accept(result SearchResult) bool { return isRenderableEnvatoResult(result) }
func (envatoCollector) Enrich(searcher *SearchService, result SearchResult) SearchResult {
return searcher.enrichEnvato(result)
}
type artgridCollector struct{}
func (artgridCollector) Name() string { return "Artgrid" }
func (artgridCollector) MaxResults() int { return 12 }
func (artgridCollector) Enabled(enabledPlatforms map[string]bool) bool {
return len(enabledPlatforms) == 0 || enabledPlatforms["artgrid"]
}
func (artgridCollector) BuildQueries(base string) []string { return buildArtgridQueries(base) }
func (artgridCollector) Collect(searcher *SearchService, query string) ([]SearchResult, error) {
return searcher.searchWithFallback(query, "general", searcher.WebEngine, "Artgrid")
}
func (artgridCollector) Accept(result SearchResult) bool { return isRenderableArtgridResult(result) }
func (artgridCollector) Enrich(searcher *SearchService, result SearchResult) SearchResult {
return searcher.enrichArtgrid(result)
}
type googleVideoCollector struct{}
func (googleVideoCollector) Name() string { return "Google Video" }
func (googleVideoCollector) MaxResults() int { return 12 }
func (googleVideoCollector) Enabled(enabledPlatforms map[string]bool) bool {
return len(enabledPlatforms) == 0 || enabledPlatforms["google video"]
}
func (googleVideoCollector) BuildQueries(base string) []string { return buildGoogleVideoQueries(base) }
func (googleVideoCollector) Collect(searcher *SearchService, query string) ([]SearchResult, error) {
return searcher.searchWithFallback(query, "videos", searcher.GoogleVideoEngine, "Google Video")
}
func (googleVideoCollector) Accept(result SearchResult) bool {
return isUsefulGoogleVideoResult(result)
}
func (googleVideoCollector) Enrich(searcher *SearchService, result SearchResult) SearchResult {
if derived := deriveThumbnail(result.Link); derived != "" {
result.ThumbnailURL = derived
}
result.Source = strings.TrimSpace(result.Source)
if result.Source == "" {
result.Source = "Google Video"
}
return result
}