add route for glance widget

This commit is contained in:
2026-02-18 22:45:33 +03:00
parent d231f9a79e
commit b5de8af9d1

66
main.go
View File

@@ -7,6 +7,7 @@ import (
"encoding/json" "encoding/json"
"flag" "flag"
"fmt" "fmt"
"html/template"
"io" "io"
"log" "log"
"net/http" "net/http"
@@ -176,6 +177,71 @@ func main() {
} }
}) })
mux.HandleFunc("GET /glance", func(w http.ResponseWriter, r *http.Request) {
type glanceTorrent struct {
Title string
}
type glanceItem struct {
Query string
Link string
Torrents []glanceTorrent
}
glanceItems := []glanceItem{}
items, err := m.GetItems()
if err != nil {
http.Error(w, err.Error(), 500)
return
}
baseUrl := r.URL.Query().Get("base_url")
for _, item := range items {
gItem := glanceItem{
Query: item.Query,
Link: fmt.Sprintf("%s?item=%d", baseUrl, item.ID),
Torrents: []glanceTorrent{},
}
torrents, err := m.GetItemTorrents(item.ID)
if err != nil {
continue
}
for _, torrent := range torrents {
gItem.Torrents = append(gItem.Torrents, glanceTorrent{
Title: torrent.Title,
})
}
glanceItems = append(glanceItems, gItem)
}
tmpl := `
<ul class="list list-gap-2">
{{range .Items}}
<li class="size-h5">[{{len .Torrents}}] <a href="{{.Link}}" target="_blank">{{.Query}}</a></li>
{{end}}
</ul>
`
t, err := template.New("glance").Parse(tmpl)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
w.Header().Set("Widget-Title", "tvqueue")
w.Header().Set("Widget-Content-Type", "html")
t.ExecuteTemplate(w, "glance", struct {
Items []glanceItem
}{
Items: glanceItems,
})
})
mux.HandleFunc("POST /api/items", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("POST /api/items", func(w http.ResponseWriter, r *http.Request) {
var body struct { var body struct {
Query string Query string