add search db feature

This commit is contained in:
XenGi 2024-04-29 00:14:39 +02:00
parent cdf12411a2
commit 62598c805e
Signed by: xengi
SSH key fingerprint: SHA256:FGp51kRvGOcWnTHiOI39ImwVO4A3fpvR30nPX3LpV7g
6 changed files with 94 additions and 31 deletions

45
mpd.go
View file

@ -371,7 +371,7 @@ func deletePlaylist(c echo.Context) error {
return c.String(http.StatusBadRequest, err.Error())
}
return c.JSON(http.StatusNoContent, "")
return c.String(http.StatusNoContent, "")
}
func savePlaylist(c echo.Context) error {
@ -390,5 +390,46 @@ func savePlaylist(c echo.Context) error {
return c.String(http.StatusBadRequest, err.Error())
}
return c.JSON(http.StatusCreated, "")
return c.String(http.StatusCreated, "")
}
func searchDatabase(c echo.Context) error {
// Connect to MPD server
conn, err := mpd.Dial("tcp", "localhost:6600")
if err != nil {
c.Logger().Error(err)
}
defer conn.Close()
pattern := c.Param("pattern")
artistResult, err := conn.Search("artist", pattern)
if err != nil {
c.Logger().Error(err)
return c.String(http.StatusBadRequest, err.Error())
}
albumResult, err := conn.Search("album", pattern)
if err != nil {
c.Logger().Error(err)
return c.String(http.StatusBadRequest, err.Error())
}
titleResult, err := conn.Search("title", pattern)
if err != nil {
c.Logger().Error(err)
return c.String(http.StatusBadRequest, err.Error())
}
songs := append(append(artistResult, albumResult...), titleResult...)
// make list unique
uniqueList := make([]mpd.Attrs, 0, len(songs))
keep := make(map[string]bool)
for _, song := range songs {
if _, ok := keep[song["file"]]; !ok {
keep[song["file"]] = true
uniqueList = append(uniqueList, song)
}
}
return c.JSON(http.StatusOK, uniqueList)
}