How bariskisir/videodownloader works
VideoDownloader is a WPF desktop app for fetching video formats and downloading media from YouTube, Twitch, and Kick. The main workflow takes URLs through platform selection and metadata lookup, then adds downloads to a controllable queue and reports progress. It also supports batch URLs and remembers the download folder. Platform adapters use yt-dlp/FFmpeg through YoutubeDLSharp. The README describes the user-facing capabilities; some UI bindings and ViewModel methods are not included in the sampled source, so their detailed wiring is not shown.
Main entry points: MainViewModel.cs Main view model · PlatformFactory.cs Platform factory · MainWindow.xaml Main window · IVideoPlatform.cs Video metadata
Components 17
Desktop UI
- Main window
src/VideoDownloader/MainWindow.xaml
Download workflow
- Main view model
src/VideoDownloader/ViewModels/MainViewModel.cs - URL input
src/VideoDownloader/ViewModels/MainViewModel.cs - Video metadata
src/VideoDownloader/Services/IVideoPlatform.cs - Format choices
src/VideoDownloader/Models/VideoResolution.cs - Download queue
src/VideoDownloader/ViewModels/MainViewModel.cs - Download progress
src/VideoDownloader/Services/IVideoPlatform.cs
Platform adapters
- Platform factory
src/VideoDownloader/Services/PlatformFactory.cs - YouTube adapter
src/VideoDownloader/Services/YoutubePlatform.cs - Twitch adapter
src/VideoDownloader/Services/TwitchPlatform.cs - Kick adapter
src/VideoDownloader/Services/KickPlatform.cs - yt-dlp / FFmpeg
App state
- Download item
src/VideoDownloader/Models/DownloadItem.cs - Download folder
src/VideoDownloader/ViewModels/MainViewModel.cs - Folder config
src/VideoDownloader/Models/AppConfig.cs
Other components
- User
- config.json
Connections 20
- User → Main window: uses
- Main window → Main view model: binds to
- Main view model → URL input: accepts URLs
- Main view model → Platform factory: selects platform
- Platform factory → YouTube adapter: routes URLs
- Platform factory → Twitch adapter: routes URLs
- Platform factory → Kick adapter: routes URLs
- Main view model → Video metadata: requests info
- YouTube adapter → yt-dlp / FFmpeg: fetches / downloads
- Twitch adapter → yt-dlp / FFmpeg: fetches / downloads
- Kick adapter → yt-dlp / FFmpeg: fetches / downloads
- Video metadata → Format choices: returns formats
- Main view model → Download queue: adds downloads
- Download queue → Download item: holds items
- Main view model → Download item: starts / pauses
- Main view model → Download progress: reports updates
- Main view model → Platform factory: gets downloader
- Main view model → Download folder: sets destination
- Main view model → Folder config: serializes settings
- Main view model → config.json: reads / writes