首页 / 资讯中心 / 文章详情

ani-cli 终端追番工具完全指南:安装、配置、命令行与环境变量全解析

ani-cli 终端追番工具完全指南:安装、配置、命令行与环境变量全解析 ★ FEATURED ARTICLE
视频开发工具【免费下载链接】ani-cliA cli tool to browse and play anime项目地址https://gitcode.com/gh_mirrors/an/ani-cli点击查看免费下载ani-cli 是一个用纯 POSIX Shell 编写的命令行动漫浏览与播放工具只需一条命令即可在终端中搜索、点播和下载动漫。本篇技术指南以仓库 README.md 为主体骨架结合 ani-cli 主脚本源码与 ani-cli.1 手册页系统讲解从安装、卸载、依赖到命令行选项、环境变量配置与底层抓取原理的完整实战知识。读完本文你将能够在 Linux、macOS、Windows、Android、iOS 等平台快速部署 ani-cli掌握全部命令行参数与 13 个环境变量的含义并理解它如何从搜索词一路解析出可播放的 m3u8 视频流。项目概览一个脚本打天下的终端播放器ani-cli 的核心定位是A cli to browse and watch anime (alone AND with friends)——既可以独自观看也可以通过 Syncplay 与朋友一起同步观看。整个程序是一个约 670 行的单文件 POSIX shell 脚本见 ani-cli当前仓库内版本号为5.1.4ani-cli它抓取的数据源是 hianime 站点。这个项目的设计哲学非常鲜明零运行时依赖链的复杂度一切交给系统已有的命令行工具。它把 grep、sed、curl、fzf、mpv 等工具组合成一个完整的搜索 → 选择 → 播放流水线没有图形界面没有配置文件语法所有行为通过命令行参数和环境变量控制。从 hacking.md 可以确认项目刻意只支持单一数据源hianime但由于抓取逻辑与 UI、历史记录系统解耦任何遵循相同约定的站点都可以通过修改几个函数接入。核心工作原理从搜索词到播放地址的抓取链路ani-cli 的抓取过程在 hacking.md 中有完整流程图.assets/ani-cli-scraping-flow.png从源码角度看一条查询最终变成可播放视频流需要经历五个步骤搜索向站点搜索页发起请求从 HTML 响应中用 sed 正则提取id\t名称格式的候选列表hianime_searchani-cli选番用户通过 fzf 等菜单工具选择一部动漫选集数请求该动漫的剧集列表页提取id\t集数映射hianime_episodesani-cli解析播放器请求服务器列表 API 拿到嵌入播放器地址再解析出各清晰度对应的 m3u8 直链hianime_m3u8ani-cli选清晰度并播放根据质量设置从链接列表中挑出一条交给播放器几个值得注意的底层细节API 端点集中定义主脚本在 setup 段定义了base_apihttps://hianime.at、search_api、episodes_api、servers_api四个模板ani-cli所有抓取请求都走统一的hianime_curl封装ani-cli它负责携带浏览器 User-Agent、处理 HTTP 状态码并识别 Cloudflare 拦截页。反混淆逻辑hianime 的嵌入页把配置以base64(JSON XOR otaku-embed-v1)的形式下发deobfuscate_blob函数ani-cli在子 shell 中用位置参数轮转密钥字节完成异或还原再从中提取 m3u8 主播放列表、默认字幕链接和 MAL ID供 ani-skip 使用。质量筛选select_qualityani-cli支持best、worst和具体分辨率如1080三种匹配模式找不到指定清晰度时会回退到 best。Cloudflare 回退链脚本默认按curl_firefox135 → curl_chrome136 → curl_chrome116 → curl_ff117 → curl的顺序探测可用的 curl 变体ani-cli这也是下文错误修复一节中 curl-impersonate 的用武之地。常见错误与修复README 提供了两条排障路径均值得完整掌握1. Cloudflare 拦截如果运行时提示Blocked by cloudflare. Try installing curl-impersonate说明你的 curl 请求被目标站点的人机校验拦截。优先通过各自系统的包管理器安装curl-impersonate若包管理器没有提供可以按 README 的方式手动下载二进制并解压到系统目录curl -LO https://github.com/lwthiker/curl-impersonate/releases/download/v0.6.1/curl-impersonate-v0.6.1.x86_64-linux-gnu.tar.gz sudo tar xf curl-impersonate-v0.6.1.x86_64-linux-gnu.tar.gz -C /usr/local/bin2. 其他异常务必先确认当前处于最新版本。Linux、macOS、Android 上执行sudo ani-cli -U自更新Windows 上执行ani-cli -U无需 sudo。-U的实现机制是拉取远端脚本、与本地做diff后交给patch应用差异update_script函数ani-cli这也是patch被列为依赖的原因。更新后问题依旧再去开 issue 反馈。安装指南依赖清单在动手安装前先了解 ani-cli 的完整依赖及各自职责README Dependencies 一节依赖作用grep / sed响应文本的提取与清洗抓取管线的核心curl发起全部 HTTP 请求mpv默认视频播放器Linux/桌面端iinamacOS 上 mpv 的替代播放器yt-dlpm3u8 下载器下载功能首选ffmpegm3u8 下载回退方案fzf交互式选择菜单搜索、选番、选集ani-skip可选自动跳过动漫片头patch自更新-U功能所需Tier 1 支持Linux、macOS、Android这三个平台被维护者视为坚如磐石的支持级别也是维护者和大部分用户日常使用的环境。Debian 13/unstable直接使用原生包sudo apt install ani-cliFedora需要先启用 RPM Fusion free安装 mpv/vlc 所需再启用 derisis13/ani-cli 的 copr 仓库sudo dnf copr enable derisis13/ani-cli sudo dnf install ani-cliArch从 AUR 构建安装可选用ani-cli打包版或ani-cli-git跟随主线yay -S ani-cliGentoo从 GURU overlay 安装或使用跟随 master 的 9999 ebuildsudo eselect repository enable guru sudo emaint sync -r guru sudo emerge -a ani-cli # 或使用 9999 ebuild sudo emerge -a app-misc/ani-cli-9999OpenSuse需先启用 Only EssentialsPackman仓库以获得功能完整的 MPV/VLC再添加 ani-cli 的 copr 仓库包为 noarch标签虽为 x86-64 但任何架构均可用zypper addrepo https://download.copr.fedorainfracloud.org/results/derisis13/ani-cli/opensuse-tumbleweed-x86_64/ ani-cli zypper dup zypper install ani-cli过程中若出现Signature verification failed警告可忽略。macOS通过 HomeBrew 安装并推荐使用 IINA 作为播放器macOS 上的 mpv 替代品深度集成 OSX UI对 M1 支持出色brew tap pystardust/ani-cli https://github.com/pystardust/ani-cli.git brew trust pystardust/ani-cli brew install ani-cli brew install --cask iina仓库内的 Formula/ani-cli.rb 即 Homebrew 配方它声明了 ffmpeg、fzf、grep、yt-dlp 依赖并在安装时同时放置可执行文件与手册页man1.install ani-cli.1。Android使用 Termuxpkg up -y pkg install ani-cliAndroid 14 用户需额外安装pkg install termux-am对应上游 issue #1206。播放器可使用 Play 商店/F-Droid 的 mpv 与 vlc APK。需要注意两点README 特别强调流媒体必须携带正确的 referrer 才能播放而 Android 版 mpv 需要从配置文件读取需先执行termux-setup-storage授予存储权限然后在 MPV 设置中进入 Advanced mpv.conf 添加include/storage/emulated/0/mpv/mpv.config.mp4并确保 MPV 与 Termux 都有存储权限。源码中android_mpv播放函数ani-cli正是把 referrer 与字幕写入该配置文件后通过am start拉起 mpv Activity。Android 上的 VLC 无法注入 referrer因此无法播放当前数据源的流。Tier 2 支持Windows、WSL、iOS、Steam Deck、FreeBSD、Ubuntu Touch这些平台官方支持但安装更繁琐。Windowsani-cli 在 scoop 上发行但需要一个可用的 bash 环境。README 给出的标准做法是安装 scoop 与 Windows Terminal再把 Git for Windows 自带的 bash.exe 配成 Windows Terminal 的独立 profile最后在 Git Bash 里完成安装。详细步骤见下文Windows 详细配置一节。WSL直接按你的 Linux 发行版安装说明操作。关键约束是媒体播放器mpv/vlc必须装在 Windows 侧而非 WSL 内上游 issue #1266 有详细论证且播放器要在 Windows PATH 中最稳妥的方式是用 scoop 在 Windows 侧安装。iOS安装 iSH 与 VLC把 iSH 的 apk 源切到 edge 分支并升级工具链然后安装依赖并克隆部署apk add grep sed curl-impersonate bash fzf git ncurses patch ffmpeg git clone --depth 1 https://github.com/pystardust/ani-cli ~/.ani-cli cp ~/.ani-cli/ani-cli /usr/local/bin/ani-cli chmod x /usr/local/bin/ani-cli rm -rf ~/.ani-cliiOS 上的下载功能不要用-d参数改为在 VLC 应用内选择 Download 选项。源码中iSH播放分支ani-cli会在终端打印一个vlc://超链接供点击。Steam DeckREADME 提供了一份可整体粘贴的一键脚本它依次完成创建~/.local/bin并加入 PATH、安装 fzf、安装 yt-dlp下载功能、安装 patch自更新功能、克隆 ani-cli 并复制到~/.local/bin/最后flatpak install io.mpv.Mpv安装播放器。此外还提供了可选的 .desktop 桌面入口让 ani-cli 能从游戏模式直接以 Konsole 全屏方式启动。FreeBSDsudo pkg install mpv fzf yt-dlp patch sudo pkg install git # 若尚未安装 git clone https://github.com/pystardust/ani-cli.git sudo cp ani-cli/ani-cli /usr/local/bin rm -rf ani-cliUbuntu Touch需要通过 Nix 生态安装NixManager GUI 或 crackle CLI一行搞定wget -q -O - https://github.com/tuxecure/crackle/releases/latest/download/upgradefunc| bash -s setup crackle install ani-cli mpv注意 mpv 在 Ubuntu Touch 上运行于桌面模式触屏导航体验一般。从源码安装通用方案适用于任何类 Unix 系统也是各类移植工作的基线git clone https://github.com/pystardust/ani-cli.git sudo cp ani-cli/ani-cli /usr/local/bin rm -rf ani-cli安装后ani-cli即进入 PATH配合上方依赖清单补齐环境即可使用。Windows 详细配置scoop Windows Terminal Git BashWindows 上的安装之所以单独成节是因为它涉及终端环境搭建。README 明确提示Git Bash 自带终端mintty与 fzf 存在兼容问题因此必须使用 Windows Terminal。第一步安装 scoop 包管理器Windows 11 自带 Windows Terminal若没有则用 PowerShell 安装scoop bucket add extras scoop install extras/windows-terminal第二步安装或更新 Gitscoop install git然后确认 Windows Terminal 的新标签下拉菜单中出现 Git Bash 选项下方截图对应 README 中的检查步骤。第三步若没有该选项进入Settings Profiles Add a new profile点击 New empty profile创建新配置用 scoop 安装的 GitName填 Git BashCommand line填%GIT_INSTALL_ROOT%\bin\bash.exe -i -lIcon填%GIT_INSTALL_ROOT%\mingw64\share\git\git-for-windows.ico其他方式安装的 GitCommand line填C:\Program Files\Git\bin\bash.exe -i -lIcon填C:\Program Files\Git\mingw64\share\git\git-for-windows.icoStarting Directory设为%USERPROFILE%并确保Hide profile from dropdown为 Off。第四步在 Windows Terminal 设置的 Startup 页把该 profile 设为默认这样每次打开终端都直接进入 Git Bash。第五步重启 Windows Terminal在 Git Bash 中安装 ani-cli 及其依赖scoop bucket add extras scoop install ani-cli scoop install fzf ffmpeg mpv # 可选下载功能需要 scoop install yt-dlp再次重启后执行ani-cli -U完成更新今后都用它保持最新然后ani-cli -h查看帮助即可开始使用。Windows 已知问题与对策卡在 Search anime:多发生于 mintty 终端fzf 与 mintty 的已知问题。解决办法是用上文 Windows Terminal 方案或坚持 mintty 时先执行export MSYSenable_pcon。No such file or directory 或 WSL 相关报错说明在 powershell/cmd 中运行时调用的是 WSL 的 bash.exe 而非 Git for Windows 的 bash.exe。需要编辑%USERPROFILE%\scoop\shims\ani-cli.cmd把bash替换为%GIT_INSTALL_ROOT%\bin\bash.exescoop 安装的 Git或C:\Program Files\Git\bin\bash.exe其他方式。curl 兼容性实测 curl7.83.1不工作、7.86.0正常遇到问题可尝试用 scoop 装新版。用 scoop 安装的 mpv其配置读取位置是C:\Users\USERNAME\scoop\apps\mpv\current\portable_config详见 mpv 官方文档的portable_config说明。卸载按安装渠道对应移除README 完整清单aptsudo apt remove ani-cli并删除sudo rm -f /etc/apt/trusted.gpg.d/ani-cli.asc /etc/apt/sources.list.d/ani-cli-debian.listdnfsudo dnf remove ani-cli再dnf copr disable derisis13/ani-cli可选移除 RPM Fusionzypperzypper remove ani-cli再zypper removerepo ani-cli可选移除 packman-essentialsAURyay -R ani-cliScoopscoop uninstall ani-cliLinux 源码安装sudo rm /usr/local/bin/ani-climacOSbrew uninstall ani-cli brew untap pystardust/ani-cliWindows在 Git Bash管理员中rm /usr/bin/ani-cliTermuxpkg remove ani-cliAndroid 其他情况rm $PREFIX/bin/ani-cliSteam Deckrm ~/.local/bin/ani-cli与rm -rf ~/.ani-cli可选清理依赖 yt-dlp、~/.fzf、flatpak uninstall io.mpv.MpviOSrm -rf /usr/local/bin/ani-cli其他依赖用apk del grep sed curl fzf git ffmpeg ncurses命令行选项速查README 在 FAQ 末尾明确All features are documented inani-cli --help。以下选项清单整理自 ani-cli.1 手册页与主脚本help_infoani-cli-h输出的用法为ani-cli [options] [query]参数可自由排列。播放与集数选择选项说明-e, --episode, -r, --range episode指定集数支持范围用-或空格分隔如-e 5-6、-e 5 60表示第一集-1表示最后一集-c, --continue从历史记录继续观看-q, --quality best\|worst\|360\|480\|720\|1080设定清晰度默认best--dub播放配音版默认始终播放字幕版-s, --syncplay通过 Syncplay 与朋友同步观看仅 mpv-v, --vlc使用 VLC 播放--no-detach不分离播放器进程适合终端内播放如 kitty 渲染仅 mpv--exit-after-play播放结束后退出并返回播放器退出码适合非交互场景仅 mpv--skip使用 ani-skip 跳过片头仅 mpv-N, --nextep-countdown显示下一集播出倒计时菜单与交互选项说明--rofi/--dmenu分别用 rofi、dmenu 替代默认的 fzf 菜单-S, --select-nth index直接选中第 n 个搜索结果跳过交互选择配合脚本/自动化历史、下载与维护选项说明-d, --download下载而不是播放保存到当前工作目录-D, --delete清空历史记录-l, --logview查看播放日志Linux 用journalctl -t ani-climacOS 用log show-U, --update branch从指定分支默认 master自更新-V, --version打印版本号当前仓库为 5.1.4-h, --help显示帮助官方示例用法ani-cli -h输出ani-cli -q 720p banana fish ani-cli --skip -S 2 one piece ani-cli -d -e 2 cyberpunk edgerunners ani-cli --vlc cyberpunk edgerunners -q 1080p -e 4 ani-cli blue lock -e 5-6 ani-cli -e 5 6 blue lock多集选择还可借助 fzf或其他菜单前端的多选模式一次性选中多集具体按键操作参考对应前端文档。环境变量配置大全ani-cli v5 起不稳定/未充分测试/小众特性全部通过环境变量控制且命令行选项优先级高于环境变量。以下清单整理自 ani-cli.1 手册页并与 ani-cli 的默认值赋值逐一对应这些变量未来仍可能调整环境变量作用默认值ANI_CLI_BRANCH控制-U更新所用的分支masterANI_CLI_MODE抓取媒体的语言模式sub合法值sub/dubANI_CLI_DOWNLOAD_DIR下载目录当前目录.ANI_CLI_QUALITY播放清晰度如1080、worst、bestbestANI_CLI_PLAYER播放器可取值debug打印链接、download等价-d、android_mpv、android_vlc、catt投屏到电视或任意能播放 URL 的播放器按平台自动探测见下ANI_CLI_PLAYER_FLAGS附加给播放器的参数空ANI_CLI_MENU菜单前端可取 fzf、rofi、dmenu 或任意其他程序fzfANI_CLI_MENU_FLAGS菜单前端附加参数最后一个参数必须接收 prompt 作为输入空ANI_CLI_LOG播放日志开关1开启ANI_CLI_HIST_DIR历史记录存放目录其下会自动创建ani-cli子目录放置 histfile$XDG_STATE_HOME未设置则为$HOME/.local/stateANI_CLI_DEFAULT_SOURCE默认入口history等价-c或其他任意值进入搜索searchANI_CLI_SKIP_INTRO是否用 ani-skip 跳过片头仅 mpv0关闭ANI_CLI_NO_DETACH是否不分离播放器进程配合 kitty 等终端渲染器0关闭ANI_CLI_EXIT_AFTER_PLAY播放后是否不再弹出菜单适合非交互场景常与ANI_CLI_NO_DETACH搭配0关闭各平台默认播放器探测逻辑源码case $(uname -a)分支ani-climacOS优先iina其次/Applications/IINA.app/Contents/MacOS/iina-cli、mpv、vlcAndroidTermuxandroid_mpvWindowsMINGW/WSL2mpv.exeiOSiSHiSHcurl 优先curl_safari260_ios其余 Linux依次探测 mpv、用户与系统级的 flatpak mpv、vlcdebug播放器会打印所有链接、选中链接与字幕链接源码play_episode的 debug 分支ani-cli是排查抓取问题的利器。功能机制深入历史、下载与质量选择结合源码可以更精确地理解几个高频功能的行为历史记录存储于ANI_CLI_HIST_DIR默认$XDG_STATE_HOME或$HOME/.local/state下的ani-cli/ani-hsts文件每行是集数\t番剧ID\t番剧名三字段update_historyani-cli。-c续播时脚本会先调用backup_old_hist把旧格式v4 兼容条目迁移再逐条查询各番剧的下一集process_hist_entryani-cli所以你续播到的永远是对应 ID 的下一集。下载-d会优先用 yt-dlp支持--fragment-retries infinite与 16 路并行分片缺失时回退到 ffmpeg 的-c copy直接封装同时会顺手把英文字幕以.vtt文件保存到下载目录download函数ani-cli。批量下载-d -e 首集-末集形式例如ani-cli onepiece -d -e 1-1000脚本会遍历范围内所有已发布集数逐集下载。播放器逻辑中play函数ani-cli对范围选择同样生效会自动等待上一个播放器退出再播下一集。播放后的交互循环单集播放结束后fzf 会弹出next / replay / previous / select / change_quality / quit菜单ani-cli其中change_quality可随时切换清晰度并立即重播无需退出重来。字幕字幕是独立英文音轨交给播放器处理可以在播放器内切换或关闭mpv 中按v键不提供其他语言。Ani-Skip自动跳过片头ani-skip 是独立的可选组件用于自动跳过动漫片头Openings。它通过 mpv 的外部 lua 脚本机制工作因此目前只支持 mpv且Windows 上暂不可用README 明确警告。使用时先安装 ani-skip再以--skip参数或ANI_CLI_SKIP_INTRO1环境变量启用。源码层面play_episode会调用ani-skip -i $mal_id -e $ep_no生成跳过参数ani-cli其中mal_id正是抓取流程中从嵌入页解析出的 MyAnimeList IDani-cli。FAQ高频疑问官方答案README 的 FAQ 一节覆盖了用户最常见的疑问这里完整保留能改字幕语言或关闭吗字幕是独立英文音轨交给播放器处理可在播放器内切换mpv 按v不提供其他语言。能看配音版吗可以用--dub。能换配音语言吗不能。能换媒体源吗不能除非你自己去抓那个源的链接。能用 VLC 吗可以用--vlc或export ANI_CLI_PLAYERvlc。能调清晰度吗可以用-q resolution例如ani-cli -q 1080。怎么下载用-d会下载到当前工作目录。能改下载目录吗可以把ANI_CLI_DOWNLOAD_DIR设为目标位置。怎么批量下载用-d -e 首集-末集例如ani-cli onepiece -d -e 1-1000。周边生态README 的 Homies 一节列出了一些同人项目ani-cli-rsRust 移植版支持 Anikoto 目录与原生 MegaPlay/KotoCDN 播放、jerryShell 编写的带 AniList 追踪与 Discord 状态的追番工具、anipy-cliPython 重写版、mov-cli、doccli、GoAnime、Curd 等。它们说明 ani-cli 的交互范式已被多个语言生态借鉴如果你喜欢它的终端 UX可以参考这些实现。参与贡献与许可贡献指南见 CONTRIBUTING.md社区渠道见 matrix.md。免责声明见 disclaimer.md——该工具抓取第三方站点使用时请自行注意合规与版权边界。项目以 GPL v3.0 开源LICENSE源码文件尾部亦内嵌完整许可声明Homebrew 配方中的test doFormula/ani-cli.rb展示了自动化验证方式检查--version输出、并确认一个必然不存在的标题会以No results found!退出码 1 结束。若想深入理解抓取细节或自行移植到其他站点hacking.md 提供了完整逆向工程指南含 UX 规范图 .assets/ani-cli-ux-spec.png。总而言之ani-cli 用一个 shell 脚本把搜索 → 选择 → 播放/下载 → 续播 → 跳过片头的完整追番体验搬进了终端。掌握本文的命令行参数、环境变量与平台安装细节你就能在任何主流设备上无缝使用这套工具而理解了它的抓取链路与历史记录格式后即使数据源发生变化你也具备了按 hacking.md 自行适配的能力。赞分享视频开发工具【免费下载链接】ani-cliA cli tool to browse and play anime项目地址https://gitcode.com/gh_mirrors/an/ani-cli点击查看免费下载相关推荐Intero项目终结启示录为什么这个Haskell开发利器停止维护Intero项目终结启示录为什么这个Haskell开发利器停止维护 Intero曾是Haskell开发者的终极IDE工具提供实时代码补全、错误检查和定义跳Kaggle CLI 配置完全指南config 命令、kaggle.json 与 KAGGLE_ 环境变量Kaggle CLI 配置完全指南config 命令、kaggle.json 与 KAGGLE_ 环境变量 本篇技术指南围绕 Kaggle CLIkagglCLI开发工具数据科学Small-Text 19种查询策略全清单如何为文本分类选择最优主动学习策略Small Text 19种查询策略全清单如何为文本分类选择最优主动学习策略 Small Text 是一个用 Python 实现的主动学习文本分类Activ人工智能NLP深度学习机器学习传统算法创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站