| name | cellartracker |
| description | Manage a CellarTracker wine cellar via CLI. Use when: user wants to search wines, add bottles to their cellar, track pending wine deliveries, view cellar inventory, view individual bottles, read tasting notes, or interact with CellarTracker in any way. |
| metadata | {"openclaw":{"emoji":"🍷","requires":{"bins":["python3","poetry"]},"install":[{"id":"poetry","kind":"shell","command":"pip install poetry","bins":["poetry"],"label":"Install Poetry"}]}} |
CellarTracker CLI
Manage a CellarTracker wine cellar from the terminal using the ct command.
Setup
cd {baseDir}/../
poetry install
cp .env.example .env
poetry install registers ct as a console script. Auth requires a valid CellarTracker account. Credentials are read from .env via python-dotenv.
Commands
ct login
ct search "QUERY"
ct search "QUERY" --cellar
ct add WINE_ID --quantity N --cost PRICE --currency USD --store "Store" --location "Cellar" --bin "A1" --note "Note"
ct cellar
ct pending
ct pending add WINE_ID --quantity N --cost PRICE --store "Store"
ct bottles WINE_ID
ct notes WINE_ID
ct notes WINE_ID -n 50
Workflow
- Run
ct login to verify credentials work
- Run
ct search to find the wine and get its ID
- Run
ct add or ct pending add with the wine ID
- Run
ct cellar or ct pending to confirm
Architecture
cellartracker/models.py -- Dataclasses: WineResult, TastingNote, BottleInfo, PurchaseGroup.
cellartracker/parsers.py -- HTML parsing functions for CellarTracker pages.
cellartracker/client.py -- CellarTrackerClient class handling HTTP auth (cookie-based via /classic/password.asp).
cellartracker/cli.py -- Click CLI with seven commands. Entry point: cellartracker.cli:cli.
Key Details
- Auth uses
User + PWHash cookies from POST to /classic/password.asp
- Wine search parses HTML table rows with CSS class selectors (
el nam, el loc, el var, el gty, el scr)
- Adding wines POSTs form data to
purchase.asp
- Default currency is USD; override with
--currency
- Tasting notes parsed from
notes.asp?iWine=<id> (community notes only, no pro reviews)
- Individual bottles parsed from
list.asp?Table=Inventory&iWine=<id> (location, store, size, price, date)
- Wine IDs from search output are required for
add, pending add, notes, and bottles commands