diff --git a/sources/mpv/source.go b/sources/mpv/source.go index 601ef12..44cf6e7 100644 --- a/sources/mpv/source.go +++ b/sources/mpv/source.go @@ -5,7 +5,6 @@ import ( "log" "os" "os/exec" - "path" "time" "github.com/DexterLB/mpvipc" @@ -14,21 +13,25 @@ import ( ) type MPVSource struct { - process *exec.Cmd - ipcSocketDir string - Name string - Options []string - File string + process *exec.Cmd + ipcSocket string + Name string + Options []string + File string } func init() { - sources.SoundSources["mpv-nig"] = &MPVSource{ - Name: "Radio NIG", - File: "https://mediaserv38.live-streams.nl:18030/stream", + sources.SoundSources["mpv-1"] = &MPVSource{ + Name: "Radio 1", + ipcSocket: "/tmp/tmpmpv.radio-1", + Options: []string{"--no-video", "--no-terminal"}, + File: "https://mediaserv38.live-streams.nl:18030/stream", } - sources.SoundSources["mpv-synthfm"] = &MPVSource{ - Name: "Radio Synthetic FM", - File: "https://mediaserv38.live-streams.nl:18040/live", + sources.SoundSources["mpv-2"] = &MPVSource{ + Name: "Radio 2", + ipcSocket: "/tmp/tmpmpv.radio-2", + Options: []string{"--no-video", "--no-terminal"}, + File: "https://mediaserv38.live-streams.nl:18040/live", } } @@ -44,20 +47,15 @@ func (s *MPVSource) IsEnabled() bool { return s.process != nil } -func (s *MPVSource) ipcSocket() string { - return path.Join(s.ipcSocketDir, "mpv.socket") -} - func (s *MPVSource) Enable() (err error) { if s.process != nil { return fmt.Errorf("Already running") } - s.ipcSocketDir, err = os.MkdirTemp("", "hathoris") - - opts := append([]string{"--no-video", "--no-terminal"}, s.Options...) - if s.ipcSocketDir != "" { - opts = append(opts, "--input-ipc-server="+s.ipcSocket(), "--pause") + var opts []string + opts = append(opts, s.Options...) + if s.ipcSocket != "" { + opts = append(opts, "--input-ipc-server="+s.ipcSocket, "--pause") } opts = append(opts, s.File) @@ -72,22 +70,18 @@ func (s *MPVSource) Enable() (err error) { s.process.Process.Kill() } - if s.ipcSocketDir != "" { - os.RemoveAll(s.ipcSocketDir) - } - s.process = nil }() - if s.ipcSocketDir != "" { - _, err = os.Stat(s.ipcSocket()) + if s.ipcSocket != "" { + _, err = os.Stat(s.ipcSocket) for i := 20; i >= 0 && err != nil; i-- { time.Sleep(100 * time.Millisecond) - _, err = os.Stat(s.ipcSocket()) + _, err = os.Stat(s.ipcSocket) } time.Sleep(200 * time.Millisecond) - conn := mpvipc.NewConnection(s.ipcSocket()) + conn := mpvipc.NewConnection(s.ipcSocket) err = conn.Open() for i := 20; i >= 0 && err != nil; i-- { time.Sleep(100 * time.Millisecond) @@ -151,13 +145,11 @@ func (s *MPVSource) FadeOut(conn *mpvipc.Connection, speed int) { func (s *MPVSource) Disable() error { if s.process != nil { if s.process.Process != nil { - if s.ipcSocketDir != "" { - conn := mpvipc.NewConnection(s.ipcSocket()) - err := conn.Open() - if err == nil { - s.FadeOut(conn, 3) - conn.Close() - } + conn := mpvipc.NewConnection(s.ipcSocket) + err := conn.Open() + if err == nil { + s.FadeOut(conn, 3) + conn.Close() } s.process.Process.Kill() @@ -168,8 +160,8 @@ func (s *MPVSource) Disable() error { } func (s *MPVSource) CurrentlyPlaying() string { - if s.ipcSocketDir != "" { - conn := mpvipc.NewConnection(s.ipcSocket()) + if s.ipcSocket != "" { + conn := mpvipc.NewConnection(s.ipcSocket) err := conn.Open() if err != nil { log.Println("Unable to open mpv socket:", err.Error()) @@ -189,11 +181,11 @@ func (s *MPVSource) CurrentlyPlaying() string { } func (s *MPVSource) TogglePause(id string) error { - if s.ipcSocketDir == "" { + if s.ipcSocket == "" { return fmt.Errorf("Not supported") } - conn := mpvipc.NewConnection(s.ipcSocket()) + conn := mpvipc.NewConnection(s.ipcSocket) err := conn.Open() if err != nil { return err diff --git a/sources/spdif/source.go b/sources/spdif/source.go index 2e086ff..7527ead 100644 --- a/sources/spdif/source.go +++ b/sources/spdif/source.go @@ -52,7 +52,7 @@ func (s *SPDIFSource) IsActive() bool { } func (s *SPDIFSource) IsEnabled() bool { - return s.processRec != nil || s.processPlay != nil + return s.processRec != nil } func (s *SPDIFSource) Enable() error { @@ -80,8 +80,9 @@ func (s *SPDIFSource) Enable() error { if s.processPlay != nil && s.processPlay.Process != nil { s.processPlay.Process.Kill() } + pipeR.Close() + pipeW.Close() } - pipeR.Close() s.processPlay = nil }() @@ -98,7 +99,6 @@ func (s *SPDIFSource) Enable() error { if err != nil { s.processRec.Process.Kill() } - pipeW.Close() s.processRec = nil }()