shorten retry time, clean up logging

This commit is contained in:
Drew Weymouth
2025-03-29 15:15:13 -07:00
parent 9ad40a1c2d
commit ff455528d6
2 changed files with 27 additions and 9 deletions
+4 -4
View File
@@ -570,7 +570,7 @@ func (p *PlaybackManager) enqueueAutoplayTracks() {
if len(tr.ArtistIDs) > 0 { if len(tr.ArtistIDs) > 0 {
similar, err := s.GetSimilarTracks(tr.ArtistIDs[0], p.cfg.EnqueueBatchSize) similar, err := s.GetSimilarTracks(tr.ArtistIDs[0], p.cfg.EnqueueBatchSize)
if err != nil { if err != nil {
log.Println("autoplay error: failed to get similar tracks: %v", err) log.Printf("autoplay error: failed to get similar tracks: %v", err)
} }
tracks = filterRecentlyPlayed(similar) tracks = filterRecentlyPlayed(similar)
} }
@@ -583,7 +583,7 @@ func (p *PlaybackManager) enqueueAutoplayTracks() {
} }
byGenre, err := s.GetRandomTracks(g, p.cfg.EnqueueBatchSize) byGenre, err := s.GetRandomTracks(g, p.cfg.EnqueueBatchSize)
if err != nil { if err != nil {
log.Println("autoplay error: failed to get tracks by genre: %v", err) log.Printf("autoplay error: failed to get tracks by genre: %v", err)
} }
tracks = filterRecentlyPlayed(byGenre) tracks = filterRecentlyPlayed(byGenre)
if len(tracks) > 0 { if len(tracks) > 0 {
@@ -598,7 +598,7 @@ func (p *PlaybackManager) enqueueAutoplayTracks() {
// fallback to random tracks // fallback to random tracks
random, err := s.GetRandomTracks("", p.cfg.EnqueueBatchSize) random, err := s.GetRandomTracks("", p.cfg.EnqueueBatchSize)
if err != nil { if err != nil {
log.Println("autoplay error: failed to get random tracks: %v", err) log.Printf("autoplay error: failed to get random tracks: %v", err)
} }
tracks = filterRecentlyPlayed(random) tracks = filterRecentlyPlayed(random)
} }
@@ -612,7 +612,7 @@ func (p *PlaybackManager) enqueueAutoplayTracks() {
func (p *PlaybackManager) runCmdQueue(ctx context.Context) { func (p *PlaybackManager) runCmdQueue(ctx context.Context) {
logIfErr := func(action string, err error) { logIfErr := func(action string, err error) {
if err != nil { if err != nil {
log.Println("Playback error (%s): %v", action, err) log.Printf("Playback error (%s): %v", action, err)
} }
} }
for { for {
+23 -5
View File
@@ -65,6 +65,8 @@ type DLNAPlayer struct {
func NewDLNAPlayer(device *device.MediaRenderer) (*DLNAPlayer, error) { func NewDLNAPlayer(device *device.MediaRenderer) (*DLNAPlayer, error) {
retry := retryablehttp.NewClient() retry := retryablehttp.NewClient()
retry.RetryMax = 3 retry.RetryMax = 3
retry.RetryWaitMin = 100 * time.Millisecond
retry.Logger = retryLogger{}
cli := retry.StandardClient() cli := retry.StandardClient()
avt, err := device.AVTransportClient() avt, err := device.AVTransportClient()
@@ -97,8 +99,6 @@ func (d *DLNAPlayer) GetVolume() int {
func (d *DLNAPlayer) PlayFile(urlstr string, meta mediaprovider.MediaItemMetadata) error { func (d *DLNAPlayer) PlayFile(urlstr string, meta mediaprovider.MediaItemMetadata) error {
d.ensureSetupProxy() d.ensureSetupProxy()
log.Println("playing track " + meta.Name)
d.metaLock.Lock() d.metaLock.Lock()
d.curTrackMeta = meta d.curTrackMeta = meta
d.metaLock.Unlock() d.metaLock.Unlock()
@@ -268,16 +268,13 @@ func (d *DLNAPlayer) addURLToProxy(url string) string {
func (d *DLNAPlayer) setTrackChangeTimer(dur time.Duration) { func (d *DLNAPlayer) setTrackChangeTimer(dur time.Duration) {
if d.timerActive.Swap(true) { if d.timerActive.Swap(true) {
// was active // was active
log.Println("timer was active")
d.resetChan <- dur d.resetChan <- dur
log.Println("and reset")
return return
} }
if dur == 0 { if dur == 0 {
d.timerActive.Store(false) d.timerActive.Store(false)
return return
} }
log.Println("starting timer")
d.timer = time.NewTimer(dur) d.timer = time.NewTimer(dur)
go func() { go func() {
@@ -391,3 +388,24 @@ func (d *DLNAPlayer) handleRequest(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(os.Stderr, "Error copying response body:", err) fmt.Fprintln(os.Stderr, "Error copying response body:", err)
} }
} }
type retryLogger struct{}
func (retryLogger) Error(msg string, keysAndValues ...interface{}) {
log.Println(msg, keysAndValues)
}
func (retryLogger) Info(msg string, keysAndValues ...interface{}) {
log.Println(msg, keysAndValues)
}
func (retryLogger) Warn(msg string, keysAndValues ...interface{}) {
log.Println(msg, keysAndValues)
}
func (retryLogger) Debug(msg string, keysAndValues ...interface{}) {
// log only retries, not every request
if strings.Contains(msg, "retrying request") {
log.Println(msg, keysAndValues)
}
}