Repository navigation
Releases
Releases · amornnan19/yank
v0.1.1
v0.1.1-rc.1
yank v0.1.0
The first tagged release of yank, a terminal UI for downloading video with yt-dlp. Paste a URL, pick a format from a short list, watch a progress bar, get the path of the file that landed on disk.
Website: https://yank.ghostshift.tech/
Install
Requires Go 1.27.1 or newer.
go install github.com/amornnan19/yank/cmd/yank@v0.1.0
What's in it
- A short picker. A full yt-dlp extraction can list a hundred-odd formats; yank shows at most seven rows — up to six video heights and one mp3 row — preferring avc1/h264 unless vp9/av01 is at least 25% smaller. Without ffmpeg you get fewer rows, and the picker says why.
- yt-dlp fetched and kept current for you. A yt-dlp on your
PATHis used as is and never touched. Otherwise yank downloads the release asset, verifies it against the release'sSHA2-256SUMS, prefers the small zipapp when Python 3.10+ is available, and checks for a newer release once a day in the background. A new copy is verified and probed before it is used, and switched in only when no other yank is running the old one.yank --updateupdates immediately;YANK_NO_UPDATE=1turns the background check off (#3, #16, #18, #19, #26, #27). - Progress, then a path. A smoothed progress bar with phase lines for merging and converting, cancellation with esc that cleans up partial files, and a done screen that says where the file landed — or that it was already there and nothing was downloaded (#6, #20).
- Motion, within the terminal's own palette. A wordmark intro, site badge and yank-out on the input screen; bar shine, speed sparkline and title marquee while downloading; check pop, border trace and confetti when done.
NO_COLOR,YANK_NO_MOTIONor a small terminal give static screens (#17, #21, #22, #23). - Centred screens in any terminal size, with text measured per grapheme cluster so emoji, CJK and Indic titles never overflow (#24, #25).
- Careful failure handling. A timeout, cancel or OS refusal is never treated as proof a cached file is bad, a download that times out says so instead of looking cancelled, and exit codes stay meaningful for scripts (#8, #18, #28).
Platforms
Built and tested on macOS and Linux (CI runs both). Windows builds, but is not tested.
Full plan and design decisions: #1.