MMohan Vishe
All projects
Self-hostedDockerMediaOpen source fork

MediaHarvest

A video and music downloader that runs on your own computer: every format with its size before you download, audio that really comes out at the bitrate you pick, and downloads that pick up where they stopped.

A pasted YouTube link: the preview shows the video, its video and audio formats, and a Choose format button

What it does

Paste a link and MediaHarvest shows what it is and how many formats it has. All formats lists every stream with its file size, resolution, frame rate, HDR, codec and bitrate, and marks the best and the smallest. Or press Download with your usual settings. YouTube and more than a thousand other sites work, through yt-dlp.

It runs in Docker on your own computer and opens in the browser. By default it answers only on that computer: no accounts, no tracking. The only outside connections go to the site you download from, and to LRCLIB when lyrics are on.

What I added to MeTube

MediaHarvest is a fork of MeTube, the web interface for yt-dlp. These parts are new:

  • A preview card and a format picker. A pasted link shows the video, how many video and audio formats it has, and the size each choice will have before anything downloads.
  • Music at the size you pick. Original keeps the audio exactly as the site serves it. Opus, M4A and MP3 at a chosen bitrate really re-encode to that bitrate, and a source already below it is kept as is. Cover art and title and artist tags go into the file, with optional lyrics from LRCLIB and a timed .lrc file.
  • Subtitles in English by default, written ones or YouTube's automatic ones, embedded as switchable tracks and saved beside the video as .srt.
  • Downloads that carry on by themselves. YouTube's video links expire after about six hours, networks drop and computers restart. A stopped download continues from where it stopped with a fresh link, waiting longer after each failed try, from 15 seconds up to 5 minutes. Tested on a 138-hour video.
  • A disk check before each download, counting the room needed to merge video and audio, about twice the final size.
  • A pinned, checked image. Every program the image downloads is pinned to one version and checked against its SHA-256, and CI scans the image for known vulnerabilities.
  • One-command installers for Windows, Linux and macOS, and a new logo and theme.

How it is built

The backend is MeTube's Python service around yt-dlp and FFmpeg. Everything builds, runs and is tested in Docker, through a dev container. The new features came with their own tests, which run there beside MeTube's. GitHub Actions builds the image for amd64 and arm64 and publishes a new one after each yt-dlp release, so sites keep working.

Source

The repository is private for now; the source is available on request. MediaHarvest is licensed AGPL-3.0, like MeTube, and credits it in its NOTICE file.