aboutsummaryrefslogtreecommitdiff
path: root/player.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2022-12-23 08:51:37 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2022-12-23 08:51:37 +0100
commitb7f5ed4e5fcb3b51636a9dad79e7e80f7ebbb102 (patch)
tree1a8c53db5e7fa34f683c8a0afcb8e33ff104b0a7 /player.go
parent97a9b0e75a57c6b55bab8c50827f5ba4b896fd95 (diff)
downloadWRMS-0.0.2-alpha.tar.gz
WRMS-0.0.2-alpha.zip
implement local storage backendv0.0.2-alpha
The 'local' backend is able to serve the music from a path specified by '-server-music-dir'. Add command line options to select the server port as well as a list of backends.
Diffstat (limited to 'player.go')
-rw-r--r--player.go38
1 files changed, 23 insertions, 15 deletions
diff --git a/player.go b/player.go
index c7a9390..94efa27 100644
--- a/player.go
+++ b/player.go
@@ -6,32 +6,40 @@ import (
"os/exec"
"syscall"
- "muhq.space/wrms/llog"
+ "muhq.space/go/wrms/llog"
)
-type Backend interface {
- Play(song *Song, player *Player)
- Search(keyword string) []Song
-}
-
type Player struct {
Backends map[string]Backend
mpv *exec.Cmd
wrms *Wrms
}
-func NewPlayer(wrms *Wrms) Player {
+func NewPlayer(wrms *Wrms, backends []string) Player {
available_backends := map[string]Backend{}
- spotify, err := NewSpotify()
- if err != nil {
- // log.Fatalln("Error during initialization of the spotify backend:", err.Error())
- llog.Error(fmt.Sprintf("Error during initialization of the spotify backend: %s", err.Error()))
- }
- available_backends["spotify"] = spotify
- available_backends["youtube"] = &YoutubeBackend{}
+ var b Backend
+ var err error
+ for _, backend := range backends {
+ switch backend {
+ case "spotify":
+ b, err = NewSpotify()
+ case "youtube":
+ b = &YoutubeBackend{}
+ case "dummy":
+ b = &DummyBackend{}
+ case "local":
+ b = NewLocalBackend(wrms.Config.localMusicDir)
+ default:
+ llog.Error(fmt.Sprintf("Not supported backend %s", backend))
+ }
- available_backends["dummy"] = &DummyBackend{}
+ if err != nil {
+ llog.Error(fmt.Sprintf("Error during initialization of the %s backend: %s", backend, err.Error()))
+ } else {
+ available_backends[backend] = b
+ }
+ }
return Player{available_backends, nil, wrms}
}