名称: bring-add
描述: 当用户需要向 Bring! 购物清单添加物品时使用。支持添加单个物品、批量物品,或从标准输入/文件读取物品。支持预览模式(dry-run)和 JSON 输出。
用于向 Bring! 购物清单添加物品的命令行工具。支持快速单物品模式、批量模式、标准输入/管道输入以及交互模式。
在以下情况使用此技能:
- 用户想要向 Bring! 购物清单添加物品
- 添加单个物品(可附带规格,例如“牛奶 1L”)
- 一次性添加多个物品(批量模式)
- 从文件或其他命令管道传输物品列表
- 需要通过预览模式(dry-run)查看将要添加的内容
- 需要 JSON 输出用于脚本处理
不要在以下情况使用:
- 用户想要浏览食谱(请使用 bring-recipes)
- 用户想要从清单中移除物品
- 用户想要查看当前清单内容
| 命令 | 用途 |
|---|---|
bring-add "物品名" "规格" |
添加单个物品及其规格 |
bring-add --batch "A, B 1L, C" |
添加多个逗号分隔的物品 |
bring-add - |
从标准输入读取物品 |
bring-add |
交互模式(仅限 TTY) |
bring-add lists |
显示可用的购物清单 |
bring-add --dry-run ... |
预览而不实际修改 |
环境变量:
export BRING_EMAIL="你的邮箱@example.com"
export BRING_PASSWORD="你的密码"
export BRING_DEFAULT_LIST="Shopping" # 可选
cd skills/bring-add
npm install
添加单个物品:
node index.js "西红柿" "500g"
node index.js "牛奶"
添加到指定清单:
node index.js --list "派对" "薯片" "3袋"
批量添加多个物品:
node index.js --batch "西红柿 500g, 洋葱, 奶酪 200g"
从文件管道输入:
cat shopping-list.txt | node index.js -
echo -e "牛奶 1L\n面包\n黄油" | node index.js -
添加前预览:
node index.js --dry-run --batch "苹果 1kg, 梨"
获取 JSON 输出:
node index.js --json --batch "牛奶, 面包" 2>/dev/null
列出可用清单:
node index.js lists
node index.js --json lists
| 参数 | 描述 |
|---|---|
-l, --list <名称> |
目标清单(名称或 UUID) |
-b, --batch <物品列表> |
逗号分隔的物品列表 |
-n, --dry-run |
预览而不实际修改 |
-q, --quiet |
抑制非错误输出 |
-v, --verbose |
显示详细进度信息 |
--json |
向标准输出输出 JSON |
--no-color |
禁用彩色输出 |
--no-input |
永不提示;若需要输入则直接失败 |
物品遵循格式:物品名称 [规格]
| 输入 | 物品 | 规格 |
|---|---|---|
西红柿 500g |
西红柿 | 500g |
燕麦奶 1L |
燕麦奶 | 1L |
红洋葱 3 |
红洋葱 | 3 |
奶酪 |
奶酪 | (空) |
规则:如果最后一个单词包含数字或单位(g、kg、L、ml、Stück、pck 等),则将其视为规格。
| 代码 | 含义 |
|---|---|
0 |
成功 |
1 |
通用失败(API 错误、网络问题) |
2 |
用法无效(参数错误、缺少输入) |
3 |
认证失败 |
4 |
清单未找到 |
130 |
被中断(Ctrl-C) |
忘记设置环境变量:
运行前请设置 BRING_EMAIL 和 BRING_PASSWORD。
清单名称错误:
使用 bring-add lists 查看可用清单及其确切名称。
规格解析问题:
仅当最后一个单词看起来像数量时才会被当作规格处理。“红洋葱”会作为一个整体物品,但“红洋葱 3”会拆分为物品“红洋葱”和规格“3”。
在脚本中使用交互模式:
在脚本中使用 --no-input 参数,以便在需要输入时明确失败,而不是挂起等待输入。
node-bring-api 的 batchUpdateList() API