You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
package PageHandlers
|
|
|
|
|
|
|
|
import (
|
|
|
|
_ "embed"
|
|
|
|
"fmt"
|
|
|
|
"log"
|
|
|
|
"net/http"
|
|
|
|
"strconv"
|
|
|
|
"strings"
|
|
|
|
"ytdlp-viewer/DirectoryIndexers"
|
|
|
|
)
|
|
|
|
|
|
|
|
type SearchPageData struct {
|
|
|
|
Results []DirectoryIndexers.VideoFile
|
|
|
|
ResultCount string
|
|
|
|
SearchTerm string
|
|
|
|
}
|
|
|
|
|
|
|
|
func SearchHandler(writer http.ResponseWriter, request *http.Request, FL *DirectoryIndexers.FileList) {
|
|
|
|
FL.RLock()
|
|
|
|
defer FL.RUnlock()
|
|
|
|
|
|
|
|
keys, ok := request.URL.Query()["term"]
|
|
|
|
if !ok || len(keys[0]) < 1 {
|
|
|
|
log.Println("Url Param 'term' is missing")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var results []DirectoryIndexers.VideoFile
|
|
|
|
|
|
|
|
for _, video := range FL.Files {
|
|
|
|
if video.Id == keys[0] {
|
|
|
|
results = append(results, video)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
if strings.Contains(strings.ToUpper(video.Title), strings.ToUpper(keys[0])) {
|
|
|
|
results = append(results, video)
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
data := SearchPageData{
|
|
|
|
Results: results,
|
|
|
|
ResultCount: strconv.Itoa(len(results)),
|
|
|
|
SearchTerm: keys[0],
|
|
|
|
}
|
|
|
|
|
|
|
|
err := tmpl["search.html"].ExecuteTemplate(writer, "base", data)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Println(err)
|
|
|
|
}
|
|
|
|
}
|