aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-05-28 20:34:40 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2023-05-28 20:34:40 +0200
commitae2620f84494dd7f816bba51ed7d48039090ed07 (patch)
tree026da1729bf15f31c9b3777c2e0697ecc05e4c3f
parent6fef9c693b98bd8c2bf63162baedeb5123e963f3 (diff)
downloadWRMS-ae2620f84494dd7f816bba51ed7d48039090ed07.tar.gz
WRMS-ae2620f84494dd7f816bba51ed7d48039090ed07.zip
refactor playing an uri and from stdin
-rw-r--r--player.go27
1 files changed, 17 insertions, 10 deletions
diff --git a/player.go b/player.go
index f1b01ac..fbf06d9 100644
--- a/player.go
+++ b/player.go
@@ -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)
}
}()