Fix SearXNG fallback and crop sliders
build-push / docker (push) Successful in 4m12s

This commit is contained in:
AI Assistant
2026-03-13 10:28:04 +09:00
parent 8fb2b68b48
commit 189802b2f0
2 changed files with 25 additions and 4 deletions
+16 -1
View File
@@ -78,6 +78,7 @@ func (s *SearchService) SearchMedia(queries []string) ([]SearchResult, error) {
seen := map[string]bool{} seen := map[string]bool{}
results := make([]SearchResult, 0, 60) results := make([]SearchResult, 0, 60)
var lastErr error
for _, query := range queries { for _, query := range queries {
query = strings.TrimSpace(query) query = strings.TrimSpace(query)
if 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) items, err := s.search(searchQuery, source.categories, source.engine, source.name)
if err != nil { 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 continue
} }
for _, item := range items { for _, item := range items {
@@ -109,6 +121,9 @@ func (s *SearchService) SearchMedia(queries []string) ([]SearchResult, error) {
sort.SliceStable(results, func(i, j int) bool { sort.SliceStable(results, func(i, j int) bool {
return sourceWeight(results[i].Source) > sourceWeight(results[j].Source) return sourceWeight(results[i].Source) > sourceWeight(results[j].Source)
}) })
if len(results) == 0 && lastErr != nil {
return nil, lastErr
}
return results, nil return results, nil
} }
@@ -133,7 +148,7 @@ func (s *SearchService) search(query, categories, engine, source string) ([]Sear
defer resp.Body.Close() defer resp.Body.Close()
if resp.StatusCode >= 300 { 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 { var payload struct {
+9 -3
View File
@@ -95,9 +95,15 @@
<span>Crop Range</span> <span>Crop Range</span>
<span id="rangeSummary">00:00:00 - 00:00:00</span> <span id="rangeSummary">00:00:00 - 00:00:00</span>
</div> </div>
<div class="relative h-8"> <div class="space-y-3">
<input id="startRange" type="range" min="0" max="0" value="0" step="1" class="slider-thumb absolute inset-0 w-full appearance-none bg-transparent" /> <label class="block space-y-2">
<input id="endRange" type="range" min="0" max="0" value="0" step="1" class="slider-thumb absolute inset-0 w-full appearance-none bg-transparent" /> <span class="text-xs uppercase tracking-[0.2em] text-zinc-500">Start</span>
<input id="startRange" type="range" min="0" max="0" value="0" step="1" class="slider-thumb w-full appearance-none bg-transparent" />
</label>
<label class="block space-y-2">
<span class="text-xs uppercase tracking-[0.2em] text-zinc-500">End</span>
<input id="endRange" type="range" min="0" max="0" value="0" step="1" class="slider-thumb w-full appearance-none bg-transparent" />
</label>
</div> </div>
<div class="mt-3 flex gap-3"> <div class="mt-3 flex gap-3">
<button id="setStartFromPreview" type="button" class="flex-1 rounded-2xl border border-white/10 px-4 py-3 text-sm text-zinc-200 transition hover:border-white/30">Set Start</button> <button id="setStartFromPreview" type="button" class="flex-1 rounded-2xl border border-white/10 px-4 py-3 text-sm text-zinc-200 transition hover:border-white/30">Set Start</button>