This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
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 8 }
|
||||
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 8 }
|
||||
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 6 }
|
||||
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 result.ThumbnailURL == "" {
|
||||
result.ThumbnailURL = deriveThumbnail(result.Link)
|
||||
}
|
||||
result.Source = strings.TrimSpace(result.Source)
|
||||
if result.Source == "" {
|
||||
result.Source = "Google Video"
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user