From b7f5ed4e5fcb3b51636a9dad79e7e80f7ebbb102 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Fri, 23 Dec 2022 08:51:37 +0100 Subject: implement local storage backend 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. --- player.go | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) (limited to 'player.go') 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} } -- cgit v1.2.3