- Fix progress template: remove spurious stderr: prefix and switch to
_percent_str/_speed_str/_eta_str keys (progress.percent outputs NA
for HLS streams with unknown total size)
- Update progress regex to match new template format:
DLPROG| 45.2%| 1.05MiB/s|00:45
- Fix context cancellation bug: clearActiveJob was cancelling dlCtx
before handleDownloadCompletion could send the document
- Update progress test cases to match new template output format
- Fix handleBackStep to redirect to download prompt when step state is nil
(previously silent no-op after container selection cleared the state)
- Improve formatLabel for audio-only entries without bitrate: use ID + extension
instead of generic 'audio', fixing duplicate entries in format list
- Add yt-dlp --progress-template for reliable JSON progress parsing across all
sites (fixes 0.0% progress on sites like xnxx.com where [download] lines
are absent); keep regex parser as fallback for older yt-dlp versions
- Add file size pre-check in handleContainerSelection before download starts
(previously checked only after download completed, wasting bandwidth)
- Clear stale active jobs and step state on /start for a clean slate
Telegram bot for downloading media from any site using yt-dlp.
Supports audio/video/both, quality selection, language picker,
container format selection, playlist pagination, progress updates,
per-user quotas, user preferences, download history, cancel at any step,
polling and webhook modes, proxy support, and SQLite persistence.