Files
catbus/docs/guide/quick-start.md

148 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 快速上手
从安装到导出第一批数据,大约 5 分钟。每一步的细节见文末链接的专题文档。
## 1. 安装
需要 Node `^22.22.2 || ^24.15.0 || >=26.0.0`。不需要 Python、编译器或其他系统依赖,支持 Windows、macOS、Linux 的 x64 与 arm64(Linux 含 glibc 和 musl)。
**从 npm 安装**:
```bash
npm i -g catbus-cli
```
模型包 `@cv-cat/catbus-assets-jd`、`@cv-cat/catbus-assets-ocr` 会作为依赖一起装上,装完即可离线使用。
**从源码安装**(想改代码或跟进 `master` 时):
```bash
git clone https://github.com/cv-cat/catbus.git
cd catbus
npm ci
npm run assets:jd # 取回京东验证码模型(约 81 MB)
npm run assets:ocr # 取回验证码 OCR 模型(约 34 MB,B 站极验点选在用)
npm run build
npm link # 把 catbus 命令链接到全局
```
两个模型包的模型文件不进 git,`npm ci` 之后要用上面两条命令取回,否则 `catbus doctor` 会报模型文件缺失。只用不到京东和 B 站验证码的平台时可以先跳过,但建议都装上。
## 2. 检查环境
```bash
catbus version
catbus doctor
```
`doctor` 逐项检查 Node 版本、`~/.catbus` 的权限、签名 vm、HTTP 库、canvas、onnx 和两个模型包,每项输出 `{name, ok, message}`。有一项不通过时退出码为 1,看 `message` 里的提示处理。
```bash
catbus doctor | jq -r '.data[] | select(.ok | not) | "\(.name): \(.message)"'
```
## 3. 登录
web 端不登录几乎看不到内容,所以除 `auth` 以外的命令都需要先登录。以 B 站为例:
```bash
catbus bilibili auth login
```
二维码画在终端(stderr)里,同时存了一张 PNG(路径在提示里)。用 B 站 App 扫码、在手机上确认即可。
各平台支持的登录方式不同:
| 登录方式 | 平台 |
|---|---|
| 扫码(默认) | xhs、douyin、bilibili、kuaishou、xianyu、jd |
| 只能导入浏览器 cookie | tiktok、weibo、taobao、x |
只能导入 cookie 的平台:
```bash
catbus weibo auth login --cookie "<从浏览器复制的完整 Cookie>"
```
cookie 要从 DevTools → Network 里某个请求的请求头复制,`document.cookie` 拿不到 HttpOnly 的关键 cookie。详见 [login.md](login.md)。
确认登录态:
```bash
catbus bilibili auth status
```
## 4. 第一条查询
```bash
catbus bilibili item get BV1xx411c7mD
```
stdout 上是一个 JSON 信封,`data` 是归一化的 Item:
```json
{
"ok": true,
"platform": "bilibili",
"endpoint": "web",
"resource": "item",
"action": "get",
"account": "default",
"data": { "id": "BV1xx411c7mD", "kind": "video", "url": "https://www.bilibili.com/video/BV1xx411c7mD", "title": "...", "...": "..." },
"page": null,
"error": null
}
```
命令的规律是 `catbus <platform> <resource> <action>`,所有平台同一套词:笔记、视频、商品都叫 `item`,搜索都叫 `search`。
```bash
catbus bilibili item search 猫
catbus bilibili user get me
catbus bilibili comment list BV1xx411c7mD
```
不知道某个平台支持什么时:
```bash
catbus bilibili --help # 该平台的全部命令,带 ○ 的是规划中
catbus bilibili item search --help # 参数、选项、筛选取值
catbus platforms bilibili # 同样的信息,JSON 格式
```
全部平台的能力矩阵见 [capabilities.md](../capabilities.md)。
## 5. 分页
列表命令默认只取一页,信封里带 `page`:
```json
"page": { "cursor": "2", "has_more": true }
```
```bash
catbus bilibili item search 猫 --limit 100 # 自动翻页,取满 100 条
catbus bilibili item search 猫 --cursor 2 # 从上次的 page.cursor 继续
catbus bilibili user items me --all # 翻到没有更多
```
翻页间隔由 catbus 按平台控制,不需要自己加延时。
## 6. 导出 jsonl
数据量大时用 `-o jsonl`:stdout 每行一条数据,边翻页边输出;结束时 stderr 最后一行是摘要信封(带 `page` 和 `error`)。
```bash
catbus bilibili item search 猫 --limit 500 -o jsonl > items.jsonl 2> run.log
wc -l items.jsonl
tail -n 1 run.log | jq '.page' # 下一页的游标
jq -r '[.id, .title, .stats.views] | @tsv' items.jsonl
```
## 下一步
- [login.md](login.md):各平台登录方式、cookie 导入、多账号、子站点
- [output.md](output.md):信封、归一化类型、分页、退出码与错误处理
- [configuration.md](configuration.md):代理、超时、数据目录
- [faq.md](faq.md):常见问题