Extend MediaItemMetadata with TrackNumber, Size, BitRate, SampleRate,
BitDepth, and ChannelCount (all already present on Track) and populate
them in Track.Metadata(). Thread them through dlnaplayer.go into the
avtransport.MediaItem so the renderer's DIDL-Lite includes upnp:artist,
upnp:album, upnp:originalTrackNumber, plus <res> attributes for
duration, size, bitrate, sampleFrequency, bitsPerSample, and
nrAudioChannels. The previously dropped Duration field is now
populated too.
For cover art, add a CoverArtPathFn callback on PlaybackManager wired
to ImageManager.GetCoverArtPath in app.go. The DLNA player invokes it
when a track is queued, registers the cached cover-thumbnail path
with the local proxy, and emits the resulting proxy URL as
upnp:albumArtURI so the renderer can display album art alongside the
audio.
Bumps go-upnpcast to pull in the MediaItem fields and DIDL-Lite
emission added in supersonic-app/go-upnpcast#4.
- Migrate golangci-lint config to v2 format
- Update GitHub Actions: checkout v3→v4, Go 1.24→1.25
- Update golangci-lint-action v6→v9 with golangci-lint v2.8
- Fix dlnaplayer.go: use RequestHandler interface for go-upnpcast
- Fix go.mod replace directive version mismatch for fyne fork
This will be available in "go fix" within Go 1.26 but in the meantime:
go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./...
A quick check shows that this is not used anywhere else in the codebase.
$ ag unimplemented
backend/player/dlna/dlnaplayer.go
34:var unimplemented = errors.New("unimplemented")