add mpd status messages
This commit is contained in:
parent
3889391f1b
commit
99dc857d41
7 changed files with 338 additions and 196 deletions
190
mpd.go
Normal file
190
mpd.go
Normal file
|
@ -0,0 +1,190 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/fhs/gompd/v2/mpd"
|
||||
"github.com/labstack/echo/v4"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
// MPD API calls
|
||||
|
||||
func previousTrack(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
err = conn.Previous()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
||||
|
||||
func nextTrack(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
err = conn.Next()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
||||
|
||||
func stopPlayback(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
err = conn.Stop()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
||||
|
||||
func resumePlayback(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
err = conn.Pause(false)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
||||
|
||||
func pausePlayback(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
err = conn.Pause(true)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
||||
|
||||
func seek(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
seconds, err := strconv.Atoi(c.Param("seconds"))
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
if seconds < 0 {
|
||||
return c.String(http.StatusBadRequest, "seconds must be positive integer")
|
||||
}
|
||||
|
||||
err = conn.SeekCur(time.Duration(seconds)*time.Second, false)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
||||
|
||||
func toggleRepeat(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
status, err := conn.Status()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
if status["repeat"] == "1" {
|
||||
err = conn.Repeat(false)
|
||||
} else {
|
||||
err = conn.Repeat(true)
|
||||
}
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
||||
|
||||
func toggleRandom(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
status, err := conn.Status()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
if status["toggleRandom"] == "1" {
|
||||
err = conn.Random(false)
|
||||
} else {
|
||||
err = conn.Random(true)
|
||||
}
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
||||
|
||||
func setVolume(c echo.Context) error {
|
||||
// Connect to MPD server
|
||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
level, err := strconv.Atoi(c.Param("level"))
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
if level > 100 || level < 0 {
|
||||
return c.String(http.StatusBadRequest, "Volume must be between 0 and 100")
|
||||
}
|
||||
|
||||
err = conn.SetVolume(level)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
return c.String(http.StatusOK, "")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue