Toru: 直接从命令行即时流式传输种子
Toru是为动漫爱好者设计的命令行工具。通过Toru的直观界面浏览nyaa.si上的最新发布或搜索特定标题。使用MPV或您喜欢的视频播放器或浏览器直接从命令行流式传输剧集。 Toru通过localhost提供所选动漫,使其像任何HTTP链接一样易于访问。它还可以作为磁力链接的便捷种子客户端。使用Toru简化您的流媒体和种子下载体验。
https://github.com/sweetbbak/toru/assets/75046310/4a2a8c2e-3a11-4771-b79e-66e4de77a8b8
目录
- 安装
- 使用示例
- [贡献指南](https://github.com/sweetbbak/toru/blob/main/./CONTRIBUTING.md
- [免责声明](https://github.com/sweetbbak/toru/blob/main/./disclaimer.md
安装
快速安装预编译二进制文件
export PREFIX="$HOME/bin"
wget "https://github.com/sweetbbak/toru/releases/download/v0.1/toru_$(uname -s)_$(uname -m).tar.gz" -O - | tar -xz
mv toru "${PREFIX}"
在Windows上
iwr -Uri "https://github.com/sweetbbak/toru/releases/download/v0.1/toru_Windows_x86_64.zip" -OutFile toru_Windows_x86_64.zip
使用Nix
nix profile install github:sweetbbak/toru
安装Go
安装go 该项目需要go 1.21.7或更高版本。go install github.com/sweetbbak/toru/cmd/toru@latest
从源代码构建
建议使用Go并配合gup
,以便轻松更新
git clone https://github.com/sweetbbak/toru.git && cd toru
go build -o toru ./cmd/toru
您也可以使用justfile
git clone https://github.com/sweetbbak/toru.git && cd toru
just
或使用makefile
git clone https://github.com/sweetbbak/toru.git && cd toru
make build
在非nixOS发行版上使用docker
、podman
和shell.nix
文件
这将自动拉取正确版本的Go并安装just
,使构建变得简单。
git clone https://github.com/sweetbbak/toru.git && cd toru
# 将项目目录挂载到容器内
podman run --volume $(pwd):/toru -ti docker.io/nixos/nix:latest
# 在容器内运行:
cd /toru
nix-shell
just
为不同平台和架构构建
运行以下命令查找目标架构和平台:
go tool dist list
然后在使用构建命令之前使用环境变量GOOS
和GOARCH
。
示例:
GOOS=linux GOARCH=arm64 go build -o toru ./cmd/toru
如果您这样做,请随时为平台创建一个问题,报告构建情况 到目前为止,Android和Termux以及arm 6存在问题。
如果您使用nix或已安装nix,可以直接使用shell.nix并运行just
或make
示例
搜索动漫:
toru search -j "one piece" # 输出json
toru search -i "one piece" # 使用fzf交互式搜索
所选种子将开始播放,视频播放器关闭后, 您将有选择另一集、进行新的搜索查询或退出的选项。
查看 nyaa.si上最新的动漫,在交互式fzf会话中
toru search --latest
搜索特定关键词或系列
toru search "Akuyaku"
如果您知道内容的磁力链接,可以直接下载或流式传输
toru stream --magnet 'magnet:?xt=urn:btih:1...announce'
toru download --magnet 'magnet:?xt=urn:btih:1...announce'
以上所有操作都会输出一个可用于流式传输种子的链接 'http://localhost:8080/stream?ep=torrent_info_hash'
您可以像处理任何其他http链接一样使用此链接,用mpv
或vlc
进行流式传输,下载它,使用yt-dlp
,或在浏览器中打开等...
使用代理Nyaa站点
这对于绕过地理限制和浏览"特殊"Nyaa站点很有帮助
toru search --proxy="https://sukebei.nyaa.si" -i
toru search --proxy="https://nyaa.ink.iss" -i
处理输入和输出
您可以使用toru搜索动漫和其他媒体类型,然后以多种格式输出结果。
以Json格式输出并使用jq
解析输出:
toru search --latest --json | jq -r '.[]|.Name,.Magnet'
从json文件打开缓存的搜索会话
toru search --json "one piece" > cache.json
toru search --from-json cache.json --interactive
以人类可读格式输出:
toru search "akuyaku 99 1080p"
# 输出:
[Erai-raws] Akuyaku Reijou Level 99 - 01 [1080p][Multiple Subtitle] [ENG][POR-BR][SPA-LA][SPA][ARA][FRE][GER][ITA][RUS]
2024-01-09 07:36:29
下载次数:1203
[33|0]
大小:727 MB
magnet:... [ 此处为磁力链接 ]
使用toru创建您自己的CLI工具
# 使用toru创建JSON文件
toru search --latest --json > out.json
# 这是一个使用fzf和toru创建简单界面来选择和播放种子的示例
# 您也可以用任何CLI种子客户端替换toru
cat out.json | jq '.[].Name' | \
fzf --preview='cat out.json | jq -r ".[{n}]"' \
--bind "enter:become(cat out.json | jq -r '.[{n}].Magnet')" | \
xargs toru stream --magnet
Shell补全
ZSH
安装bash补全
-
将
completions
目录中的_toru
文件复制到您的$FPATH
中 -
使用
echo $FPATH | sed "s/:/\n/g"
查看$FPATH
中的目录列表 -
在交互式 shell 中运行此命令或将其添加到
.zshrc
文件中
source <(toru init --zsh)
BASH
安装 bash 补全
-
将
completions
目录中的_toru_bash
文件放入你的补全路径 -
在交互式 shell 中运行此命令或将其添加到
.bashrc
文件中
source <(toru init --bash)
[!重要]
toru 目前处于早期开发阶段!为了提供一致和流畅的体验, CLI 界面可能会发生变化。非常欢迎关于项目结构、包组织和 toru 用户界面的 PR、建议和反馈。目前在 Linux、Mac 和 Windows 上测试通过 我非常感谢有人能报告在任何 BSD、其他小众设备或架构上的功能情况 Android 上的 termux 目前存在 UDP 问题。我对 Android 的工作原理不太了解
功能
- 从种子流式播放动画
- 添加 Nyaa.si 作为来源
- 为韩国和美国电影添加通用种子追踪器库
- 打包为各种格式(AUR、DEB、Flatpak、AppImage、发布二进制文件)
- 确保跨平台兼容性并致力于保持一致性(应该可以工作,但目前未经测试)
更新日志
2024-05-21
- 添加了 zsh 和 bash 补全
- 支持多文件种子
2024-03-1
- 添加了
--proxy
,允许使用 nyaa 代理站点和 sukebi - 添加了禁用 ipv6 的功能
- 子命令 "run" 现在接受尾随搜索词参数
适合参与的问题
- 为你的发行版添加一个包
- 修复交互式搜索时进度条和 fzf 界面之间的竞态条件
路线图
- 后台守护进程化并在套接字上监听命令(用户可选,有时这很烦人)
- 简单的种子客户端功能(下载|做种|添加磁力链接|流式传输|搜索)
- 除
nyaa.si
外添加其他追踪器 - 使用 bubbletea 扩展用户界面
贡献
Fork 项目!
创建你的功能分支:git checkout -b my-new-feature
提交你的更改:git commit -m '添加一些功能'
推送到分支:git push origin my-new-feature
提交一个拉取请求 🤘
欢迎 PR!本项目目前使用 Golang 1.22.2
请确保使用 gofmt
格式化 go 文件,使用 alejandra
格式化 nix 文件。除非是小改动
或关于拼写错误、自述文件或文档的更改,否则我可能会拒绝直接提交到 main 分支的 PR。
为什么要做这个?
因为抓取非常烦人,而且经常会失效。此外,_有人_在为那些服务器付费。 种子更能抵抗下架,希望能有更长的寿命。
致谢
种子库:
Nyaa 包修改自:
支持
考虑创建 PR、解决 TODO 列表中的小问题、提出问题以帮助改进功能或给我买杯咖啡!