Skip to content

A simple GUI wrapper for youtube-dl and yt-dlp.

License

Notifications You must be signed in to change notification settings

mqt635/youtube-dl-wpf

 
 

Repository files navigation

🎞⬇ Cube YouTube Downloader - youtube-dl-wpf

Build Release

A simple GUI wrapper for youtube-dl and yt-dlp.

Home Settings

Features

  • Follow 🎨 system color mode, or choose between 🌃 dark mode and 🔆 light mode.
  • Update youtube-dl/yt-dlp on startup.
  • List all available formats.
  • Override video, audio formats and output container.
  • Embed metadata into downloaded file.
  • Download and embed thumbnails.
  • Download playlists.
  • Select types of subtitles (default, all languages, auto-generated) to download and embed.
  • Specify custom download filename template.
  • Specify custom download path.
  • Specify custom ffmpeg path.
  • Specify custom proxy.
  • Specify custom command-line arguments.

Usage

  1. Download the pre-built binary or build it from source.
  2. Download youtube-dl or yt-dlp from the upstream. Optionally but recommended, get ffmpeg either by building from source or downloading pre-built binaries for Windows.
  3. The framework-dependent binary requires an installed .NET 6 Runtime to run. Alternatively, download the self-contained binary that bundles the runtime. The upstream youtube-dl binary requires MSVC++ 2010 x86 runtime.
  4. Run youtube-dl-wpf.exe. Go to Settings. Set the path to youtube-dl/yt-dlp and ffmpeg.
  5. Go back to the home tab. Paste a video URL and start downloading! 🚀

FAQ

  1. Q: The Download button is grayed out and I can't click it!

    A: youtube-dl-wpf is a simple GUI wrapper. It doesn't bundle any downloader with it. You have to download youtube-dl/yt-dlp from the upstream. The ffmpeg binary is required by youtube-dl/yt-dlp when downloading and merging separate video and audio tracks, which is the case for any video resolution higher than 360p on YouTube.

  2. Q: How can I use a proxy to download?

    A: Leave the proxy field empty to use system proxy settings. Otherwise the format is similar to how curl accepts proxy strings. Examples are, socks5://localhost:1080/, http://localhost:8080/. Currently the upstream doesn't accept socks5h protocol and treat socks5 as socks5h by always resolving the hostname using the proxy. This is tracked in this issue.

  3. Q: Downloading the whole playlist doesn't work!

    A: It's an upstream bug, just like many other issues you might discover. There's nothing I can do. Just report the bug to the upstream.

  4. Q: youtube-dl and yt-dlp behave differently!

    A: In some cases, yes, and youtube-dl-wpf tries to align their behavior by sending different options and arguments for different backends. See the backends documentation for more information.

Known Issues

  • 🎉 No known issues!

To-Do

  • v2.0 - The Parallel Update: download management and download queue for parallel downloads.

Build

Prerequisites: .NET 6 SDK

Note for packagers: The application by default uses executable directory as config directory. To use user's config directory, define the constant PACKAGED when building.

Build with Release configuration

dotnet build -c Release

Publish as framework-dependent

dotnet publish YoutubeDl.Wpf -c Release

Publish as self-contained for Windows x64

dotnet publish YoutubeDl.Wpf -c Release -r win-x64 --self-contained

Publish as self-contained for packaging on Windows x64

dotnet publish YoutubeDl.Wpf -c Release -p:DefineConstants=PACKAGED -r win-x64 --self-contained

License

© 2022 database64128

About

A simple GUI wrapper for youtube-dl and yt-dlp.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%