diff --git a/cmd/dwelling-radio/main.go b/cmd/dwelling-radio/main.go index 66c1c66..781fcfc 100644 --- a/cmd/dwelling-radio/main.go +++ b/cmd/dwelling-radio/main.go @@ -74,9 +74,12 @@ func main() { } defer func() { - err := os.WriteFile(*mostListenedSongPath, radio.StoreMostListenedSong(), fs.ModePerm) - if err != nil { - log.Println("failed to store a most listened song:", err) + fileData := radio.StoreMostListenedSong() + if fileData != nil { + err := os.WriteFile(*mostListenedSongPath, fileData, fs.ModePerm) + if err != nil { + log.Println("failed to store a most listened song:", err) + } } if err := srv.Stop(); err != nil { diff --git a/internal/radio/mostlistened.go b/internal/radio/mostlistened.go index 11ce6e2..ce7c430 100644 --- a/internal/radio/mostlistened.go +++ b/internal/radio/mostlistened.go @@ -9,6 +9,8 @@ import ( const MostListenedDateFormat = "02 January 2006" +var mlsChanged = false + type MostListenedSong struct { Listeners int Date time.Time @@ -43,6 +45,7 @@ func CheckAndUpdateMostListenedSong(cur, prev Song) { Date: time.Now().UTC(), Song: prev.Song} } + mlsChanged = true } // MostListened returns song that currently is the song with most simultaneous @@ -68,6 +71,10 @@ func LoadMostListenedSong(data []byte) (err error) { } func StoreMostListenedSong() []byte { + if !mlsChanged { + return nil + } + buf := make([]byte, 0, 30+len(mostListened.Song)) b := bytes.NewBuffer(buf)