Commit graph

8 commits

Author SHA1 Message Date
0dee942e16 Show Eurostar Standard prices and total journey cost on results page
Fetches prices via the site-api.eurostar.com GraphQL gateway
(NewBookingSearch operation, discovered with Playwright). Adds
fetch_prices() to scraper/eurostar.py using requests, caches results,
annotates each trip with eurostar_price and total_price, and shows an
ES Std column plus total cost (duration + price) in the results table.
The Transfer column is hidden on small screens for mobile usability.

Closes #4

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 10:38:09 +01:00
804fcedfad Show cheapest GWR fare per journey and flag unreachable morning Eurostars
Add cheapest_gwr_ticket() to trip_planner.py encoding the SSS/SVS/SDS
walk-on single restrictions for Bristol Temple Meads → Paddington: on
weekdays, Super Off-Peak (£45) is valid before 05:05 or from 09:58,
Off-Peak (£63.60) from 08:26, and Anytime (£138.70) covers the gap.
Weekends have no restrictions. The fare is included in each trip dict
and displayed in a new GWR Fare column on the results page.

Also wire up find_unreachable_morning_eurostars() into the results view
so early Eurostar services unreachable from Bristol appear in the table,
with tests covering both features.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 10:22:47 +01:00
b88d23a270 Use destination-specific result page metadata 2026-04-01 15:33:07 +01:00
143887d482 Add same-day destination switcher to results 2026-04-01 12:50:43 +01:00
1fa2e68b31 Various improvements 2026-03-31 12:59:44 +01:00
876eb6a759 Various improvements 2026-03-31 10:42:30 +01:00
2090268754 Various improvements 2026-03-30 20:55:15 +01:00
a8e0bd39e5 Initial commit. 2026-03-30 19:34:46 +01:00