ytfinall v1.0.0
First tagged release. ytfinall is a self-hosted YouTube → Jellyfin downloader with per-user libraries, a web UI, and a companion browser extension.
Features
Multi-user
- Every Jellyfin user gets their own isolated library, sources, and retention rules
- First user to log in becomes admin
- Admin-set caps on lookback days and max retention
- Per-user storage stats in the admin panel
Downloads
- yt-dlp backend with configurable resolution, container format, sleep intervals, and extra flags
- Channels, playlists, or single videos
- One-off video support with no date filter
- Rate-limit-friendly pacing with Deno-based JS challenge handling
- Archive-based skip, automatic retries, background scheduling
Jellyfin integration
- Auto-creates a Jellyfin library per user on first login
- Channel avatars downloaded as
poster.jpg - Channel names written as
tvshow.nfo(clean display name) - Episode NFOs generated from
.info.jsonwith description trimming - Jellyfin metadata writer disabled so NFOs are never overwritten
sYYYYeMMDDfilename pattern matches Jellyfin's parser
Web UI
- Mobile-responsive layout
- Live log viewer in admin settings
- Live progress bars for active downloads
- Cookie upload for age-restricted content
- Admin controls: clear archive, retrigger scans, per-user stats
Browser extension
- Microsoft Edge Add-ons: https://microsoftedge.microsoft.com/addons/detail/ytfinall-connector/hdfpngaekagheekoajkjhdjoomppmlhj
- Firefox Add-ons (AMO): pending review
- Chrome Web Store: not available due to download policy — manual install instructions in the README
Installation
git clone https://github.com/jnracreates/ytfinall.git
cd ytfinall
cp .env.example .env
nano .env # set MEDIA_PATH, APP_DATA_PATH, CONFIG_PATH, JELLYFIN_CONFIG_PATH
docker compose up -d