diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-05-28 20:34:40 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2023-05-28 20:34:40 +0200 |
| commit | ae2620f84494dd7f816bba51ed7d48039090ed07 (patch) | |
| tree | 026da1729bf15f31c9b3777c2e0697ecc05e4c3f /player.go | |
| parent | 6fef9c693b98bd8c2bf63162baedeb5123e963f3 (diff) | |
| download | WRMS-ae2620f84494dd7f816bba51ed7d48039090ed07.tar.gz WRMS-ae2620f84494dd7f816bba51ed7d48039090ed07.zip | |
refactor playing an uri and from stdin
Diffstat (limited to 'player.go')
| -rw-r--r-- | player.go | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -79,35 +79,42 @@ func (player *Player) runMpv() { const MPV_FLAGS = "--no-video" -func (player *Player) PlayUri(uri string) { - llog.Info("Start mpv with %s", uri) +func mpvArgv(uri string) []string { cmd := []string{"mpv", uri} - cmd = append(cmd, strings.Split(MPV_FLAGS, " ")...) - cmd = append(cmd, strings.Split(wrms.Config.MpvFlags, " ")...) + return cmd +} + +func (player *Player) startMpv(uri string) { + if player.mpv != nil { + llog.Fatal("Player has already an mpv subprocess") + } + llog.Info("Start mpv to play %s", uri) + cmd := mpvArgv(uri) llog.Debug("Running '%s'", strings.Join(cmd, " ")) player.mpv = exec.Command("mpv", cmd...) +} + +func (player *Player) PlayUri(uri string) { + player.startMpv(uri) go player.runMpv() } func (player *Player) PlayData(data io.Reader) { - if player.mpv != nil { - llog.Fatal("Player has already an mpv subprocess") - } + player.startMpv("-") - player.mpv = exec.Command("mpv", "-") stdin, err := player.mpv.StdinPipe() if err != nil { - llog.Fatal(err.Error()) + llog.Fatal("Connecting to mpv Pipe failed: %v", err) } go func() { defer stdin.Close() if _, err := io.Copy(stdin, data); err != nil { - llog.Fatal("Failed to write song data to mpv (%v)", err) + llog.Fatal("Failed to write song data to mpv: %v", err) } }() |
