dlpdrop
v0.2.0
Published
A terminal tool for downloading video and audio via yt-dlp and ffmpeg. Made by The Octopus.
Maintainers
Readme
🐙 DlpDrop
A terminal tool for downloading video and audio from any site yt-dlp
supports, in full quality with automatic merging via ffmpeg. Made by
The Octopus.
$ npx dlpdrop
(DlpDrop mark)
┌ DlpDrop
│ Files are saved to ~/Downloads/dlpdrop by default.
◆ Paste a video linkRunning it
npx dlpdropOr install it permanently:
npm install -g dlpdrop
dlpdropNothing to install by hand: on the first link, the program checks for
yt-dlp and ffmpeg automatically, and asks before downloading them if
they're missing or outdated.
How it works
- Paste a video or playlist link.
- Choose video or audio-only, and a quality.
- The download starts with a live progress bar showing speed, size, and time remaining.
- The file is saved into a dlpdrop folder inside your Downloads folder.
A full playlist? Every video downloads one at a time, and if one fails the rest continue — the result is a report of what succeeded and what didn't.
Why a terminal tool, not a website
An earlier version of this project was a website that talked to a local
engine over HTTP. A whole layer of complexity — a server, a protocol, CORS,
reconnection — existed only because the interface and the logic ran as two
separate processes. Since both already run on the user's own machine, none
of that is needed: one process, working directly with the files and with
yt-dlp.
Structure
src/
cli.ts entry point and the interactive loop
ui/
banner.ts visual identity (mark, colours, progress bar)
session.ts one request's flow: link → options → download
engine/
binaries.ts checks for yt-dlp and ffmpeg
fetch-binaries.ts downloads them automatically when needed
doctor.ts bridges the check and the download prompt
inspect.ts pulls video/playlist metadata
download.ts builds yt-dlp commands, runs them, parses progress
config.ts system paths (download folder, state)
log.ts file logging, silent in the terminal during progress
shared/
errors.ts every error code and its message
protocol.ts shared types (format, download request, progress event)
url.ts link validation and filename sanitising
format.ts size/duration/speed formattingDevelopment
npm install
npm run dev # run directly, no build
npm run typecheck # type check
npm run build # single bundle ready to publish (dist/cli.mjs)Changelog
See CHANGELOG.md for what changed in each release.
License
All rights reserved — see LICENSE.
