Back to projectsFeatured case study

Video Download App

PyQt5 desktop app that makes yt-dlp and FFmpeg downloads approachable for non-terminal workflows.

Context

Built to make a powerful but terminal-heavy media-download stack approachable from a desktop UI, especially for repeated downloads and platform-specific edge cases.

Problem

yt-dlp is powerful, but remembering flags and post-processing steps adds friction when you just want a quick download or conversion.

Solution

A GUI wrapper around yt-dlp with FFmpeg post-processing for conversions, keeping the toolchain explicit and the workflow repeatable.

Key decisions

  • -Exposed installation and update flows for FFmpeg, yt-dlp, and aria2c directly in the app instead of assuming the environment was already configured.
  • -Added pause/resume, logs, and batch input because downloads fail, stall, or expand beyond a single URL in real-world use.
  • -Included platform-specific handling for Twitch, playlists, browser cookies, and client fallback to improve success rate on harder sources.

Screenshots

Video Download App main window showing format and quality selectors
Download view
Settings pane for the Video Download App with output and post-processing options
Settings dialog

Key features

  • -Download video or audio using yt-dlp
  • -Select available format and quality options
  • -FFmpeg post-processing for conversion or remuxing
  • -Desktop workflow for repeatable downloads
  • -Simple configuration and output selection

Results

  • -Turns a CLI-centered media workflow into a fuller desktop product with setup, downloading, and troubleshooting in one place.
  • -Shows practical engineering around third-party tooling, edge cases, and user feedback loops.
  • -Makes the project stronger than a thin yt-dlp wrapper by covering installation, retries, and platform quirks.

Stack

PythonPyQt5yt-dlpFFmpeg

Links