Repository navigation
v2.17.0
·
44 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Added
- The test tools now live in a
testdependency group inpyproject.toml, sopip install -r astra_downloader/requirements.txt --group testsets up a clean environment that runs the whole suite, and a fresh clone no longer errors on a missingbuildfolder. - Filename templates can now use music and series fields (artist, album, track, track number, disc number, genre, release year, series, season, episode) plus the extractor name, and any field can carry a fallback like
%(playlist_title|Singles)s. A single video downloaded with a playlist template used to land in a folder called NA. With a fallback it gets the name you chose, and the Settings preview shows which one you'll get. - A site profile can now name its own
DownloadFolderand aMaxConcurrentlimit. The folder sits inside your download folder and gets checked when you save, so a typo, a folder you can't write to or a path that's too long shows up right away instead of on the next download. While a site is at its limit, other sites keep filling the free download slots. Exported settings now include your site profiles too, minus any proxy or network address, which stay on the machine they belong to. - Subscriptions can now filter what they download. Set a title pattern to include, one to skip and an "uploaded on or after" date in a subscription's delivery settings, then press Preview scan to see which videos a scan would take and why the others would be skipped before anything is queued. Skipped videos aren't recorded as captured, so loosening a filter later lets them through. If a title pattern spends more than a second on one title, that video is skipped for this scan and the next scan tries it again. Existing subscriptions move to the new format with no filters set.
- History now tells you when a downloaded file is missing, or when its drive can't be reached right now, and turns off Show for that row. The entry itself stays, and Show comes back once the file does.
- You can now point Astra Downloader at a webhook in Settings. When a download finishes or fails, or a subscription captures a video, it posts a short JSON message with the same details History shows, so an overnight archive run reports somewhere you'll actually see. It's off until you enter an address. Local and private network addresses are refused, and the address never goes into settings exports or the log. A slow or broken endpoint is tried three times in the background and never holds up a download.
- Paste a single link and a summary card now shows its title, length, top resolution and a size estimate for the type and quality you've picked. If the lookup fails, the card says so, names the likely fix (a sign-in, for example, or Download health) and leaves Add to queue working.
- A download can now wait for a start time. Open More options, tick Start at and pick a time, and the item sits in the queue marked Scheduled while everything after it keeps downloading. The schedule survives a restart, and one that came due while Astra was closed starts as soon as the queue is running. Pausing the queue or cancelling the item still wins. Astra has to be running at that time, since it can't wake a sleeping PC. The local API accepts the same thing as notBeforeUtc, an ISO 8601 time that must include a time zone.
- Local subtitles can now use Whisper base (about 57 MiB) as well as Whisper tiny (about 31 MiB). Settings and the readiness row name the model and its size, and when you switch, the old model keeps working until the new one has downloaded and passed its checksum.
- You can pick the audio track when a video has more than one, which matters on YouTube now that many uploads carry auto-dubbed tracks. Next to the download type there's an audio picker with Automatic, Original and every language the link offers once it's been looked up. A subscription and a site profile (AudioLanguage) can set a language too, and the local API takes it as audioLanguage. A code the API can't read gets a 400 instead of quietly turning into Automatic. If the track you asked for isn't there, Astra downloads the default one instead and the download card says so. History records both the language you asked for and the one you got.
- Astra now follows Windows contrast themes. Turn one on, or switch between them, and the window picks up the system colors right away without a restart. Focus, selection, disabled controls and status bars all stay easy to tell apart.
Changed
- An ETA that can't be estimated reads "ETA unknown" on the download card, and the Uptime stat says "Off" while the local API is stopped. Both used to show dashes.
- Settings writes every time unit the same way. The live-video retry interval said "seconds" while the subtitle pause beside it said "s", and both now use "s" like the "min" and "MB" fields do.
npm run checkcollects the Python suite once instead of twice. The README test count is now checked against the suite run itself.- The check behind
npm run checknow fails if the Python suite gate is narrowed with a flag like-k,--ignoreor-x, and names the flag it found. - The playlist review now calls every row a video, from the checkboxes to the confirmation, and the subscription archive calls every row an item, in English and German.
Fixed
- Two GUI tests that sometimes failed on a busy machine now drive their Qt timers by hand, so the progress-coalescing and History search checks no longer depend on how fast the machine is.
- The instance listener test waits for the listener to say it has bound and has rejected the untokened command, instead of waiting a fixed few seconds, so a slow machine no longer fails it.
- Kick VODs download again. Kick moved its video API back, so the playback route Astra used for them stopped answering, and every VOD failed with "no video with this id". When that route has nothing, Astra now hands the link to yt-dlp, which handles Kick VODs again.
- When a site asked the queue to slow down, two downloads finishing at the same moment could each start a wake-up timer, and the extra one kept running after the app shut down. The queue now keeps exactly one and closing the app stops it.
- Closing the app now stops the background queue saver as soon as the last queue snapshot is on disk, instead of leaving it idling for a couple of seconds.
- The FFmpeg check on the Download page no longer says the transcription filter is missing on current FFmpeg builds. Newer FFmpeg prints its filter list in a slightly different shape, and the check misread every filter as absent, so working installs showed a repair warning they did not need. The local API's readiness summary now also says plainly that it's advice and never stops a download.
- Importing a settings file whose format version is
trueinstead of a number is now refused, the same way the app already treats its own config file. - The README test-count check skips cleanly on a Windows machine with no Python installed, where the Store's
pythonshortcut used to make it fail. - The sign-in and site notes on the Sites page, and the note shown with a site's failure, now appear in German instead of staying in English.
- When a pasted link is rejected, the German interface now gives the reason in German too, instead of a German sentence that ended in English.
- Keyboard users can now see when a scrolling list has focus, and the highlighted choice in an open drop-down gets a clear accent bar in both themes.
- Screen readers now announce tray notifications, such as a finished or failed download while the window is minimized, the same way they announce status messages in the window.
- Three tests that drive PowerShell (the delayed install folder removal, the taskbar shortcut identity and the update helper parse check) no longer fail on a busy machine just because PowerShell took a while to start. They now wait for the result they check, and only give up after five minutes of nothing.
- The local API answers requests sent to the IPv6 loopback address (
[::1]) again. The release's web library refused them as an invalid host, and every other host is still turned away exactly as before. - A status message that changes from a plain hint to a warning or error now gets its proper spacing. Before, the colored bar beside it could cover the first letter.
- The PO provider check on the Download page now shows its German name in the German interface. SABR stays as it is, since it's the name of a YouTube streaming format.