uk-trains
SafeTransportation
UK National Rail departures, arrivals, delays, platforms.
SKILL.md
# UK Trains
Query National Rail Darwin API for live train departures and arrivals.
## Setup
Requires free Darwin API token:
1. Register at https://realtime.nationalrail.co.uk/OpenLDBWSRegistration/
2. Set `NATIONAL_RAIL_TOKEN` in environment (or configure in skills.entries.uk-trains.apiKey)
## Commands
```bash
# Departures
./scripts/trains.py departures PAD
./scripts/trains.py departures PAD to OXF --rows 5
# Arrivals
./scripts/trains.py arrivals MAN
./scripts/trains.py arrivals MAN from EUS
# Station search
./scripts/trains.py search paddington
./scripts/trains.py search kings
```
## Station Codes
Use 3-letter CRS codes:
- `PAD` = London Paddington
- `EUS` = London Euston
- `KGX` = London Kings Cross
- `VIC` = London Victoria
- `WAT` = London Waterloo
- `MAN` = Manchester Piccadilly
- `BHM` = Birmingham New Street
- `EDB` = Edinburgh Waverley
- `GLC` = Glasgow Central
- `BRI` = Bristol Temple Meads
- `LDS` = Leeds
- `LIV` = Liverpool Lime Street
- `RDG` = Reading
- `OXF` = Oxford
- `CBG` = Cambridge
## Response Format
JSON with:
- `locationName`, `crs` - Station info
- `messages[]` - Service alerts
- `trainServices[]` - List of trains:
- `std`/`sta` - Scheduled departure/arrival time
- `etd`/`eta` - Expected time ("On time", "Delayed", or actual time)
- `platform` - Platform number
- `operator` - Train operating company
- `destination[].name` - Final destination
- `isCancelled`, `cancelReason`, `delayReason` - Disruption info
## Message Template
Use this compact format for WhatsApp/chat responses:
```
š {Origin} ā {Destination}
*{dep} ā {arr}* āš{platform} ā š {coaches}
{status}
*{dep} ā {arr}* āš{platform} ā š {coaches}
{status}
```
### Elements
- **Header:** š emoji + origin ā destination
- **Time:** Bold, departure ā arrival times
- **Platform:** š + number (or "TBC" if unknown)
- **Coaches:** š + space + number
- **Status:**
- ā
On time
- ā ļø Delayed (exp {time})
- ā Cancelled ā {reason}
- š Starts here
### Example
```
š Hemel Hempstead ā Euston
*20:18 ā 20:55* āš4 ā š 4
ā
On time
*20:55 ā 21:30* āš4 ā š 12
ā
On time
*21:11 ā 21:41* āš4 ā š 8
ā
On time
```
### Getting Arrival Times
To show arrival times, make two API calls:
1. `departures {origin} to {dest}` ā get departure times + service IDs
2. `arrivals {dest} from {origin}` ā get arrival times
Match services by the numeric prefix in serviceID (e.g., `4748110HEMLHMP_` matches `4748110EUSTON__`).
### Notes
- Separate each service with a blank line
- Omit coaches if formation data unavailable
- For delays, show expected time: `ā ļø Delayed (exp 20:35)`
More in Transportation
anachb
SafeAustrian public transport (VOR AnachB) for all of Austria.
charger
SafeCheck EV charger availability (favorites, nearby search) via Google Places.
flight-tracker
SafeFlight tracking and scheduling. Track live flights in real-time by region, callsign.
flights
SafeTrack flight status, delays, and search routes. Uses FlightAware data.