Skip to content

v3.1419

@netpack netpack tagged this 16 Aug 08:30
Neither service hands out downloadable audio, so the new StreamingCatalog
reads the track list a link points at — Spotify via its embed page (or the
Web API when credentials are configured), Apple Music via the iTunes lookup
API and the playlist page's JSON-LD — and each track is then fetched through
the existing yt-dlp pipeline as a YouTube search. Single tracks, albums and
playlists all work, and pasted links fill in artist and song automatically.

A shared YouTube link often carries the radio Mix it was playing inside
("list=RD...&start_radio=1"). Handed to yt-dlp as-is that enumerated 1023
tracks instead of the one that was asked for. Playlist links are now reduced
to their list id, single downloads pass --no-playlist, and a Mix is named as
such with the choice of just its seed track or a capped 25.

A long playlist is never half-downloaded in silence: every source's declared
total (Apple's numTracks, iTunes' trackCount, Spotify's API total, yt-dlp's
playlist_count) is checked against what arrived, and a short list is reported
in the console and the summary. Reading a playlist index now times out on
silence rather than on a fixed deadline, so a big playlist is not cut off for
being slow, and an incomplete index aborts instead of downloading part of it.

Auto Mode starting on an empty running order used to do nothing when Play was
pressed. It now queues a track first, and autoModeGetMoreSongs falls back past
the hour's programmed genre instead of giving up when that genre holds nothing
playable.

Options: every tab had its widgets at absolute coordinates, so rows overlapped
and clipped — the Theme/Accent row and "Level meter position:" were cut in
half, and the Network tab's Role box collided with the FTP rows. The tabs now
use real layouts, and the Downloads tab gained the optional Spotify Client ID
and secret, stored sealed like the FTP password.

The braille device monitor logged a line every five seconds forever, which was
over half of xfb.log; it now says so once. Logs older than two weeks are swept
at startup, including the dated ones older versions left behind.

About had the version typed into its text and had been announcing 3.14159 for
five releases — the number was baked into the pt/fr translations too, where no
bump script could reach it. It now comes from the running application.

Also corrects thirteen typos in user-visible text, with the same corrections
applied to the translation sources so no existing work was lost, and refreshes
Portuguese and French to 1400/1400 strings.
Assets 2
Loading