No description
Find a file
2025-12-02 10:58:33 +00:00
.cursor/rules feat: add wmill setup 2025-09-17 01:13:02 +01:00
f chore: update windmill requirements and misc robustness improvements to buy 2025-12-02 10:58:33 +00:00
requirements chore: update windmill requirements and misc robustness improvements to buy 2025-12-02 10:58:33 +00:00
.gitignore feat: add uv/pyproject and option to select train types & use bike 2025-09-18 00:12:08 +01:00
.python-version feat: add uv/pyproject and option to select train types & use bike 2025-09-18 00:12:08 +01:00
CLAUDE.md feat: add wmill setup 2025-09-17 01:13:02 +01:00
cp-tickets.py feat: add dry run mode to buy ticket 2025-12-01 18:46:36 +00:00
main.py feat: add uv/pyproject and option to select train types & use bike 2025-09-18 00:12:08 +01:00
pyproject.toml fix: WIP fix for new interface changes for cp.pt 2025-09-23 23:35:58 +01:00
README.md chore: update windmill requirements and misc robustness improvements to buy 2025-12-02 10:58:33 +00:00
util.py feat: final rework of script for new ui 2025-09-24 23:11:55 +01:00
uv.lock fix: WIP fix for new interface changes for cp.pt 2025-09-23 23:35:58 +01:00
wmill-lock.yaml chore: update windmill requirements and misc robustness improvements to buy 2025-12-02 10:58:33 +00:00
wmill.yaml feat: add wmill setup 2025-09-17 01:13:02 +01:00

Playwright Scripts

coms


playwright install chromium

python activobank.py

wmill



# installs globaly for the user (without -g then it's for this repo onmly)
mise use -g npm:windmill-cli

# update (finds the most strict, either local or user)
mise upgrade npm:windmill-cli

# udpate wmill script, lock, args and any other metadata
wmill script generate-metadata


# sync local to/from workspace (DESTRUCTIVE!!!)
wmill sync push
wmill sync pull

CLI examples

$uv run python cp-tickets.py list lx porto 2025-09-21 --ap

Searching trips from Lisboa Santa Apolonia to Porto Campanha on 2025-09-21
Found 14 trips:
  TrainTrip(servico='AP 131', start_at='07:00', stop_at='09:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='AP 121', start_at='08:00', stop_at='10:55', duration='02h55', price='€ 34,60', promo='')
  TrainTrip(servico='IC 721', start_at='09:30', stop_at='12:43', duration='03h13', price='€ 27,40', promo='')
  TrainTrip(servico='IC 621', start_at='11:30', stop_at='14:43', duration='03h13', price='€ 27,40', promo='')
  TrainTrip(servico='AP 133', start_at='14:00', stop_at='16:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='IC 523', start_at='15:30', stop_at='18:43', duration='03h13', price='€ 27,40', promo='')
  TrainTrip(servico='AP 135', start_at='16:00', stop_at='18:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='AP 127', start_at='17:00', stop_at='19:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='IC 731', start_at='17:30', stop_at='20:43', duration='03h13', price='€ 27,40', promo='')
  TrainTrip(servico='AP 137', start_at='18:00', stop_at='20:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='IC 515 | AP 186', start_at='18:30', stop_at='21:48', duration='03h18', price='€ 36,85', promo='')
  TrainTrip(servico='IC 723', start_at='19:30', stop_at='22:43', duration='03h13', price='€ 27,40', promo='')
  TrainTrip(servico='AP 129', start_at='20:00', stop_at='22:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='IC 529', start_at='22:00', stop_at='01:13', duration='03h13', price='€ 27,40', promo='')

Por omissão, os IC são sempre mostrados.

$uv run python cp-tickets.py list lx porto 2025-09-21 --ap --no-ic
Searching trips from Lisboa Santa Apolonia to Porto Campanha on 2025-09-21
Found 7 trips:
  TrainTrip(servico='AP 131', start_at='07:00', stop_at='09:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='AP 121', start_at='08:00', stop_at='10:55', duration='02h55', price='€ 34,60', promo='')
  TrainTrip(servico='AP 133', start_at='14:00', stop_at='16:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='AP 135', start_at='16:00', stop_at='18:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='AP 127', start_at='17:00', stop_at='19:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='AP 137', start_at='18:00', stop_at='20:48', duration='02h48', price='€ 34,60', promo='')
  TrainTrip(servico='AP 129', start_at='20:00', stop_at='22:48', duration='02h48', price='€ 34,60', promo='')
$ uv run python cp-tickets.py buy lx porto 2025-09-21 'IC 721'