-
RequestCast 1.7.1 Stable
released this
2026-07-29 17:03:09 -07:00 | 1 commits to main since this releaseA settings file that cannot be written no longer costs you the tool update it was trying
to record.Tool updates survive a read-only settings file. When RequestCast installs or updates
yt-dlp or Deno, it writes down where the new copy landed. If the settings file cannot be
written — a service confined to a few writable paths, a portable copy on read-only media —
that write failed loudly enough to take the update with it: the background updater thread
died the first time it succeeded at anything, so yt-dlp was never checked again for as long
as the program stayed running, and the "check for updates now" button returned an error
after having updated the tools. Installing a missing tool mid-download failed the same way,
reporting that the tool could not be installed when it just had been.The tool is installed either way, and RequestCast looks in its own
toolsfolder before
PATH, so an unwritable settings file now costs nothing but the note of where the tool went.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
RequestCast 1.7.0 Stable
released this
2026-07-29 15:30:18 -07:00 | 3 commits to main since this releaseSearches bring back much more, refused downloads recover on their own, and the download
tools install and update themselves.Deno is installed automatically, and YouTube works again. YouTube now answers with
JavaScript challenges yt-dlp cannot solve by itself; it hands them to an external
JavaScript runtime, and enables Deno by default. Without one, YouTube downloads lose the
better formats and fail with 403 errors no amount of retrying clears. RequestCast now
treats Deno as a required tool: it is fetched into thetoolsfolder alongside yt-dlp and
ffmpeg, kept current, and passed to yt-dlp explicitly, since our copy is not on PATH. A
403 with no Deno present now says so instead of blaming rate limiting.The download tools set themselves up. yt-dlp, ffmpeg, and Deno are installed in the
background as soon as RequestCast is configured — nobody has to find a button first — and
a download that arrives before they are ready waits for the install rather than failing.yt-dlp and musicdl keep themselves up to date. Both stop working as the sites they
read change, and an out-of-date yt-dlp is the most common cause of downloads that fail
while the same track plays fine in a browser. RequestCast checks daily by default and
installs what is newer. The interval is configurable, automatic updating can be turned
off, and Preferences has a "check for updates now" button that reports what each tool did.Searches pull in much more. Result counts were fixed at 25 from YouTube and 12 per
type from Deezer. The number is now a setting, defaulting to 50 per source and per result
type, and every search page has a "results per source" control, so one search can ask for
200 without changing anything permanently. Deezer results are paged rather than truncated
at the API's 100-row ceiling. musicdl can also join searches now — its platforms carry
plenty that YouTube and Deezer do not — either always, or per search from the source list.Failed downloads have real retry settings. Bulk runs — a channel, a discography, a
playlist import — get refused in batches with 403 or "video unavailable" even though the
same tracks download fine later. That is rate limiting, and there was no way to tune it.
Now there is:- Extra attempts per track, each asking YouTube as a different client, which is what
usually clears a 403 outright. - A gap between tracks, which is the most effective way to avoid being rate limited to
begin with. - A cooldown after several refusals in a row, and again before a final pass over
everything that failed, so a batch that was refused is retried once the site has settled
instead of being written off. - A requeue limit for a whole download that fails outright.
- A "try this download again" button on every finished download. Tracks already in the
library are recognised and skipped, so a retry only fetches what is missing.
Failures are also explained now: a bare
HTTP Error 403: Forbiddenin the history says
what it means and what to change.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Extra attempts per track, each asking YouTube as a different client, which is what
-
RequestCast 1.6.1 Stable
released this
2026-07-28 17:42:33 -07:00 | 9 commits to main since this releaseTwo fixes for the musicdl integration from 1.6.0.
Single-track pages now work on every musicdl platform. Pasting a bare track URL —
soundcloud.com/artist/song, not just a playlist or set — used to fail with "That URL
did not produce any tracks musicdl recognizes", because musicdl's URL parser only
understands collections. RequestCast now reads the page for an artist and title and
resolves the track by searching that platform's own musicdl client. Tracks whose
streams cannot be stored up front (HLS streams, short-lived URLs) are re-resolved the
same way when the download runs instead of being dropped.musicdl no longer fails on hardened Linux services. A service running with a
read-only home directory (systemdProtectSystem=strict) got
[Errno 30] Read-only file systemon any musicdl lookup, because musicdl creates its
log directory under the account's home. RequestCast now points the XDG directories
musicdl uses at its own state directory; XDG values you set yourself still win.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
RequestCast 1.6.0 Stable
released this
2026-07-28 17:04:34 -07:00 | 13 commits to main since this releasemusicdl joins the download chain, and its platforms' URLs now work.
A second fallback before YouTube. When Deezer cannot supply a track — or no Deezer
ARL is configured — RequestCast now asks musicdl
before resorting to YouTube: it searches the configured platforms for a clean
artist/title match and downloads the best result. YouTube via yt-dlp remains the last
resort, so nothing that worked before is lost. The fallback is on by default; turn it
off in Settings or withREQUESTCAST_MUSICDL_ENABLED=0, and choose which platforms it
searches withREQUESTCAST_MUSICDL_SOURCES(the default is musicdl's own reliable
five: Migu, NetEase, QQ, Kuwo, and Qianqian).URLs from twenty more platforms. Paste a track or playlist URL from NetEase,
QQ Music, Kugou, Kuwo, Migu, Qianqian, Spotify, SoundCloud, TIDAL, Qobuz, Apple Music,
JOOX, JioSaavn, Jamendo, Soda, StreetVoice, FMA, Suno, MOOV, 5SING, Bodian, or Bilibili
and RequestCast downloads it through musicdl directly — same tagging, same quality
checks, same destination as everything else. The same URLs work inside uploaded TXT,
XLSX, PDF, and playlist files.Downloaded files keep the same treatment. However the audio arrives, it is tagged
with the track's metadata, verified with ffprobe, and made readable by every account
on the machine before it lands in the download folder or the AzuraCast library.Note: musicdl is licensed for non-commercial use; see its repository for the terms.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
RequestCast 1.5.0 Stable
released this
2026-07-27 14:39:24 -07:00 | 20 commits to main since this releaseWhole-library lists now fit. The upload limits were far too small.
250,000 entries per file, up from 10,000. Plenty of people keep lists longer than ten
thousand rows, and there was no good reason for the old ceiling — indexing was never the
slow part. On an ordinary machine, 250,000 rows takes about a second to index from a TXT
file and about eleven seconds from an XLSX workbook, and a PDF page costs roughly three
milliseconds. The new limits are set by what that work actually costs.Bigger files are accepted. Uploads may now be 64 MB rather than 16 MB, PDFs may run to
5,000 pages rather than 500, and an import may resolve up to 250,000 tracks rather than
25,000. A file past the ceiling is still refused, and now fails as soon as it goes over
instead of being read into memory in full first.The main page stays fast. A large import stores every indexed entry with its job, so
listing recent downloads no longer reads those payloads back — it reads only the few
columns it shows. Without that, drawing the home page after a few whole-library imports
would have meant loading hundreds of megabytes.If you run RequestCast behind nginx, raise
client_max_body_sizeto64mand keep a
generousproxy_read_timeout, since indexing happens inside the upload request.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
RequestCast 1.4.0 Stable
released this
2026-07-27 14:27:29 -07:00 | 22 commits to main since this releaseUses your own default browser, stops wasting disk space, and lets you choose what to download.
Your default browser, and no browser downloads. Earlier builds launched a separate
Chromium window against a private user-data directory, which copied a whole Microsoft Edge
profile — frequently hundreds of megabytes — into RequestCast's own folder. That is gone.
RequestCast now hands the address to Windows, and whichever browser you have set as your
default opens it. On startup it also deletes any browser profile folder an older version
left behind, so the space comes back.Diagnostics are off by default. The full support bundle used to write a request log and
collect tens of megabytes of Windows networking evidence every time the program started. It
is now a preference, off unless you turn it on: tick it under Preferences, start with
RequestCast.exe --diagnostics, or setREQUESTCAST_DIAGNOSTICS=1.--diagnosestill
collects one bundle on demand when someone asks you for it.Downloads are readable by everyone. Finished files kept the private permissions of the
temporary folder they were built in, so they had to be fixed by hand every time. RequestCast
now resets each finished file, and the download folder itself, to be readable by every
account on the machine.Clear your download history. Clear finished downloads, or the whole history, from the
main page, and remove a single entry from its status page. Downloads still in progress are
kept, and no music files are ever deleted.Pick what you want from an artist or channel. Enter an artist, or paste a YouTube
channel, and open it to see its releases, albums, singles, songs, and videos. Take all of it
with one button, or tick only the parts you want.Upload the playlists you already have. M3U, M3U8, PLS, XSPF, WPL, ASX, CUE, and
foobar2000 FPL are read alongside TXT, XLSX, and PDF lists. RequestCast reads the artist and
title each playlist names and fetches those tracks, so the original files do not need to be
present on this machine.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
RequestCast 1.3.12 Stable
released this
2026-07-26 18:07:37 -07:00 | 28 commits to main since this releaseFixes RequestCast on Windows 11 where localhost connections received HTTP headers but the page body never arrived. The root cause was Werkzeug's post-response request-socket drain blocking on an empty-but-readably-reported loopback socket. RequestCast now bypasses that drain entirely: the custom request handler writes the complete HTTP/1.0 response in a single socket.sendall() call, immediately shuts down the write side, and closes the connection. Responses remain fully buffered with exact Content-Length and Connection: close.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
RequestCast 1.3.11 Stable
released this
2026-07-26 17:03:03 -07:00 | 30 commits to main since this releaseFixes Windows clients receiving RequestCast status codes but waiting forever for the response to finish. RequestCast now fully buffers each local response, removes chunked transfer encoding, calculates an exact Content-Length, sends it as HTTP/1.0, and forces Connection: close. This avoids persistent-loopback and response-framing problems caused by Windows network filters. The packaged executable test now rejects the release unless /setup is received completely with HTTP/1.0, the exact byte length, no Transfer-Encoding header, and a closed connection.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
RequestCast 1.3.9 Stable
released this
2026-07-26 16:32:46 -07:00 | 34 commits to main since this releaseReplaces Waitress with Werkzeug's threaded WSGI server on Windows 11. A second diagnostic bundle confirmed that RequestCast 1.3.8 used send_bytes=1 but clients still timed out while reading even the 16-byte health response. The new backend avoids the Waitress socket path entirely. RequestCast now also detects any process already holding its port before starting, so diagnostic mode cannot create a second server on port 8797. The packaged Windows build must still download the complete setup page before release.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
RequestCast 1.3.8 Stable
released this
2026-07-26 16:14:28 -07:00 | 36 commits to main since this releaseFixes the web interface hanging after RequestCast returned HTTP 200. The diagnostics showed that curl.exe and PowerShell reached /setup but timed out with zero body bytes while Waitress reported that Flask had generated the complete 4 KB page. RequestCast had overridden Waitress send_bytes to 18,000, causing small responses to remain buffered. This release restores immediate one-byte flushing and adds a packaged end-to-end test that starts RequestCast and must download the complete setup page before a Windows release can be published.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
mirror of
https://github.com/serrebidev/requestcast.git
synced 2026-08-13 08:39:46 -07:00