YouTube Downloader
You paste a YouTube link. RuForge downloads the file and plays it locally. There is no in-app YouTube player.
The downloader tab is built around the URL bar. Paste, drop a link, or copy a watch URL elsewhere and paste when you focus the bar. extractYouTubeUrlFromText in youtubeUrl.ts pulls the first valid watch or playlist URL out of messy clipboard text (tracking params stripped, playlist preferred when list= is present).
Single videos go straight to metadata fetch. Playlist URLs expand first: get_video_info returns isPlaylist plus playlistItems, then buildPlaylistEnqueuePlan in useDownloaderView.ts builds one row per video with per-item audio toggles, duplicate badges, and a numbered output folder name before anything hits the queue.
After download, YouTube is out of the loop. scan_gallery reads .info.json sidecars for title, id, chapters, and playlist_index. The player loads the file from disk via convertFileSrc. Media stack cards group playlist folders so you browse a batch like a stack, not a flat pile of files.
Age-restricted or members-only videos need cookies. Settings → Downloads exposes a cookie file path and optional browser profile string. The Explorer tab (child webview) is there to log in on youtube.com when you do not already have a cookie export. yt-dlp gets the same cookie args on simulate and on actual download.
In the repo
Where it shows up
-
youtubeUrl.tsfor parse, canonical URLs, and clipboard extraction -
useDownloaderView.tsfor hero metadata, playlist plan, and enqueue -
DownloaderView.tsxfor the URL bar UI, duplicate banner, and Download button -
.info.jsonsidecars written by yt-dlp; read back ingallery.rs