/youtube-dl-wpf

A simple GUI wrapper for https://github.com/ytdl-org/youtube-dl.

Primary LanguageC#GNU General Public License v3.0GPL-3.0

🎞⬇ Cube YouTube Downloader - youtube-dl-wpf

A simple GUI wrapper for youtube-dl. A ported cross-platform version is available as youtube-dl-avalonia.

Light Mode Dark Mode

Features

  • Toggle between 🎨 system color mode, 🌃 dark mode, and 🔆 light mode.
  • Update youtube-dl on startup.
  • List available formats.
  • Override video and audio formats.
  • Toggle metadata embedding.
  • Toggle thumbnail and subtitles embedding.
  • Toggle downloading a single video or the whole playlist.
  • Custom download path.
  • Custom ffmpeg and youtube-dl path.
  • Custom proxy support.

Usage

  1. Download the pre-built binary or build it from source.
  2. Download youtube-dl from the upstream. Optionally but recommended, get ffmpeg either by building from source or downloading pre-built binaries for Windows.
  3. Make sure you have .NET Core 3.1 Runtime installed to run our app. The upstream youtube-dl binary requires MSVC++ 2010 runtime.
  4. Run youtube-dl-wpf.exe. Open the left drawer and go to Settings. Set the path to youtube-dl and ffmpeg.
  5. Go back to the home tab. Paste a URL and start downloading! 🚀

F.A.Q.

  • 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 embed any downloader in it. You have to download youtube-dl from the upstream. The ffmpeg binary is required by youtube-dl when downloading and merging separate video and audio tracks, which is the case for any video resolution higher than 360p.

  • Q: Why can't I specify custom container and custom format at the same time?

  • A: Currently youtube-dl's format matching algorithm doesn't handle this very well. And I don't want to see workarounds for it in my code. So it is blocked intentionally to prevent issues.

  • 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.

  • 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.

Known Issues

  • 🎉 No known issues!

To-Do

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

Build

  • IDE: Visual Studio 2019
  • Language: C# 8.0
  • SDK: .NET Core 3.1

Build Steps

  1. Clone the repository recursively.
$ git clone --recursive https://github.com/database64128/youtube-dl-wpf.git
  1. Open the repository in VS2019, switch to the Release configuration, and build the solution.

License

youtube-dl-wpf is licensed under GPLv3.

youtube-dl is licensed under The Unlicense.

Material Design Themes is licensed under MIT.

PeanutButter.TinyEventAggregator is licensed under BSD-3-Clause License.

Roboto Mono is licensed under the Apache License, Version 2.0.