From 234f4be42b4f6fa2906944e200d43fd495dcff8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Carlos=20Cuevas?= Date: Tue, 5 Dec 2023 12:42:18 +0100 Subject: [PATCH] feat: get stream info from MPlayer, volume buttons, better error control --- main.go | 157 ++++++++++++++++++++++++++++++------------------- res/header.png | Bin 0 -> 45343 bytes 2 files changed, 98 insertions(+), 59 deletions(-) create mode 100644 res/header.png diff --git a/main.go b/main.go index 789b66d..c1a6887 100644 --- a/main.go +++ b/main.go @@ -15,10 +15,11 @@ package main import ( "bufio" "encoding/json" - "fmt" "image" "io" + "log" "net/http" + "os" "os/exec" "strings" "time" @@ -35,7 +36,7 @@ import ( // helper func check(err error) { if err != nil { - panic(err) + log.Panic(err) } } @@ -104,9 +105,9 @@ func (player *MPlayer) Play(stream_url string) { is_playlist := strings.HasSuffix(stream_url, ".m3u") || strings.HasSuffix(stream_url, ".pls") if is_playlist { // player.command = exec.Command(player.player_name, "-quiet", "-playlist", stream_url) - player.command = exec.Command(player.player_name, "-playlist", stream_url) + player.command = exec.Command(player.player_name, "-v", "-playlist", stream_url) } else { - player.command = exec.Command(player.player_name, stream_url) + player.command = exec.Command(player.player_name, "-v", stream_url) } player.in, err = player.command.StdinPipe() check(err) @@ -174,31 +175,24 @@ func loadImageURL(url string) image.Image { } func main() { + RADIOSPIRAL_STREAM := "https://radiospiral.radio/stream.mp3" RADIOSPIRAL_JSON_ENDPOINT := "https://radiospiral.net/wp-json/radio/broadcast" + logFile, err := os.OpenFile("radiospiral.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) + check(err) + defer logFile.Close() + + log.SetOutput(logFile) + log.Println("Starting the app") + // Create the status channel, to read from MPlayer and the pipe to send commands to it - status_chan := make(chan string) pipe_chan := make(chan io.ReadCloser) // Create our MPlayer instance mplayer := MPlayer{player_name: "mplayer", is_playing: false, pipe_chan: pipe_chan} - // Process the output of Mplayer here - go func() { - for { - out_pipe := <-pipe_chan - reader := bufio.NewReader(out_pipe) - for { - data, err := reader.ReadString('\n') - if err != nil { - status_chan <- "Playing stopped" - break - } else { - status_chan <- data - } - } - } - }() + // Make sure that MPlayer closes when the program ends + defer mplayer.Close() // Create our app and window app := app.New() @@ -209,23 +203,77 @@ func main() { // Keep the status of the player playStatus := false + // Placeholder avatar radioSpiralAvatar := loadImageURL("https://radiospiral.net/wp-content/uploads/2018/03/Radio-Spiral-Logo-1.png") - radioSpiralImage := canvas.NewImageFromImage(radioSpiralAvatar) - radioSpiralImage.SetMinSize(fyne.NewSize(64, 64)) - radiospiralLabel := widget.NewLabel("RadioSpiral") + + // Header section + radioSpiralImage := canvas.NewImageFromFile("./res/header.png") + header := container.NewCenter(radioSpiralImage) + + // Next show section + showAvatar := canvas.NewImageFromImage(radioSpiralAvatar) + showAvatar.SetMinSize(fyne.NewSize(200, 200)) + showCard := widget.NewCard("RadioSpiral", "", showAvatar) + centerCardContainer := container.NewCenter(showCard) + + radioSpiralImage.SetMinSize(fyne.NewSize(400, 120)) + nowPlayingLabelHeader := widget.NewLabel("Now playing:") nowPlayingLabel := widget.NewLabel("") - - radiospiralLabel.Alignment = fyne.TextAlignCenter - nowPlayingLabel.Alignment = fyne.TextAlignCenter - var playButton *widget.Button + volumeDown := widget.NewButtonWithIcon("", theme.VolumeDownIcon(), func() { + mplayer.DecVolume() + }) + volumeUp := widget.NewButtonWithIcon("", theme.VolumeUpIcon(), func() { + mplayer.IncVolume() + }) + controlContainer := container.NewHBox( + nowPlayingLabelHeader, + layout.NewSpacer(), + volumeDown, + volumeUp, + ) + + nowPlayingLabel.Alignment = fyne.TextAlignCenter + nowPlayingLabel.Wrapping = fyne.TextWrapWord + + // Process the output of Mplayer here in a separate goroutine + go func() { + for { + out_pipe := <-pipe_chan + reader := bufio.NewReader(out_pipe) + for { + data, err := reader.ReadString('\n') + if err != nil { + log.Fatal(err) + log.Println("Reloading player") + mplayer.Close() + pipe_chan = make(chan io.ReadCloser) + mplayer = MPlayer{player_name: "mplayer", is_playing: false, pipe_chan: pipe_chan} + mplayer.Play(RADIOSPIRAL_STREAM) + playStatus = true + playButton.SetIcon(theme.MediaPlayIcon()) + defer mplayer.Close() + } else { + // Check if there's an updated title and reflect it on the + // GUI + log.Print("[mplayer] " + data) + if strings.Contains(data, "StreamTitle: ") { + log.Println("Found new stream title, updating GUI") + newTitleParts := strings.Split(data, "StreamTitle: ") + nowPlayingLabel.SetText(newTitleParts[1]) + } + } + } + } + }() + playButton = widget.NewButtonWithIcon("", theme.MediaStopIcon(), func() { // Here we control each time the button is pressed and update its // appearance anytime it is clicked. We make the player start playing // or pause. if !mplayer.is_playing { playButton.SetIcon(theme.MediaPlayIcon()) - mplayer.Play("https://radiospiral.radio/stream.mp3") + mplayer.Play(RADIOSPIRAL_STREAM) playStatus = true } else { if playStatus { @@ -239,27 +287,13 @@ func main() { } }) - // Header section - headerElems := container.NewHBox(radioSpiralImage, radiospiralLabel) - header := container.NewCenter(headerElems) - - // Next show section - showAvatar := canvas.NewImageFromImage(radioSpiralAvatar) - showAvatar.SetMinSize(fyne.NewSize(200, 200)) - showNameLabel := widget.NewLabel("") - showDate := widget.NewLabel("") - showTimes := widget.NewLabel("") - showHost := widget.NewLabel("") - showInfo := container.NewVBox(showNameLabel, showDate, showTimes, showHost) - - showSection := container.NewHBox(showAvatar, showInfo) - // Layout the whole thing window.SetContent(container.NewVBox( header, widget.NewLabel("Next show:"), - showSection, + centerCardContainer, layout.NewSpacer(), + controlContainer, nowPlayingLabel, playButton, )) @@ -269,32 +303,37 @@ func main() { // and the shows data, update the GUI accordingly go func() { for { - fmt.Println("Retrieving broadcast data") resp, err := http.Get(RADIOSPIRAL_JSON_ENDPOINT) - check(err) + if err != nil { + // If we get an error fetching the data, await a minute and retry + log.Println("[ERROR] Error when querying broadcast endpoint") + log.Println(err) + time.Sleep(1 * time.Minute) + continue + } body, err := io.ReadAll(resp.Body) - check(err) + if err != nil { + // We couldn't read the body, log the error, await a minute and retry + log.Println("[ERROR] Error when reading the body") + log.Println(err) + time.Sleep(1 * time.Minute) + continue + } var broadcastResponse BroadcastResponse + json.Unmarshal(body, &broadcastResponse) - nowPlayingLabel.SetText("Now playing: " + broadcastResponse.Broadcast.NowPlaying.Text) - showNameLabel.SetText(broadcastResponse.Broadcast.NextShow.Show.Name) + showCard.SetTitle(broadcastResponse.Broadcast.NextShow.Show.Name) date := broadcastResponse.Broadcast.NextShow.Day + " " + broadcastResponse.Broadcast.NextShow.Date - times := broadcastResponse.Broadcast.NextShow.Start + " to " + broadcastResponse.Broadcast.NextShow.End - showDate.SetText(date) - showTimes.SetText(times) - showHost.SetText("by: " + broadcastResponse.Broadcast.NextShow.Show.Hosts[0].Name) - fmt.Println(broadcastResponse.Broadcast.NextShow.Show.AvatarUrl) + host := "by: " + broadcastResponse.Broadcast.NextShow.Show.Hosts[0].Name + showCard.SetSubTitle(date + " " + host) showAvatar.Image = loadImageURL(broadcastResponse.Broadcast.NextShow.Show.AvatarUrl) showAvatar.Refresh() - time.Sleep(60 * time.Second) + time.Sleep(10 * time.Minute) } }() // Showtime! window.ShowAndRun() - - // Window has been closed, make sure that MPlayer closes too - mplayer.Close() } diff --git a/res/header.png b/res/header.png new file mode 100644 index 0000000000000000000000000000000000000000..87c632e779243c0ce4eafb50bf1f3b746cfd157d GIT binary patch literal 45343 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 literal 0 HcmV?d00001