pablostanley/yoinks
GitHub: pablostanley/yoinks
yoinks 是一个基于终端的视频下载 CLI 工具,让用户无需浏览器即可从 1800 多个网站干净利落地下载视频或提取音频。
Stars: 864 | Forks: 93
# yoinks
yoink 任何视频。粘贴。yoink。搞定。
从 YouTube、X/Twitter、Instagram、Threads、TikTok 以及其他 1,800 多个网站下载视频——直接在你的终端中完成。粘贴一个 url,选择分辨率(或仅音频的 mp3),搞定。没有弹窗,没有虚假的下载按钮,没有可疑的重定向。
## 安装
```
npm install -g yoinks
```
或者在不安装任何东西的情况下试用:
```
npx yoinks
```
需要 Node 18+。其他所有内容(yt-dlp、ffmpeg)都会自动获取或打包。
## 用法
```
$ yoinks https://youtu.be/dQw4w9WgXcQ # straight to the format picker
$ yoinks # prompts for a url
$ yoinks --theme light # force the light palette
```
yoinks 会接管终端(全屏、居中——并在退出时恢复你的滚动历史)。使用 ↑/↓(或 j/k,或数字键)选择格式,然后按回车键。`esc` 返回,`^c` 退出。或者直接使用鼠标——yoink 按钮、格式列表和底部提示都是可点击的,点击 logo 会带你回到主页。文件会保存到 `~/Downloads`,完成后文件路径会打印到你的终端中。
默认的 `auto` 主题使用你终端自带的前景和背景色,因此它无需猜测即可适应明暗终端主题。按 `^t` 或点击底部的主题控件可在当前会话的 `auto`、`light` 和 `dark` 之间切换。使用 `--theme auto`、`--theme light` 或 `--theme dark` 可选择单次启动的初始主题。
## 工作原理
- 由 [yt-dlp](https://github.com/yt-dlp/yt-dlp) 提供支持。首次运行时,yoinks 会将独立的 yt-dlp 二进制文件下载到 `~/.yoinks/bin` ——无需 Python。如果你已经安装了 yt-dlp,它会使用你现有的。
- ffmpeg(用于合并高分辨率流和提取 mp3)会在你的 PATH 中查找,并以 `ffmpeg-static` 作为打包的备用方案。
- UI 采用 [Ink](https://github.com/vadimdemedes/ink)——用于终端的 React。
## 开发
```
npm install
npm run build # bundle to dist/ with tsup
npm run dev # rebuild on change
node dist/cli.js
npm run typecheck
```
要在不发布的情况下将其作为全局命令试用:`npm link`,然后在任何地方运行 `yoinks`。
## 路线图
- [ ] `--best` / `--mp3` 标志以跳过选择器(可脚本化模式)
- [ ] `-o ` 用于选择输出文件夹
- [ ] 播放列表 / 包含多个视频的帖子支持
- [ ] 剪贴板检测:直接启动并自动建议你复制的 url
- [ ] 打包的 yt-dlp 二进制文件自更新(`yt-dlp -U`)
- [x] 发布到 npm(`npm i -g yoinks` / `npx yoinks`)
- [ ] `curl yoinks.sh | sh` 安装程序
## 关于合理使用的说明
yoinks 是一款个人归档工具。下载内容可能违反平台的服务条款——请仅下载你有权保留的内容,并尊重创作者。
## 许可证
[MIT](LICENSE)
## 安装
```
npm install -g yoinks
```
或者在不安装任何东西的情况下试用:
```
npx yoinks
```
需要 Node 18+。其他所有内容(yt-dlp、ffmpeg)都会自动获取或打包。
## 用法
```
$ yoinks https://youtu.be/dQw4w9WgXcQ # straight to the format picker
$ yoinks # prompts for a url
$ yoinks --theme light # force the light palette
```
yoinks 会接管终端(全屏、居中——并在退出时恢复你的滚动历史)。使用 ↑/↓(或 j/k,或数字键)选择格式,然后按回车键。`esc` 返回,`^c` 退出。或者直接使用鼠标——yoink 按钮、格式列表和底部提示都是可点击的,点击 logo 会带你回到主页。文件会保存到 `~/Downloads`,完成后文件路径会打印到你的终端中。
默认的 `auto` 主题使用你终端自带的前景和背景色,因此它无需猜测即可适应明暗终端主题。按 `^t` 或点击底部的主题控件可在当前会话的 `auto`、`light` 和 `dark` 之间切换。使用 `--theme auto`、`--theme light` 或 `--theme dark` 可选择单次启动的初始主题。
## 工作原理
- 由 [yt-dlp](https://github.com/yt-dlp/yt-dlp) 提供支持。首次运行时,yoinks 会将独立的 yt-dlp 二进制文件下载到 `~/.yoinks/bin` ——无需 Python。如果你已经安装了 yt-dlp,它会使用你现有的。
- ffmpeg(用于合并高分辨率流和提取 mp3)会在你的 PATH 中查找,并以 `ffmpeg-static` 作为打包的备用方案。
- UI 采用 [Ink](https://github.com/vadimdemedes/ink)——用于终端的 React。
## 开发
```
npm install
npm run build # bundle to dist/ with tsup
npm run dev # rebuild on change
node dist/cli.js 标签:GNU通用公共许可证, MITM代理, Node.js, yt-dlp, 前端交互, 自动化攻击, 视频下载