diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2022-12-23 08:51:37 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2022-12-23 08:51:37 +0100 |
| commit | b7f5ed4e5fcb3b51636a9dad79e7e80f7ebbb102 (patch) | |
| tree | 1a8c53db5e7fa34f683c8a0afcb8e33ff104b0a7 /player.go | |
| parent | 97a9b0e75a57c6b55bab8c50827f5ba4b896fd95 (diff) | |
| download | WRMS-b7f5ed4e5fcb3b51636a9dad79e7e80f7ebbb102.tar.gz WRMS-b7f5ed4e5fcb3b51636a9dad79e7e80f7ebbb102.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.go | 38 |
1 files changed, 23 insertions, 15 deletions
@@ -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} } |
