Repository navigation
streamrip v2.4.9
2.4.9
Thanks to @berettavexee for the resume check,
the SoundCloud fallback, the Deezer playlist fix and the traceback fix below.
Search
- One menu for every OS. The separate Linux/macOS and Windows menus
(simple-term-menu,pick,windows-curses) are replaced by a single
Textual menu that works the same everywhere.
Filter the results with/, mark several withSPACE;ENTERdownloads the
marked results and the highlighted one. The mouse works too. - The selected result's cover shows beside its details. Terminals with SIXEL or
Kitty graphics support (Konsole, foot and Windows Terminal, for example) get
the image, the others colored sextant blocks, which are less sharp. Detection
is automatic, and the choice is logged with-v. Covers are fetched on demand
with a small cache, and moving on cancels the pending request. A source's
larger artwork is tried first, its smaller sizes are the fallbacks.
Downloading
- A resumed download is checked against the server's
Content-Range. A server
answering from another offset, a remainder that does not add up to the
announced total, a close-delimited answer cut short, or a 416 taken as
"already complete" whatever the partial file's size, used to end as a corrupt
file. Now the partial file is removed and the track fails with
IncompleteDownloadError, so the next attempt starts from scratch instead of
resuming onto the same mismatch
(PR #28, by
@berettavexee).
Deezer
- A geoblocked or delisted playlist track, which Deezer serves from another
release, is tagged from the track that is served. It kept the requested
track's metadata before, so the file got the album, title and cover of a
release it does not come from. For such releases Deezer has no cover, only a
grey placeholder, and that is what ended up embedded. The cover is fetched
after the track is resolved, so only the right one is downloaded
(PR #36, by
@berettavexee).
SoundCloud
- A track marked downloadable no longer fails outright. Its original now comes
back as a 401 with an empty body when asked anonymously, which crashed with a
ContentTypeError. The track's MP3 stream is used instead, and a track
without one is reported as not streamable instead of failing an assertion
(PR #34, by
@berettavexee).
Command line
-vtracebacks no longer print local variables. They included the Deezer
arlafter a failed login and every config, credentials and all, and a
traceback is exactly what people paste into an issue. The stack itself is
unchanged
(PR #35, by
@berettavexee).
Python
- streamrip supports Python 3.14 and 3.15, not newer:
requires-pythonis now
>=3.14,<3.16. CI runs the tests and the install check on both.