peterschwps/TooGoodToGo-CLI

GitHub: peterschwps/TooGoodToGo-CLI

TGTG 非官方命令行工具,提供库存监控、即时通知与自动结账功能,帮助用户在临期食品上架时快速抢购。

Stars: 6 | Forks: 1

[![PyPI](https://img.shields.io/pypi/v/TGTG-CLI.svg?label=PyPI)](https://pypi.org/project/TGTG-CLI/) [![Python](https://img.shields.io/pypi/pyversions/TGTG-CLI.svg?label=Python)](https://pypi.org/project/TGTG-CLI/) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1973b9741c053333.svg)](https://github.com/peterschwps/TooGoodToGo-CLI/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) # TooGoodToGo-CLI **用于 Too Good To Go (TGTG) 的非官方 CLI,用于监控并在商品有货时进行结账。** ![Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ec10ae3187053335.gif) ## 目录 - [功能](#features) - [安装说明](#installation) - [快速开始](#quick-start) - [配置](#configuration) - [信用卡](#credit-cards) - [常见问题](#faq) - [免责声明](#disclaimer) ## 功能 - **交互式菜单** — 引导式流程,易于导航。 - **账户登录** — 基于电子邮件的无密码登录;持久会话。 - **监控商品** — 监视您所在区域的任何商品,等待其变为可用状态。 - **移动和桌面通知** — 当受监控的商品有货时,通过 Ntfy 应用程序或网站获取通知。 - **自动结账** — 处理完整的结账流程,包括任何 3DS 验证,快速完成购买。 - **轻松配置** — 所有设置集中在单个文件中,可在默认编辑器中进行编辑。 ## 安装说明 您可以使用 [uv](https://docs.astral.sh/uv/) 全局安装此应用程序: ``` uv tool install tgtg-cli ``` 或者使用 [pipx](https://pipx.pypa.io/stable/how-to/install-pipx/): ``` pipx install tgtg-cli ``` 如果您只想在虚拟环境中安装 CLI: ``` pip install tgtg-cli ``` 或者使用 [uv](https://docs.astral.sh/uv/): ``` uv add tgtg-cli ``` ## 快速开始 1. 启动 CLI: tgtg 注意:您也可以使用 `tgtg-cli`、`toogoodtogo` 和 `toogoodtogo-cli` 启动 CLI。 2. 从菜单中选择 **Settings**。这将在您的默认编辑器中打开设置文件。 3. 按照 [配置](#configuration) 部分的说明填写设置文件。 4. 重启 CLI: tgtg 5. 从菜单中选择 **Login**,并输入发送到您电子邮件的 6 位数字验证码。 6. 登录后,选择 **Monitor** 并选择您要监视的商品。 ## 配置 CLI 的配置可以在 `settings.ini` 中进行更改。此文件在首次启动时自动生成,并在您的默认编辑器中打开。如果您对其进行了任何更改,您始终需要重启 CLI。 ### 文件位置 路径遵循特定平台的配置目录: | 操作系统 | 路径 | | --- | --- | | **macOS** | `~/Library/Application Support/TGTG-CLI/settings.ini` | | **Linux** | `~/.config/TGTG-CLI/settings.ini` (或 `$XDG_CONFIG_HOME/TGTG-CLI/settings.ini`) | | **Windows** | `%APPDATA%\TGTG-CLI\settings.ini` | 您可以随时通过菜单中的 **Settings** 重新打开该文件。这也会向您显示该文件的路径。 ### 设置参考 设置文件分为五个部分。必须提供所有键,但如果未使用该参数,可选值可以留空。 #### `[ACCOUNT]` 有关您的 Too Good To Go 账户和要扫描的地理区域的所有设置。 | 键 | 类型 | 描述 | | --- | --- | --- | | `EMAIL` | string | 您的 Too Good To Go 账户的电子邮件地址。示例:`johnsmith@email.com`。 | | `LATITUDE` | decimal | 要监控的区域纬度。示例:`55.713`。 | | `LONGITUDE` | decimal | 要监控的区域经度。示例:`12.569982`。

**注意:** 您可以在 [Google Maps](https://www.google.com/maps) 上右键单击任意位置来获取坐标 (`latitude,longitude`)。请确保小数使用 `.` 而不是 `,`。 | | `RADIUS` | integer | 搜索半径,以整公里为单位。示例:`5`。 | | `PROXY` | string | 可选代理,格式为 `username:password@hostname:port`。设置 `CAPSOLVER_API_KEY` 时为必填项。

**注意:** 仅当您在绕过 Cloudflare 时遇到问题,才建议使用代理。 | #### `[APPLICATION]` 用于配置 CLI 行为的功能开关。 | 键 | 类型 | 描述 | | --- | --- | --- | | `ENABLE_LOGGING` | bool | 将日志写入磁盘。设置为 `True` 或 `False`。默认值:`False`。这会在缓存目录中创建一个日志文件。

**注意:** 这主要用于调试。除非遇到问题,否则建议关闭日志记录。 | | `ENABLE_CHECKOUT` | bool | 如果设置为 `True`,CLI 将尝试自动完成购买。需要填写所有 `[PAYMENT]` 字段。默认值:`False`。如果设置为 `False`,CLI 仅在商品可用时通知用户,而不会尝试购买。 | #### `[PAYMENT]` 用于自动结账的信用卡详细信息。仅在 `ENABLE_CHECKOUT = True` 时为必填项。 | 键 | 类型 | 描述 | | --- | --- | --- | | `CARD_NUMBER` | string | 卡号,仅限数字。通过 Luhn 校验和进行验证。示例:`4242424242424242`。 | | `CARD_EXPIRY_MONTH` | integer | 到期月份 (`1`–`12`)。示例:`6`。 | | `CARD_EXPIRY_YEAR` | integer | 到期年份,四位数。示例:`2028`。 | | `CARD_SECURITY_CODE` | string | CVC / CVV(3 或 4 位数字)。示例:`034`。 | #### `[MONITOR]` CLI 监控商品时的行为。 | 键 | 类型 | 描述 | | --- | --- | --- | | `DELAY_IN_MILLISECONDS` | integer | 轮询之间的延迟(毫秒)。默认值:`4500`。请注意,较低的延迟可能会触发速率限制。 | | `NTFY_TOPIC` | string | [Ntfy.sh](https://ntfy.sh) 推送通知的主题名称。在 ntfy 应用程序中订阅相同主题即可接收警报。
您可以在此处找到 Ntfy 设置指南[这里](https://docs.ntfy.sh)。

**注意:** 确保选择一个唯一的字符串,以防止其他用户收到您的通知。这可以是一个随机的 [UUID](https://www.uuidgenerator.net/) 或一个随机的[密码](https://1password.com/password-generator)。 | #### `[SOLVER]` 通过 [CapSolver](https://dashboard.capsolver.com/passport/register?inviteCode=Gac0yUtJJQhN) 配置验证码求解器。这仅在您登录账户遇到问题时的极少数情况下才需要。CapSolver 仅会在登录和检索会话 token 时用于解决验证码。 | 键 | 类型 | 描述 | | --- | --- | --- | | `CAPSOLVER_API_KEY` | string | 您的 CapSolver API 密钥。留空则禁用。设置此密钥时,**`[ACCOUNT]` 中的代理为必填项**。 | ### 示例 ``` [ACCOUNT] EMAIL = johnsmith@email.com LATITUDE = 55.713 LONGITUDE = 12.569982 RADIUS = 3 PROXY = [APPLICATION] ENABLE_LOGGING = False ENABLE_CHECKOUT = True [PAYMENT] CARD_NUMBER = 4242424242424242 CARD_EXPIRY_MONTH = 6 CARD_EXPIRY_YEAR = 2028 CARD_SECURITY_CODE = 034 [MONITOR] DELAY_IN_MILLISECONDS = 4500 NTFY_TOPIC = 1f143bad-cb9d-4528-961f-5fd61354ec9e [SOLVER] CAPSOLVER_API_KEY = ``` 请勿删除任何键或部分!如果您不需要它们,请将所有可选参数留空。 ## 信用卡 通常,在 Too Good To Go 应用程序中适用的**任何信用卡**在此处也应适用。一些例外情况可能是需要短信验证码或有特殊授权流程的信用卡。 [**Bunq**](https://bunq.com) 是推荐的提供商之一,因为它提供了必要的功能且已经过测试。开户免费,可以免费创建虚拟卡,并且您可以为每张卡设置支出限额。您可以随时删除并重新创建新卡。 您可以在下方找到有关不同授权流程的更多信息以及完全受支持的提供商列表。 共有三种不同的授权流程: | 流程 | 说明 | 实现 | | --- | --- | --- | | **3DS2** | 根据我的测试,这似乎是最常见的流程。它应该与您在 Too Good To Go 应用程序中手动购买商品时遇到的流程相同。 | CLI 负责处理授权流程。用户会收到一条通知,要求他们确认 3DS 验证。 | | **重定向(受支持的提供商)** | 这似乎是旧版的 3DS1 流程。然而,即使是通常使用 3DS2 流程的卡,它似乎也会随机发生。 | 与 3DS2 相同,但仅适用于受支持的提供商。每个提供商需要不同的实现。请参阅下方的列表,了解已确认可用的提供商。 | | **重定向(不受支持的提供商)** | 与上述流程相同。 | CLI 发送带有验证 URL 的通知。用户需要打开该 URL,完成所有必需的步骤并确认验证。 支持**重定向**验证的提供商: | 提供商 | | --------- | | Bunq | | DKB | ## 常见问题 ### 我需要信用卡才能使用 CLI 吗? 不需要。监控和通知功能无需付款详细信息即可使用。在 `settings.ini` 中设置 `ENABLE_CHECKOUT = False` 并将 `[PAYMENT]` 字段留空。每当受监控的商品有货时,您都会收到通知,然后可以在 Too Good To Go 应用程序中手动结账。 ### 结账时我的卡被拒了。是怎么回事? 可能的原因有: - 您的银行需要短信验证码或 CLI 不支持的其他授权流程。 - 您的卡余额不足或支出限额低于商品价格。 如果可能,请尝试使用 [Bunq](https://bunq.com),如 [信用卡](#credit-cards) 中所述。如果您持续遇到错误,请提交一个 issue。 ### 触发速率限制后我会被封禁多久? 软封禁似乎会持续一小时。冷却期过后,CLI 将恢复正常工作——无需采取额外行动。为了降低再次触发速率限制的几率,请将轮询延迟保持在 `4500ms` 或更高。 如果您不想等待一个小时,您可以更改您的 IP,例如通过使用代理。 ### 我的凭据和 token 存储在哪里? 会话 token、随机设备配置文件和日志位于操作系统原生的缓存目录中: | 操作系统 | 路径 | | --- | --- | | **macOS** | `~/Library/Caches/TGTG-CLI/` | | **Linux** | `~/.cache/TGTG-CLI/` (或 `$XDG_CACHE_HOME/TGTG-CLI/`) | | **Windows** | `%LOCALAPPDATA%\TGTG-CLI\Cache\` | 信用卡详细信息从 `settings.ini` 中读取(参见 [文件位置](#file-location))。 ### 为什么我总是被迫登出? 会话 token 存储在您的本地缓存目录中(参见 [我的凭据和 token 存储在哪里?](#where-are-my-credentials-and-tokens-stored))。清理工具可能会清除该目录,这意味着您必须重新登录。请将 `TGTG-CLI/` 文件夹添加到该工具的排除列表中以防止出现这种情况。 ### 如何重置 CLI? 在菜单中选择 **Logout** 以清除会话,或者删除上述的配置和缓存目录以进行完全重置。在下次启动时,这两个文件都将被重新创建。 ### 使用此工具会导致我的账户被封禁吗? 此工具可能违反 Too Good To Go 服务条款。使用风险由您自行承担。详情请参见 [免责声明](#disclaimer)。为了降低风险暴露,请将轮询延迟保持在默认设置 (`4500ms`) 或更高。 ## 免责声明 本项目是一个非官方的、独立的第三方工具,**不隶属于、不被认可、不被赞助或以任何方式正式关联**于 Too Good To Go ApS 或其任何子公司或附属机构。 "Too Good To Go" 和 "TGTG" 是 Too Good To Go ApS 的商标,在此仅用于名义上标识本软件与之交互的服务。 本软件按“原样”提供,不提供任何形式的保证。使用此工具可能违反 Too Good To Go 服务条款,并可能导致账户终止。作者对其使用产生的任何后果不承担任何责任。
标签:3DS验证, CISA项目, CLI, DNS解析, ntfy通知, pipx, Python, TGTG, Too Good To Go, uv, WiFi技术, 交互式菜单, 反食品浪费, 库存监控, 开源项目, 抢购助手, 数字取证, 无后门, 无密码登录, 桌面通知, 浏览器自动化, 电商自动化, 监控可用性, 移动端通知, 自动化抢购, 自动化脚本, 自动结账, 购物机器人, 逆向工具