diff options
| -rw-r--r-- | go.mod | 2 | ||||
| -rw-r--r-- | go.sum | 4 | ||||
| -rw-r--r-- | grimtube.go | 13 | ||||
| -rw-r--r-- | templates/search.html | 14 |
4 files changed, 28 insertions, 5 deletions
@@ -2,4 +2,4 @@ module grimtube go 1.15 -require git.sr.ht/~ark/ytparser v0.0.0-20201019100927-5f211df7cfbb +require git.sr.ht/~ark/ytparser v0.0.0-20210109223427-f650ebfaf23d @@ -1,2 +1,6 @@ git.sr.ht/~ark/ytparser v0.0.0-20201019100927-5f211df7cfbb h1:cl79Gq9gc7XrfYh42k7FHngRT0oh1u+GgH1DTot/cYQ= git.sr.ht/~ark/ytparser v0.0.0-20201019100927-5f211df7cfbb/go.mod h1:/LVNTXoOf1dnQ85TQK3Osw8KK7POmeeqBQUoXivfIPI= +git.sr.ht/~ark/ytparser v0.0.0-20201202094202-6118566d444e h1:qvd2vpytLzgL+htVvk6hOa9o0TesHH7UYBg9K1CZp1I= +git.sr.ht/~ark/ytparser v0.0.0-20201202094202-6118566d444e/go.mod h1:/LVNTXoOf1dnQ85TQK3Osw8KK7POmeeqBQUoXivfIPI= +git.sr.ht/~ark/ytparser v0.0.0-20210109223427-f650ebfaf23d h1:b4fisCeY0QXQcHec9NuPAzE7W8fhmi2TPtO4a3G92M0= +git.sr.ht/~ark/ytparser v0.0.0-20210109223427-f650ebfaf23d/go.mod h1:/LVNTXoOf1dnQ85TQK3Osw8KK7POmeeqBQUoXivfIPI= diff --git a/grimtube.go b/grimtube.go index 17de1b6..8c27490 100644 --- a/grimtube.go +++ b/grimtube.go @@ -17,6 +17,10 @@ func getLangs() []string { return []string{"en", "fr", "de", "ja", "ru"} } +func getOrders() []string { + return []string{"relevance", "date", "views", "rating"} +} + func serve(w http.ResponseWriter, templatePath string, data interface{}) { funcMap := template.FuncMap { "inc": func(i int) int { @@ -52,6 +56,7 @@ func search(w http.ResponseWriter, r *http.Request) { term := query.Get("term") sPage := query.Get("page") lang := query.Get("lang") + order := query.Get("order") var page int if sPage == "" { page = 0 @@ -63,8 +68,8 @@ func search(w http.ResponseWriter, r *http.Request) { page = p } } - log.Printf("searching: %s, page: %d, lang: %s\n", term, page, lang) - items, err := ytparser.Search(term, page, lang) + log.Printf("searching: %s, page: %d, lang: %s, order: %s\n", term, page, lang, order) + items, err := ytparser.Search(term, page, lang, order) if err != nil { log.Println(err) data := struct { @@ -80,12 +85,16 @@ func search(w http.ResponseWriter, r *http.Request) { Page int Lang string Langs []string + Order string + Orders []string }{ items, term, page, lang, getLangs(), + order, + getOrders(), } serve(w, "templates/search.html", data) } diff --git a/templates/search.html b/templates/search.html index c0cdb76..dc9318a 100644 --- a/templates/search.html +++ b/templates/search.html @@ -1,7 +1,7 @@ {{define "title"}}Search{{end}} {{define "content"}} <form action="/search" method="get"> - <input id="term" name="term" type="text" placeholder="search" required> + <input id="term" name="term" type="search" placeholder="search" value="{{.Term}}" autocomplete="on" required> <select id="lang" name="lang"> {{range .Langs}} {{if eq . $.Lang}} @@ -11,6 +11,15 @@ {{end}} {{end}} </select> + <select id="order" name="order"> + {{range .Orders}} + {{if eq . $.Order}} + <option selected>{{.}}</option> + {{else}} + <option>{{.}}</option> + {{end}} + {{end}} + </select> </form> <table> {{range .Items}} @@ -21,10 +30,11 @@ <td> <p><a href="/embed?id={{.Id}}">{{.Title}}</a></p> <p class="comments"><a href="{{.Url}}">Comments</a></p> + <p class="length">{{.LengthText}}</p> <p class="published">{{.Published}}</p> </td> <td> - <a href="{{.ChannelUrl}}"><span>{{.ChannelTitle}}</span></a> + <p><a href="{{.ChannelUrl}}"><span>{{.ChannelTitle}}</span></a></p> </td> </tr> {{end}} |
