-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCommuting.py
203 lines (166 loc) · 70.4 KB
/
Commuting.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
import requests, datetime, webbrowser
from os import getcwd
#TODO: Fix Termini (modification of lines 108-110)
#Idea: maybe make date automatic based on day of week? - would need to account for works
#setting up the webpage cookies and shit
headers1 = {
#"Host": "www.brtimes.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0",
"Accept": "*/*",
"Accept-Language": "en-GB,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"X-Requested-With": "XMLHttpRequest",
"DNT": "1",
"Connection": "keep-alive",
"Cookie": "consent=yes",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
}
session1 = requests.Session()
session1.headers = headers1
#other variables
uid = []
j=0
#scraping the page
def stationinfo(session1):
result = session1.get(f"https://www.brtimes.com/board_dep?stn={stationcode}&date={date}")
#if there are rail replacement buses, advise not all info is available
if result.text.find("RAIL REPLACEMENT BUS") != -1:
print("There are engineering works. You might want to check a different day.")
else:
print("UIDs found")
return result.json()
#bit of UI
print("This system does not support non-National Rail operators, excluding Grand Central, Hull Trains and Heathrow Express")
print("This includes, journeys on Eurostar, the North Yorkshire Moors Railway, or most on metro or tram system. Some London Underground and Tyne & Wear Metro journeys may show due to shared track.")
stationcode = input("Enter the 3 letter station code").upper()
date = input("Please enter date in YYYYMMDD")
#setting the data up
listresult = stationinfo(session1)
datebefore = listresult['yesterday']
uid = [i["uid"] for i in listresult["events"]]
#setting up the webpage cookies and shit
headers2 = {
#"Host": "www.brtimes.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language": "en-GB,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"DNT": "1",
"Connection": "keep-alive",
"Cookie": "consent=yes",
"Upgrade-Insecure-Requests": "1",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1",
"Cache-Control": "max-age=0"
}
session2 = requests.Session()
session2.headers = headers2
trainservice =[]
callingpoints = []
depcallingpoints = []
arrcallingpoints = []
willcallat = False
print(uid)
#filters services that actually start day before (e.g. 23:50 service passing through at 00:10)
for i in uid:
if session2.get(f"https://www.brtimes.com/train?uid={i}&date={date}").json()[ 'segment_valid'] != False:
trainservice.append(session2.get(f"https://www.brtimes.com/train?uid={i}&date={date}").json())
else:
trainservice.append(session2.get(f"https://www.brtimes.com/train?uid={i}&date={datebefore}").json())
#matches which section of the train is relevant, from the origin station
for i in trainservice:
for k in i['segments']:
if k['links'][0]['orig']['code'] == stationcode:
willcallat = True
for L in k['links']:
if L['dest']['code'] == stationcode:
willcallat = True
elif willcallat == True:
if L['dest']['code'] not in depcallingpoints:
depcallingpoints.append(L['dest']['code'])
elif willcallat == False:
if L['dest']['code'] not in arrcallingpoints:
arrcallingpoints.append(L['dest']['code'])
willcallat = False
for m in i['origins']:
if m['terminus']['code'] not in arrcallingpoints:
arrcallingpoints.append(m['terminus']['code'])
for n in i['destinations']:
if n['terminus']['code'] not in depcallingpoints:
depcallingpoints.append(n['terminus']['code'])
depcallingpoints = sorted(depcallingpoints)
arrcalingpoints = sorted(arrcallingpoints)
for i in depcallingpoints:
callingpoints.append(i)
trainservice = []
#directory of all names, just to make it a bit easier for the user to read
codelookup = {'AAP': 'ALEXANDRA PALACE', 'AAT': 'ACHANALT', 'ABA': 'ABERDARE', 'ABD': 'ABERDEEN', 'ABE': 'ABER', 'ABF': 'ASHURST BALD FACED STAG', 'ABH': 'ABERERCH', 'ABW': 'ABBEY WOOD', 'ABY': 'ASHBURYS', 'ACB': 'ACTON BRIDGE', 'ACC': 'ACTON CENTRAL', 'ACG': 'ACOCKS GREEN', 'ACH': 'ACHNASHELLACH', 'ACK': 'ACKLINGTON', 'ACL': 'ACLE', 'ACN': 'ACHNASHEEN', 'ACR': 'ACCRINGTON', 'ACT': 'ASCOT', 'ACY': 'ABERCYNON', 'ADC': 'ADLINGTON (CHESHIRE)', 'ADD': 'ADDERLEY PARK', 'ADK': 'ARDWICK', 'ADL': 'ADLINGTON (LANCASHIRE)', 'ADM': 'ADISHAM', 'ADN': 'ARDROSSAN TOWN', 'ADR': 'AIRDRIE', 'ADS': 'ARDROSSAN HARBOUR', 'ADV': 'ANDOVER', 'ADW': 'ADDIEWELL', 'AER': 'ABERAERON', 'AFK': 'ASHFORD INTERNATIONAL', 'AFS': 'ASHFORD (SURREY)', 'AFV': 'ANSDELL & FAIRHAVEN', 'AGL': 'ABERGELE & PENSARN', 'AGS': 'ARGYLE STREET', 'AGT': 'ALDRINGTON', 'AGV': 'ABERGAVENNY', 'AHD': 'ASHTEAD', 'AHN': 'ASHTON-UNDER-LYNE', 'AHS': 'ASHURST (KENT)', 'AHT': 'ALDERSHOT', 'AHV': 'ASH VALE', 'AIG': 'AIGBURTH', 'AIN': 'AINTREE', 'AIR': 'AIRBLES', 'ALB': 'ALBRIGHTON', 'ALD': 'ALDERLEY EDGE', 'ALF': 'ALFRETON', 'ALK': 'ASLOCKTON', 'ALM': 'ALNMOUTH', 'ALN': 'ALTHORNE ESSEX', 'ALO': 'ALLOA', 'ALP': 'ALTHORPE HUMBER', 'ALR': 'ALRESFORD (ESSEX)', 'ALT': 'ALTRINCHAM', 'ALV': 'ALVECHURCH', 'ALW': 'ALLENS WEST', 'ALX': 'ALEXANDRIA', 'AMB': 'AMBERGATE', 'AMF': 'AMMANFORD', 'AML': 'ACTON MAIN LINE', 'AMM': 'ABRAHAM MOSSMTLK', 'AMO': 'ASHTON MOSS MTLK', 'AMR': 'AMERSHAM', 'AMT': 'ALDERMASTON', 'AMY': 'AMBERLEY', 'ANC': 'ANCASTER', 'AND': 'ANDERSTON', 'ANF': 'ASHURST NEW FOREST', 'ANG': 'ANGMERING', 'ANH': 'ANCHORAGE MTLK', 'ANL': 'ANNIESLAND', 'ANN': 'ANNAN', 'ANS': 'AINSDALE', 'ANZ': 'ANERLEY', 'AON': 'ALTON', 'APB': 'APPLEY BRIDGE', 'APD': 'APPLEDORE (KENT)', 'APF': 'APPLEFORD', 'APG': 'ASPLEY GUISE', 'APN': 'NEWCASTLE AIRPRT', 'APP': 'APPLEBY', 'APS': 'APSLEY', 'APY': 'APPERLEY BRIDGE', 'ARA': 'SKYE (ARMADALE)', 'ARB': 'ARBROATH', 'ARD': 'ARDGAY', 'ARG': 'ARISAIG', 'ARL': 'ARLESEY', 'ARM': 'ARMADALE (WEST LOTHIAN)', 'ARN': 'ARNSIDE', 'ARP': 'ALVECHURCH RED LION', 'ARR': 'ARRAM', 'ART': 'ARROCHAR & TARBET', 'ARU': 'ARUNDEL', 'ASB': 'ARDROSSAN SOUTH BEACH', 'ASC': 'ASHCHURCH FOR TEWKESBURY', 'ASF': 'ASHFIELD', 'ASG': 'ALSAGER', 'ASH': 'ASH', 'ASI': 'ASHFORD INTL(CIV', 'ASK': 'ASKAM', 'ASM': 'AUDENSHAW MTLK', 'ASN': 'ADDLESTONE', 'ASP': 'ASPATRIA', 'ASS': 'ALNESS', 'AST': 'ASTON', 'ASY': 'ASHLEY', 'ATB': 'ATTENBOROUGH', 'ATH': 'ATHERSTONE', 'ATL': 'ATTLEBOROUGH', 'ATN': 'ATHERTON', 'ATT': 'ATTADALE', 'AUD': 'AUDLEY END', 'AUG': 'AUGHTON PARK', 'AUI': 'ARDLUI', 'AUK': 'AUCHINLECK', 'AUL': 'ASHTON U L MTLK', 'AUR': 'ABERDOUR', 'AUW': 'ASCOTT-UNDER-WYCHWOOD', 'AVF': 'AVONCLIFF', 'AVM': 'AVIEMORE', 'AVN': 'AVONMOUTH', 'AVP': 'AYLESBURY VALE PARKWAY', 'AVY': 'ABERDOVEY', 'AWK': 'ADWICK', 'AWL': 'ASHTON WEST MTLK', 'AWM': 'ASHWELL & MORDEN', 'AWT': 'ARMATHWAITE', 'AXM': 'AXMINSTER', 'AXP': 'ALEXANDRA PARADE', 'AYH': 'AYLESHAM', 'AYL': 'AYLESFORD', 'AYP': 'ALBANY PARK', 'AYR': 'AYR', 'AYS': 'AYLESBURY', 'AYW': 'ABERYSTWYTH', 'BAA': 'BARNHAM', 'BAB': 'BALCOMBE', 'BAC': 'BACHE', 'BAD': 'BANSTEAD', 'BAG': 'BAGSHOT', 'BAH': 'BANK HALL', 'BAI': 'BLAIRHILL', 'BAJ': 'BAGLAN', 'BAK': 'BATTERSEA PARK', 'BAL': 'BALHAM', 'BAM': 'BAMFORD', 'BAN': 'BANBURY', 'BAR': 'BARE LANE', 'BAS': 'BERE ALSTON', 'BAT': 'BATTLE', 'BAU': 'BARTON-ON-HUMBER', 'BAV': 'BARROW HAVEN', 'BAW': 'BLACKWATER', 'BAY': 'BAYFORD', 'BBG': 'BISHOPBRIGGS', 'BBK': 'BILBROOK', 'BBL': 'BAT & BALL', 'BBN': 'BLACKBURN', 'BBS': 'BORDESLEY', 'BBW': 'BERRY BROW', 'BCB': 'BURSCOUGH BRIDGE', 'BCC': 'BECCLES', 'BCE': 'BRACKNELL', 'BCF': 'BEACONSFIELD', 'BCG': 'BIRCHGROVE', 'BCH': 'BIRCHINGTON-ON-SEA', 'BCJ': 'BURSCOUGH JUNCTION', 'BCK': 'BUCKLEY', 'BCN': 'BRANCHTON', 'BCS': 'BICESTER NORTH', 'BCU': 'BROCKENHURST', 'BCV': 'BRUCE GROVE', 'BCY': 'BROCKLEY', 'BCZ': 'BRENT CROSS WEST', 'BDA': 'BRUNDALL', 'BDB': 'BROADBOTTOM', 'BDC': 'BRODICK', 'BDD': 'BROADFORD', 'BDF': 'BODMIN MOUNT FOLLY', 'BDG': 'BRIDGETON', 'BDH': 'BEDHAMPTON', 'BDI': 'BRADFORD INTERCHANGE', 'BDK': 'BALDOCK', 'BDL': 'BIRKDALE', 'BDM': 'BEDFORD', 'BDN': 'BRADING', 'BDQ': 'BRADFORD FORSTER SQUARE', 'BDS': 'BOND STREET EL', 'BDT': 'BRIDLINGTON', 'BDW': 'BEDWYN', 'BDY': 'BREDBURY', 'BEA': 'BRIDGE OF ALLAN', 'BEB': 'BEBINGTON', 'BEC': 'BECKENHAM HILL', 'BEE': 'BEESTON', 'BEF': 'BENFLEET', 'BEG': 'BELTRING', 'BEH': 'BEDWORTH', 'BEL': 'BEAULY', 'BEM': 'BEMPTON', 'BEN': 'BENTHAM', 'BEP': 'BERMUDA PARK', 'BER': 'BEARLEY', 'BES': 'BESCAR LANE', 'BET': 'BETHNAL GREEN', 'BEU': 'BEAULIEU ROAD', 'BEV': 'BEVERLEY', 'BEX': 'BEXHILL', 'BEY': 'BEN RHYDDING', 'BFA': 'BELFAST PORT', 'BFB': 'BELFORD BUS', 'BFC': 'BELFAST LANYON PLACE', 'BFD': 'BRENTFORD', 'BFE': 'BERE FERRERS', 'BFF': 'BLAENAU FFESTINIOG', 'BFN': 'BYFLEET & NEW HAW', 'BFR': 'LONDON BLACKFRIARS', 'BGA': 'BRUNDALL GARDENS', 'BGD': 'BARGOED', 'BGE': 'BROAD GREEN', 'BGG': 'BRIGG', 'BGH': 'BRIGHOUSE', 'BGI': 'BARGEDDIE', 'BGK': 'BAGULEY MTLK', 'BGL': 'BUGLE', 'BGM': 'BELLINGHAM', 'BGN': 'BRIDGEND', 'BGS': 'BOGSTON', 'BGV': 'BARKING RIVERSIDE', 'BHC': 'BALLOCH', 'BHD': 'BRITHDIR', 'BHG': 'BATHGATE', 'BHI': 'BIRMINGHAM INTERNATIONAL', 'BHK': 'BUSH HILL PARK', 'BHM': 'BIRMINGHAM NEW STREET', 'BHO': 'BLACKHORSE ROAD', 'BHR': 'BUILTH ROAD', 'BHS': 'BROCKHOLES', 'BIA': 'BISHOP AUCKLAND', 'BIC': 'BILLERICAY', 'BID': 'BIDSTON', 'BIF': 'BARROW-IN-FURNESS', 'BIG': 'BILLINGSHURST', 'BIK': 'BIRKBECK', 'BIL': 'BILLINGHAM', 'BIN': 'BINGHAM', 'BIO': 'BAILLIESTON', 'BIP': 'BISHOPSTONE', 'BIS': 'BISHOPS STORTFORD', 'BIT': 'BICESTER VILLAGE', 'BIW': 'BIGGLESWADE', 'BIY': 'BINGLEY', 'BKA': 'BOOKHAM', 'BKC': 'BIRKENHEAD CENTRAL', 'BKD': 'BLAKEDOWN', 'BKG': 'BARKING', 'BKH': 'BLACKHEATH', 'BKI': 'BIRKENHEAD 12 QUAYS', 'BKJ': 'BECKENHAM JUNCTION', 'BKL': 'BICKLEY', 'BKM': 'BERKHAMSTED', 'BKN': 'BIRKENHEAD NORTH', 'BKO': 'BROOKWOOD', 'BKP': 'BIRKENHEAD PARK', 'BKQ': 'BIRKENHEAD HAMILTON SQUARE', 'BKR': 'BLACKRIDGE', 'BKS': 'BEKESBOURNE', 'BKT': 'BLAKE STREET', 'BKV': 'BOWKER VALE MTLK', 'BKW': 'BERKSWELL', 'BLA': 'BLAIR ATHOLL', 'BLB': 'BATTLESBRIDGE', 'BLD': 'BAILDON', 'BLE': 'BRAMLEY (WEST YORKSHIRE)', 'BLG': 'BELLGROVE', 'BLH': 'BELLSHILL', 'BLK': 'BLACKROD', 'BLL': 'BARDON MILL', 'BLM': 'BELMONT', 'BLN': 'BLUNDELLSANDS & CROSBY', 'BLO': 'BLAYDON', 'BLP': 'BELPER', 'BLT': 'BLANTYRE', 'BLV': 'BELLE VUE', 'BLW': 'BULWELL', 'BLX': 'BLOXWICH', 'BLY': 'BLETCHLEY', 'BMB': 'BAMBER BRIDGE', 'BMC': 'BROMLEY CROSS', 'BMD': 'BRIMSDOWN', 'BME': 'BROOME', 'BMF': 'BROOMFLEET', 'BMG': 'BARMING', 'BMH': 'BOURNEMOUTH', 'BML': 'BRAMHALL', 'BMM': 'BARLOW M RD MTLK', 'BMN': 'BROMLEY NORTH', 'BMO': 'BIRMINGHAM MOOR STREET', 'BMP': 'BRAMPTON (CUMBRIA)', 'BMR': 'BROMBOROUGH RAKE', 'BMS': 'BROMLEY SOUTH', 'BMT': 'BEDMINSTER', 'BMV': 'BROMSGROVE', 'BMY': 'BRAMLEY (HANTS)', 'BNA': 'BURNAGE', 'BNC': 'BURNLEY CENTRAL', 'BND': 'BRANDON', 'BNE': 'BOURNE END', 'BNF': 'BRITON FERRY', 'BNG': 'BANGOR (GWYNEDD)', 'BNH': 'BARNEHURST', 'BNI': 'BARNES BRIDGE', 'BNK': 'BENCHILL MTLK', 'BNL': 'BARNHILL', 'BNM': 'BURNHAM (BUCKS)', 'BNP': 'BARNSTAPLE', 'BNR': 'BROCKLEY WHINS', 'BNS': 'BARNES', 'BNT': 'BRINNINGTON', 'BNV': 'BANAVIE', 'BNW': 'BOOTLE NEW STRAND', 'BNY': 'BARNSLEY', 'BOA': 'BRADFORD-ON-AVON', 'BOB' : "BESSES O' TH' BARN MTLK", 'BOC': 'BOOTLE (CUMBRIA)', 'BOD': 'BODMIN PARKWAY', 'BOE': 'BOTLEY', 'BOG': 'BOGNOR REGIS', 'BOH': 'BOSHAM', 'BOK': 'BROOKLANDS MTLK', 'BOM': 'BROMBOROUGH', 'BON': 'BOLTON', 'BOP': 'BOWES PARK', 'BOR': 'BODORGAN', 'BOT': 'BOOTLE ORIEL ROAD', 'BOW': 'BOW STREET', 'BPB': 'BLACKPOOL PLEASURE BEACH', 'BPK': 'BROOKMANS PARK', 'BPL': 'BARLASTON ORCHARD PLACE', 'BPN': 'BLACKPOOL NORTH', 'BPO': 'BRIDPORT BUS X51', 'BPS': 'BLACKPOOL SOUTH', 'BPT': 'BISHOPTON (RENFREWSHIRE)', 'BPW': 'BRISTOL PARKWAY', 'BRA': 'BRORA', 'BRC': 'BREICH', 'BRD': 'BROADWAY MTLK', 'BRE': 'BRENTWOOD', 'BRF': 'BRIERFIELD', 'BRG': 'BOROUGH GREEN & WROTHAM', 'BRH': 'BORTH', 'BRI': 'BRISTOL TEMPLE MEADS', 'BRK': 'BERWICK (SUSSEX)', 'BRL': 'BARRHILL', 'BRM': 'BARMOUTH', 'BRN': 'BEARSDEN', 'BRO': 'BRIDGE OF ORCHY', 'BRP': 'BRAMPTON (SUFFOLK)', 'BRR': 'BARRHEAD', 'BRS': 'BERRYLANDS', 'BRT': 'BARLASTON', 'BRU': 'BRUTON', 'BRV': 'BOURNVILLE', 'BRW': 'BRUNSWICK', 'BRX': 'BRIXTON', 'BRY': 'BARRY', 'BRZ': 'BURTON ROAD MTLK', 'BSB': 'BLEASBY', 'BSC': 'BESCOT STADIUM', 'BSD': 'BEARSTED', 'BSE': 'BURY ST EDMUNDS', 'BSH': 'BUSHEY', 'BSI': 'BALMOSSIE', 'BSJ': 'BEDFORD ST JOHNS', 'BSK': 'BASINGSTOKE', 'BSL': 'BEASDALE', 'BSM': 'BRANKSOME', 'BSN': 'BOSTON', 'BSO': 'BASILDON', 'BSP': 'BRONDESBURY PARK', 'BSR': 'BROADSTAIRS', 'BSS': 'BARASSIE', 'BST': 'BISHOPSTONE HILL RISE', 'BSU': 'BRUNSTANE', 'BSV': 'BUCKSHAW PARKWAY', 'BSW': 'BIRMINGHAM SNOW HILL', 'BSY': 'BRONDESBURY', 'BTB': 'BARNETBY', 'BTD': 'BOLTON-UPON-DEARNE', 'BTE': 'BITTERNE', 'BTF': 'BOTTESFORD', 'BTG': 'BARNT GREEN', 'BTH': 'BATH SPA', 'BTL': 'BATLEY', 'BTN': 'BRIGHTON', 'BTO': 'BETCHWORTH', 'BTP': 'BRAINTREE FREEPORT', 'BTR': 'BRAINTREE', 'BTS': 'BURNTISLAND', 'BTT': 'BATTERSBY', 'BTY': 'BENTLEY (HANTS)', 'BUA': 'BUDE BUS', 'BUB': 'BURNLEY BARRACKS', 'BUC': 'BUCKENHAM', 'BUD': 'BURNESIDE (CUMBRIA)', 'BUE': 'BURES', 'BUG': 'BURGESS HILL', 'BUH': 'BROUGH', 'BUI': 'BURNSIDE STRATHCLYDE', 'BUJ': 'BURTON JOYCE', 'BUK': 'BUCKNELL', 'BUL': 'BUTLERS LANE', 'BUO': 'BURSLEDON', 'BUR': 'BURY MTLK', 'BUS': 'BUSBY', 'BUT': 'BURTON-ON-TRENT', 'BUU': 'BURNHAM-ON-CROUCH', 'BUW': 'BURLEY-IN-WHARFEDALE', 'BUX': 'BUXTON', 'BUY': 'BURLEY PARK', 'BVD': 'BELVEDERE', 'BWB': 'BOW BRICKHILL', 'BWD': 'BIRCHWOOD', 'BWG': 'BOWLING', 'BWK': 'BERWICK-UPON-TWEED', 'BWN': 'BLOXWICH NORTH', 'BWO': 'BRICKET WOOD', 'BWS': 'BARROW UPON SOAR', 'BWT': 'BRIDGWATER', 'BXB': 'BROXBOURNE', 'BXD': 'BUXTED', 'BXH': 'BEXLEYHEATH', 'BXW': 'BOXHILL & WESTHUMBLE', 'BXX': 'BOXHILL BURFD BR', 'BXY': 'BEXLEY', 'BYA': 'BERNEY ARMS', 'BYB': 'BLYTHE BRIDGE', 'BYC': 'BETWS-Y-COED', 'BYD': 'BARRY DOCKS', 'BYE': 'BYNEA', 'BYF': 'BROUGHTY FERRY', 'BYI': 'BARRY ISLAND', 'BYK': 'BENTLEY (SOUTH YORKSHIRE)', 'BYL': 'BARRY LINKS', 'BYM': 'BURNLEY MANCHESTER ROAD', 'BYN': 'BRYN', 'BYS': 'BRAYSTONES', 'CAA': 'COVENTRY ARENA', 'CAC': 'CALDERCRUIX', 'CAD': 'CADOXTON', 'CAG': 'CARRBRIDGE', 'CAK': 'CARK & CARTMEL', 'CAM': 'CAMBERLEY', 'CAN': 'CARNOUSTIE', 'CAO': 'CANNOCK', 'CAR': 'CARLISLE', 'CAS': 'CASTLETON (MANCHESTER)', 'CAT': 'CATERHAM', 'CAU': 'CAUSELAND', 'CAY': 'CARNTYNE', 'CBB': 'CARBIS BAY', 'CBC': 'COATBRIDGE CENTRAL', 'CBD': 'CONON BRIDGE', 'CBE': 'CANTERBURY EAST', 'CBG': 'CAMBRIDGE', 'CBH': 'CAMBRIDGE HEATH', 'CBK': 'CRANBROOK (DEVON)', 'CBL': 'CAMBUSLANG', 'CBN': 'CAMBORNE', 'CBP': 'CASTLE BAR PARK', 'CBR': 'COOKSBRIDGE', 'CBS': 'COATBRIDGE SUNNYSIDE', 'CBW': 'CANTERBURY WEST', 'CBY': 'CHARLBURY', 'CCB': 'CARDIFF CENTRAL BUS STN', 'CCC': 'CRICCIETH', 'CCH': 'CHICHESTER', 'CCK': 'CHINNOR RAIL', 'CCT': 'CATHCART', 'CDB': 'CARDIFF BAY', 'CDD': 'CARDENDEN', 'CDF': 'CARDIFF CENTRAL', 'CDI': 'CREDITON', 'CDN': 'COULSDON TOWN', 'CDO': 'CARDONALD', 'CDQ': 'CARDIFF QUEEN STREET', 'CDR': 'CARDROSS', 'CDS': 'COULSDON SOUTH', 'CDT': 'CALDICOT', 'CDU': 'CAM & DURSLEY', 'CDY': 'CARTSDYKE', 'CEA': 'CLELAND', 'CED': 'CHEDDINGTON', 'CEF': 'CHAPEL-EN-LE-FRITH', 'CEH': 'COLESHILL PARKWAY', 'CEL': 'CHELFORD', 'CEM': 'CENTRL PARK MTLK', 'CES': 'CRESSING', 'CET': 'COLCHESTER TOWN', 'CEY': 'CONONLEY', 'CFB': 'CATFORD BRIDGE', 'CFD': 'CASTLEFORD', 'CFF': 'CROFTFOOT', 'CFH': 'CHAFFORD HUNDRED', 'CFL': 'CROSSFLATTS', 'CFN': 'CLIFTON DOWN', 'CFO': 'CHALFONT & LATIMER UND', 'CFR': 'CHANDLERS FORD', 'CFT': 'CROFTON PARK', 'CGD': 'CRAIGENDORAN', 'CGM': 'COTTINGHAM', 'CGN': 'COGAN', 'CGT': 'CATTERICK GARRISON BUS', 'CGW': 'CAERGWRLE', 'CHB': 'CLAYTON HAL MTLK', 'CHC': 'CHARING CROSS (GLASGOW)', 'CHD': 'CHESTERFIELD', 'CHE': 'CHEAM', 'CHF': 'CHURCH FENTON', 'CHG': 'CHARING (KENT)', 'CHH': 'CHRISTS HOSPITAL', 'CHI': 'CHINGFORD', 'CHK': 'CHISWICK', 'CHL': 'CHILWORTH', 'CHM': 'CHELMSFORD', 'CHN': 'CHESHUNT', 'CHO': 'CHOLSEY', 'CHP': 'CHIPSTEAD', 'CHR': 'CHRISTCHURCH', 'CHT': 'CHATHILL', 'CHU': 'CHEADLE HULME', 'CHW': 'CHALKWELL', 'CHX': 'LONDON CHARING CROSS', 'CHY': 'CHERTSEY', 'CIC': 'PARK LANE (SUNDERLAND)', 'CIL': 'CHILHAM', 'CIM': 'CILMERI', 'CIR': 'CALEDONIAN ROAD & BARNSBURY', 'CIT': 'CHISLEHURST', 'CKH': 'CORKERHILL', 'CKL': 'CORKICKLE', 'CKN': 'CREWKERNE', 'CKS': 'CLARKSTON', 'CKT': 'CROOKSTON', 'CKY': 'CROSSKEYS', 'CLA': 'CLANDON', 'CLC': 'CASTLE CARY', 'CLD': 'CHELSFIELD', 'CLE': 'CLEETHORPES', 'CLG': 'CLAYGATE', 'CLH': 'CLITHEROE', 'CLI': 'CLIFTON (MANCHESTER)', 'CLJ': 'CLAPHAM JUNCTION', 'CLK': 'CLOCK HOUSE', 'CLL': 'COLLINGTON', 'CLM': 'COLLINGHAM', 'CLN': 'CHAPELTOWN (SOUTH YORKSHIRE)', 'CLO': 'COLL (ISLE OF)', 'CLP': 'CLAPHAM HIGH STREET', 'CLR': 'CLARBESTON ROAD', 'CLS': 'CHESTER-LE-STREET', 'CLT': 'CLACTON-ON-SEA', 'CLU': 'CARLUKE', 'CLV': 'CLAVERDON', 'CLW': 'CHORLEYWOOD UND', 'CLY': 'CHINLEY', 'CMB': 'CAMBRIDGE NORTH', 'CMD': 'CAMDEN ROAD', 'CME': 'COMBE (OXON)', 'CMF': 'CROMFORD', 'CMH': 'CWMBACH', 'CMK': 'CROSSACRES MTLK', 'CML': 'CARMYLE', 'CMN': 'CARMARTHEN', 'CMO': 'CAMELON', 'CMR': 'CROMER', 'CMY': 'CROSSMYLOOF', 'CNA': 'CANNA (ISLE OF)', 'CNE': 'COLNE', 'CNF': 'CARNFORTH', 'CNG': 'CONGLETON', 'CNK': 'CHORLTON MTLK', 'CNL': 'CANLEY', 'CNM': 'CHELTENHAM SPA', 'CNN': 'CANONBURY', 'CNO': 'CHETNOLE', 'CNP': 'CONWAY PARK', 'CNR': 'CRIANLARICH', 'CNS': 'CONISBROUGH', 'CNW': 'CONWY', 'CNY': 'CANTLEY', 'COA': 'COATDYKE', 'COB': 'COODEN BEACH', 'COC': 'COWDEN CROSROADS', 'COE': 'COOMBE JUNCTION HALT', 'COH': 'CROWBOROUGH', 'COI': 'CROSSHILL', 'COL': 'COLCHESTER', 'COM': 'COMMONDALE', 'CON': 'CONNEL FERRY', 'COO': 'COOKHAM', 'COP': 'COPPLESTONE', 'COR': 'CORBY', 'COS': 'COSFORD', 'COT': 'COTTINGLEY', 'COV': 'COVENTRY', 'COW': 'COWDENBEATH', 'COY': 'CORYTON', 'COZ': 'CORNBROOK MTLK', 'CPA': 'CORPACH', 'CPH': 'CAERPHILLY', 'CPK': 'CARPENDERS PARK', 'CPM': 'CHIPPENHAM', 'CPN': 'CHAPELTON (DEVON)', 'CPT': 'CLAPTON', 'CPU': 'CAPENHURST', 'CPW': 'CHEPSTOW', 'CPY': 'CLAPHAM (NORTH YORKSHIRE)', 'CRA': 'CRADLEY HEATH', 'CRB': 'CORBRIDGE', 'CRD': 'CHESTER ROAD', 'CRE': 'CREWE', 'CRF': 'CARFIN', 'CRG': 'CROSS GATES', 'CRH': 'CROUCH HILL', 'CRI': 'CRICKLEWOOD', 'CRJ': 'CRUMPSALL MTLK', 'CRK': 'CHIRK', 'CRL': 'CHORLEY', 'CRM': 'CRAMLINGTON', 'CRN': 'CROWTHORNE', 'CRO': 'CROY', 'CRP': 'CAIRNRYAN', 'CRQ': 'CEMETERY RD MTLK', 'CRR': 'CORROUR', 'CRS': 'CARSTAIRS', 'CRT': 'CHARTHAM', 'CRU': 'CRAIGNURE', 'CRV': 'CRAVEN ARMS', 'CRW': 'CRAWLEY', 'CRY': 'CRAYFORD', 'CSA': 'COSHAM', 'CSB': 'CARSHALTON BEECHES', 'CSD': "COBHAM & STOKE D'ABERNON", 'CSG': 'CRESSINGTON', 'CSH': 'CARSHALTON', 'CSK': 'CALSTOCK', 'CSL': 'CODSALL', 'CSM': 'CASTLETON MOOR', 'CSN': 'CHESSINGTON NORTH', 'CSO': 'CROSTON', 'CSR': 'CHASSEN ROAD', 'CSS': 'CHESSINGTON SOUTH', 'CST': 'LONDON CANNON STREET', 'CSW': 'CHESTFIELD & SWALECLIFFE', 'CSY': 'COSELEY', 'CTB': 'CASTLEBAY', 'CTE': 'CHATELHERAULT', 'CTF': 'CATFORD', 'CTH': 'CHADWELL HEATH', 'CTK': 'CITY THAMESLINK', 'CTL': 'CATTAL', 'CTM': 'CHATHAM', 'CTN': 'CHARLTON', 'CTO': 'CARLTON', 'CTR': 'CHESTER', 'CTT': 'CHURCH STRETTON', 'CTW': 'CHURCH & OSWALDTWISTLE', 'CUA': 'CULRAIN', 'CUB': 'CUMBERNAULD', 'CUD': 'CUDDINGTON', 'CUF': 'CUFFLEY', 'CUH': 'CURRIEHILL', 'CUL': 'CUMBRAE', 'CUM': 'CULHAM', 'CUP': 'CUPAR', 'CUS': 'CUSTOM HOUSE EL', 'CUW': 'CLUNDERWEN', 'CUX': 'CUXTON', 'CVG': 'CHARLBURY NINE ACRES LANE', 'CWB': 'COLWYN BAY', 'CWC': 'CHAPPEL & WAKES COLNE', 'CWD': 'CRESWELL', 'CWE': 'CROWLE', 'CWH': 'CREWS HILL', 'CWL': 'COLWALL', 'CWM': 'CWMBRAN', 'CWN': 'COWDEN', 'CWS': 'CAERSWS', 'CWU': 'CROWHURST', 'CWX': 'CANARY WHARF EL', 'CYB': 'CEFN-Y-BEDD', 'CYK': 'CLYDEBANK', 'CYN': 'CYNGHORDY', 'CYP': 'CRYSTAL PALACE', 'CYS': 'CATHAYS', 'CYT': 'CHERRY TREE', 'DAG': 'DALGETY BAY', 'DAK': 'DALMARNOCK', 'DAL': 'DALMALLY', 'DAM': 'DALMENY', 'DAN': 'DARNALL', 'DAR': 'DARLINGTON', 'DAT': 'DATCHET', 'DBC': 'DUMBARTON CENTRAL', 'DBD': 'DENBY DALE', 'DBE': 'DUMBARTON EAST', 'DBG': 'MOTTISFONT & DUNBRIDGE', 'DBL': 'DUNBLANE', 'DBR': 'DERBY ROAD (IPSWICH)', 'DBY': 'DERBY', 'DCG': 'DUNCRAIG', 'DCH': 'DORCHESTER SOUTH', 'DCL': 'DUBLIN CONNOLLY (CIE)', 'DCT': 'DANESCOURT', 'DCW': 'DORCHESTER WEST', 'DDG': 'DORRIDGE', 'DDK': 'DAGENHAM DOCK', 'DDP': 'DUDLEY PORT', 'DEA': 'DEAL', 'DEB': 'DEREHAM MARKET PLACE', 'DEE': 'DUNDEE', 'DEN': 'DEAN', 'DEP': 'DEPTFORD', 'DEW': 'DEWSBURY', 'DFD': 'DARTFORD', 'DFE': 'DUNFERMLINE CITY', 'DFI': 'DUFFIELD', 'DFL': 'DUNFERMLINE QUEEN MARGARET', 'DFP': 'DUBLIN FYPT I.F', 'DFR': 'DRUMFROCHAR', 'DGC': 'DENHAM GOLF CLUB', 'DGL': 'DINGLE ROAD', 'DGS': 'DOUGLAS IOM', 'DGT': 'DEANSGATE', 'DGY': 'DEGANWY', 'DHM': 'DURHAM', 'DHN': 'DEIGHTON', 'DHT': 'DUBLIN HEUSTON (CIE)', 'DID': 'DIDCOT PARKWAY', 'DIG': 'DIGBY & SOWTON', 'DIN': 'DINGWALL', 'DIS': 'DISS', 'DKD': 'DUNKELD & BIRNAM', 'DKG': 'DORKING', 'DKR': 'DERKER MTLK', 'DKT': 'DORKING WEST', 'DLE': 'DULOE(CAUSELAND)', 'DLG': 'DOLGARROG', 'DLH': 'DOLEHAM', 'DLJ': 'DALSTON JUNCTION', 'DLK': 'DALSTON KINGSLAND', 'DLM': 'DELAMERE', 'DLR': 'DALREOCH', 'DLS': 'DALSTON (CUMBRIA)', 'DLT': 'DALTON', 'DLW': 'DALWHINNIE', 'DLY': 'DALRY', 'DMC': 'DRUMCHAPEL', 'DMF': 'DUMFRIES', 'DMG': 'DINAS (RHONDDA)', 'DMH': 'DILTON MARSH', 'DMK': 'DENMARK HILL', 'DML': 'DROYLESDEN MTLK', 'DMP': 'DUMPTON PARK', 'DMR': 'DALMUIR', 'DMS': 'DORMANS', 'DMY': 'DRUMRY', 'DND': 'DINSDALE', 'DNG': 'DUNTON GREEN', 'DNL': 'DUNLOP', 'DNM': 'DENHAM', 'DNS': 'DINAS POWYS', 'DNT': 'DENT', 'DNY': 'DANBY', 'DOC': 'DOCKYARD (DEVONPORT)', 'DOD': 'DODWORTH', 'DOL': 'DOLAU', 'DON': 'DONCASTER', 'DOR': 'DORE & TOTLEY', 'DOT': 'DUNSTON', 'DOW': 'DOWNHAM MARKET', 'DPD': 'DORKING DEEPDENE', 'DPS': 'DUBLIN PORT STENA', 'DPT': 'DEVONPORT', 'DRD': 'DANE ROAD-MTLK', 'DRF': 'DRIFFIELD', 'DRG': 'DRAYTON GREEN', 'DRI': 'DRIGG', 'DRM': 'DREM', 'DRN': 'DUIRINISH', 'DRO': 'DRONFIELD', 'DRT': 'DARTON', 'DRU': 'DRUMGELLOCH', 'DSL': 'DISLEY', 'DSM': 'DARSHAM', 'DST': 'DUKE STREET', 'DSY': 'DAISY HILL', 'DTG': 'DINTING', 'DTN': 'DENTON', 'DTW': 'DROITWICH SPA', 'DUD': 'DUDDESTON', 'DUL': 'DULLINGHAM', 'DUM': 'DUMBRECK', 'DUN': 'DUNBAR', 'DUO': 'DUNOON', 'DUR': 'DURRINGTON-ON-SEA', 'DUU': 'DUNS', 'DVC': 'DOVERCOURT', 'DVH': 'DOVE HOLES', 'DVM': 'DIDSBURY VILLAGE MTLK', 'DVN': 'DAVENPORT', 'DVP': 'DOVER PRIORY', 'DVY': 'DOVEY JUNCTION', 'DWD': 'DOLWYDDELAN', 'DWL': 'DAWLISH', 'DWN': 'DARWEN', 'DWW': 'DAWLISH WARREN', 'DYC': 'DYCE', 'DYF': 'DYFFRYN ARDUDWY', 'DYP': 'DRAYTON PARK', 'DZY': 'DANZEY', 'EAD': 'EARLSFIELD', 'EAG': 'EAGLESCLIFFE', 'EAL': 'EALING BROADWAY', 'EAR': 'EARLEY', 'EAS': 'EARLSTON', 'EBA': 'EUXTON BALSHAW LANE', 'EBB': 'EBBW VALE TOWN', 'EBD': 'EBBSFLEET INTERNATIONAL', 'EBK': 'EASTBROOK', 'EBL': 'EAST BOLDON', 'EBN': 'EASTBOURNE', 'EBR': 'EDENBRIDGE', 'EBT': 'EDENBRIDGE TOWN', 'EBV': 'EBBW VALE PARKWAY', 'ECC': 'ECCLES', 'ECL': 'ECCLESTON PARK', 'ECM': 'ECCLES MTLK', 'ECP': 'ENERGLYN & CHURCHILL PARK', 'ECR': 'EAST CROYDON', 'ECS': 'ECCLES ROAD', 'ECW': 'COWES EAST RFSHP', 'EDA': 'EDINBURGH AIRPORT BUS/TRAM', 'EDB': 'EDINBURGH', 'EDG': 'EDGE HILL', 'EDL': 'EDALE', 'EDM': 'E DIDSBURY MTLK', 'EDN': 'EDEN PARK', 'EDP': 'EDINBURGH PARK', 'EDR': 'EDMONTON GREEN', 'EDW': 'EAST DULWICH', 'EDY': 'EAST DIDSBURY', 'EDZ': 'EDEN CAMP', 'EFF': 'EFFINGHAM JUNCTION', 'EFL': 'EAST FARLEIGH', 'EGF': 'EAST GARFORTH', 'EGG': 'EGGESFORD', 'EGH': 'EGHAM', 'EGN': 'EASTRINGTON', 'EGR': 'EAST GRINSTEAD', 'EGT': 'EGTON', 'EGY': 'EDINBURGH GATEWAY', 'EHC': 'ETIHAD CAMP MTLK', 'EIG': 'EIGG (ISLE OF)', 'EKB': 'ESKBANK', 'EKL': 'EAST KILBRIDE', 'ELD': 'EARLSWOOD (SURREY)', 'ELE': 'ELMERS END', 'ELG': 'ELGIN', 'ELM': 'EDGE LANE MTLK', 'ELO': 'ELTON & ORSTON', 'ELP': 'ELLESMERE PORT', 'ELR': 'ELSECAR', 'ELS': 'ELSTREE & BOREHAMWOOD', 'ELT': 'EAST LINTON', 'ELW': 'ELTHAM', 'ELY': 'ELY', 'EMA': 'EAST M AIR/DBY', 'EMD': 'EAST MIDLANDS PARKWAY', 'EML': 'EAST MALLING', 'EMP': 'EMERSON PARK', 'EMS': 'EMSWORTH', 'ENC': 'ENFIELD CHASE', 'ENF': 'ENFIELD TOWN', 'ENL': 'ENFIELD LOCK', 'ENT': 'ENTWISTLE', 'EPD': 'EPSOM DOWNS', 'EPH': 'ELEPHANT & CASTLE', 'EPS': 'EPSOM', 'ERA': 'EASTHAM RAKE', 'ERB': 'ERIDGE A26 BUS S', 'ERD': 'ERDINGTON', 'ERH': 'ERITH', 'ERI': 'ERIDGE', 'ERL': 'EARLESTOWN', 'ESD': 'ELMSTEAD WOODS', 'ESH': 'ESHER', 'ESL': 'EASTLEIGH', 'ESM': 'ELSENHAM', 'EST': 'EASTERHOUSE', 'ESW': 'ELMSWELL', 'ETC': 'ETCHINGHAM', 'ETL': 'EAST TILBURY', 'EUS': 'LONDON EUSTON', 'EVE': 'EVESHAM', 'EWD': 'EARLSWOOD (WEST MIDLANDS)', 'EWE': 'EWELL EAST', 'EWR': 'EAST WORTHING', 'EWW': 'EWELL WEST', 'EXC': 'EXETER CENTRAL', 'EXD': 'EXETER ST DAVIDS', 'EXG': 'EXHIBITION CENTRE (GLASGOW)', 'EXM': 'EXMOUTH', 'EXN': 'EXTON', 'EXQ': 'EXCHGE QUAY MTLK', 'EXR': 'ESSEX ROAD', 'EXT': 'EXETER ST THOMAS', 'EYN': 'EYNSFORD', 'FAL': 'FALMOUTH DOCKS', 'FAV': 'FAVERSHAM', 'FAZ': 'FAZAKERLEY', 'FBY': 'FORMBY', 'FCN': 'FALCONWOOD', 'FEA': 'FEATHERSTONE', 'FEG': 'FELLGATE METRO', 'FEL': 'FELTHAM', 'FEN': 'FENNY STRATFORD', 'FER': 'FERNHILL', 'FFA': 'FFAIRFACH', 'FFD': 'FRESHFORD', 'FGH': 'FISHGUARD HARBOUR', 'FGT': 'FAYGATE', 'FGW': 'FISHGUARD & GOODWICK', 'FHM': 'FREEHOLD MTLK', 'FIL': 'FILEY', 'FIN': 'FINSTOCK', 'FIT': 'FILTON ABBEY WOOD', 'FKC': 'FOLKESTONE CENTRAL', 'FKG': 'FALKIRK GRAHAMSTON', 'FKK': 'FALKIRK HIGH', 'FKW': 'FOLKESTONE WEST', 'FLD': 'FAULDHOUSE', 'FLE': 'FLEET', 'FLF': 'FLOWERY FIELD', 'FLI': 'FLIXTON', 'FLM': 'FLIMBY', 'FLN': 'FLINT', 'FLS': 'FAILSWORTH MTLK', 'FLT': 'FLITWICK', 'FLW': 'FULWELL', 'FLX': 'FELIXSTOWE', 'FML': 'FRIMLEY', 'FMR': 'FALMER', 'FMT': 'FALMOUTH TOWN', 'FNB': 'FARNBOROUGH (MAIN)', 'FNC': 'FARNCOMBE', 'FNH': 'FARNHAM', 'FNN': 'FARNBOROUGH NORTH', 'FNR': 'FARNINGHAM ROAD', 'FNT': 'FENITON', 'FNV': 'FURNESS VALE', 'FNW': 'FARNWORTH', 'FNY': 'FINCHLEY ROAD & FROGNAL', 'FOD': 'FORD', 'FOG': 'FOREST GATE', 'FOH': 'FOREST HILL', 'FOK': 'FOUR OAKS', 'FOR': 'FORRES', 'FOX': 'FOXFIELD', 'FPK': 'FINSBURY PARK', 'FRB': 'FAIRBOURNE', 'FRD': 'FRODSHAM', 'FRE': 'FRESHFIELD', 'FRF': 'FAIRFIELD', 'FRI': 'FRINTON-ON-SEA', 'FRL': 'FAIRLIE', 'FRM': 'FAREHAM', 'FRN': 'FEARN', 'FRO': 'FROME', 'FRS': 'FORSINARD', 'FRT': 'FRANT', 'FRW': 'FAIRWATER', 'FRY': 'FERRIBY', 'FSB': 'FISHBOURNE (SUSSEX)', 'FSG': 'FISHERSGATE', 'FSK': 'FISKERTON', 'FST': 'LONDON FENCHURCH STREET', 'FTM': 'FORT MATILDA', 'FTN': 'FRATTON', 'FTW': 'FORT WILLIAM', 'FWN': 'FIRSWOOD MTLK', 'FWY': 'FIVE WAYS', 'FXN': 'FOXTON', 'FYS': 'FERRYSIDE', 'FZH': 'FRIZINGHALL', 'FZP': 'FURZE PLATT', 'FZW': 'FITZWILLIAM', 'GAL': 'GALASHIELS', 'GAR': 'GARROWHILL', 'GBD': 'GILBERDYKE', 'GBG': 'GOREBRIDGE', 'GBK': 'GREENBANK', 'GBL': 'GAINSBOROUGH LEA ROAD', 'GBS': 'GORING-BY-SEA', 'GCH': 'GARELOCHHEAD', 'GCR': 'GLOUCESTER', 'GCT': 'GREAT COATES', 'GCW': 'GLAN CONWY', 'GDH': 'GORDON HILL', 'GDL': 'GODLEY', 'GDN': 'GODSTONE', 'GDP': 'GIDEA PARK', 'GEA': 'GRETNA GREEN', 'GER': 'GERRARDS CROSS', 'GFD': 'GREENFORD', 'GFF': 'GILFACH FARGOED', 'GFN': 'GIFFNOCK', 'GGJ': 'GEORGEMAS JUNCTION', 'GGV': 'GARGRAVE', 'GIG': 'GIGGLESWICK', 'GIL': 'GILLINGHAM (DORSET)', 'GIP': 'GIPSY HILL', 'GIR': 'GIRVAN', 'GKC': 'GREENOCK CENTRAL', 'GKW': 'GREENOCK WEST', 'GLC': 'GLASGOW CENTRAL', 'GLD': 'GUILDFORD', 'GLE': 'GLENEAGLES', 'GLF': 'GLENFINNAN', 'GLG': 'GLENGARNOCK', 'GLH': 'GLASSHOUGHTON', 'GLM': 'GILLINGHAM (KENT)', 'GLO': 'GLOSSOP', 'GLQ': 'GLASGOW QUEEN STREET', 'GLS': 'GLAISDALE', 'GLT': 'GLENROTHES WITH THORNTON', 'GLY': 'GLYNDE', 'GLZ': 'GLAZEBROOK', 'GMB': 'GRIMSBY TOWN', 'GMD': 'GRIMSBY DOCKS', 'GMG': 'GARTH (BRIDGEND)', 'GMN': 'GREAT MISSENDEN', 'GMT': 'GROSMONT', 'GMV': 'GREAT MALVERN', 'GMY': 'GOODMAYES', 'GNB': 'GAINSBOROUGH CENTRAL', 'GNF': 'GREENFIELD', 'GNH': 'GREENHITHE FOR BLUEWATER', 'GNL': 'GREEN LANE', 'GNR': 'GREEN ROAD', 'GNT': 'GUNTON', 'GNW': 'GREENWICH', 'GOB': 'GOBOWEN', 'GOD': 'GODALMING', 'GOE': 'GOLDTHORPE', 'GOF': 'GOLF STREET', 'GOL': 'GOLSPIE', 'GOM': 'GOMSHALL', 'GOO': 'GOOLE', 'GOR': 'GORING & STREATLEY', 'GOS': 'GRANGE-OVER-SANDS', 'GOX': 'GOXHILL', 'GPK': 'GRANGE PARK', 'GPO': 'GOSPEL OAK', 'GRA': 'GRANTHAM', 'GRB': 'GREAT BENTLEY', 'GRC': 'GREAT CHESTERFORD', 'GRF': 'GARFORTH', 'GRH': 'GARTCOSH', 'GRK': 'GOUROCK', 'GRL': 'GREENFAULDS', 'GRN': 'GRINDLEFORD', 'GRP': 'GROVE PARK', 'GRS': 'GARSCADDEN', 'GRT': 'GRATELEY', 'GRV': 'GRAVESEND', 'GRY': 'GRAYS', 'GSC': 'GILSHOCHILL', 'GSD': 'GARSDALE', 'GSL': 'GUNNISLAKE', 'GSN': 'GARSTON (HERTS)', 'GST': 'GATHURST', 'GSW': 'GARSWOOD', 'GSY': 'GUISELEY', 'GTA': 'GREAT AYTON', 'GTH': 'GARTH (POWYS)', 'GTN': 'GRANGETOWN (CARDIFF)', 'GTO': 'GORTON', 'GTR': 'GOOSTREY', 'GTW': 'GATWICK AIRPORT', 'GTY': 'GATLEY', 'GUI': 'GUIDE BRIDGE', 'GUN': 'GUNNERSBURY', 'GVE': 'GARVE', 'GVH': 'GRAVELLY HILL', 'GWE': 'GWERSYLLT', 'GWN': 'GOWERTON', 'GXX': 'GOUROCK PIER', 'GYM': 'GREAT YARMOUTH', 'GYP': 'GYPSY LANE', 'HAB': 'HABROUGH', 'HAC': 'HACKNEY DOWNS', 'HAD': 'HADDISCOE', 'HAF': 'HEATHROW TERMINAL 4', 'HAG': 'HAGLEY', 'HAI': 'HALLING', 'HAL': 'HALE', 'HAM': 'HAMWORTHY', 'HAN': 'HANWELL', 'HAP': 'HATFIELD PEVEREL', 'HAS': 'HALESWORTH', 'HAT': 'HATFIELD (HERTS)', 'HAV': 'HAVANT', 'HAY': 'HAYES & HARLINGTON', 'HAZ': 'HAZEL GROVE', 'HBB': 'HUBBERTS BRIDGE', 'HBC': 'HARBOUR CTY MTLK', 'HBD': 'HEBDEN BRIDGE', 'HBF': 'HEVER BROCASFARM', 'HBL': 'HEADBOLT LANE', 'HBN': 'HOLLINGBOURNE', 'HBP': 'HORNBEAM PARK', 'HBY': 'HARTLEBURY', 'HCB': 'HACKBRIDGE', 'HCH': 'HOLMES CHAPEL', 'HCN': 'HEADCORN', 'HCT': 'HUNCOAT', 'HDB': 'HAYDON BRIDGE', 'HDE': 'HEDGE END', 'HDF': 'HADFIELD', 'HDG': 'HEALD GREEN', 'HDH': 'HAMPSTEAD HEATH', 'HDL': 'HEADSTONE LANE', 'HDM': 'HADDENHAM & THAME PARKWAY', 'HDN': 'HARLESDEN', 'HDW': 'HADLEY WOOD', 'HDY': 'HEADINGLEY', 'HEC': 'HECKINGTON', 'HED': 'HALEWOOD', 'HEI': 'HEIGHINGTON', 'HEL': 'HENSALL', 'HEN': 'HENDON', 'HER': 'HERSHAM', 'HES': 'HESSLE', 'HEV': 'HEVER', 'HEW': 'HEWORTH', 'HEX': 'HEXHAM', 'HFD': 'HEREFORD', 'HFE': 'HERTFORD EAST', 'HFN': 'HERTFORD NORTH', 'HFS': 'HATFIELD & STAINFORTH', 'HFX': 'HALIFAX', 'HGD': 'HUNGERFORD', 'HGF': 'HAG FOLD', 'HGG': 'HAGGERSTON', 'HGM': 'HIGHAM', 'HGN': 'HOUGH GREEN', 'HGR': 'HITHER GREEN', 'HGS': 'HASTINGS', 'HGT': 'HARROGATE', 'HGY': 'HARRINGAY', 'HHB': 'HEYSHAM PORT', 'HHD': 'HOLYHEAD', 'HHE': 'HAYWARDS HEATH', 'HHL': 'HEATH HIGH LEVEL', 'HHY': 'HIGHBURY & ISLINGTON', 'HIA': 'HAMPTON-IN-ARDEN', 'HIB': 'HIGH BROOMS', 'HID': "HALL-I'-TH'-WOOD", 'HIG': 'HIGHBRIDGE & BURNHAM', 'HIL': 'HILLSIDE', 'HIN': 'HINDLEY', 'HIP': 'HIGHAMS PARK', 'HIR': 'HORTON-IN-RIBBLESDALE', 'HIT': 'HITCHIN', 'HKC': 'HACKNEY CENTRAL', 'HKH': 'HAWKHEAD', 'HKM': 'HYKEHAM', 'HKN': 'HUCKNALL', 'HKW': 'HACKNEY WICK', 'HLB': 'HILDENBOROUGH', 'HLC': 'HELENSBURGH CENTRAL', 'HLD': 'HELLIFIELD', 'HLE': 'HILLINGTON EAST', 'HLF': 'HILLFOOT', 'HLG': 'HALL GREEN', 'HLI': 'HEALING', 'HLL': 'HEATH LOW LEVEL', 'HLM': 'HOLMWOOD', 'HLN': 'HARLINGTON (BEDFORDSHIRE)', 'HLR': 'HALL ROAD', 'HLS': 'HILSEA', 'HLU': 'HELENSBURGH UPPER', 'HLW': 'HILLINGTON WEST', 'HLY': 'HOLYTOWN', 'HMC': 'HAMPTON COURT', 'HMD': 'HAMPDEN PARK (SUSSEX)', 'HME': 'HAMBLE', 'HMK': 'HAWES', 'HML': 'HEMEL HEMPSTEAD', 'HMM': 'HAMMERTON', 'HMN': 'HOMERTON', 'HMP': 'HAMPTON (LONDON)', 'HMS': 'HELMSDALE', 'HMT': 'HAM STREET', 'HMW': 'HAMPTON WICK', 'HMY': 'HAIRMYRES', 'HNA': 'HINTON ADMIRAL', 'HNB': 'HERNE BAY', 'HNC': 'HAMILTON CENTRAL', 'HND': 'HANBOROUGH', 'HNF': 'HEDNESFORD', 'HNG': 'HENGOED', 'HNH': 'HERNE HILL', 'HNK': 'HINCKLEY', 'HNL': 'HENLEY-IN-ARDEN', 'HNT': 'HUNTLY', 'HNW': 'HAMILTON WEST', 'HNX': 'HUNTS CROSS', 'HNY': 'HANLEY BUS STN', 'HOC': 'HOCKLEY', 'HOD': 'HOLLINWOOD MTLK', 'HOH': 'HARROW-ON-THE-HILL', 'HOK': 'HOOK', 'HOL': 'HOLTON HEATH', 'HON': 'HONITON', 'HOO': 'HOOTON', 'HOP': 'HOPE (DERBYSHIRE)', 'HOR': 'HORLEY', 'HOT': 'HENLEY-ON-THAMES', 'HOU': 'HOUNSLOW', 'HOV': 'HOVE', 'HOW': 'HOWDEN', 'HOX': 'HOXTON', 'HOY': 'HONLEY', 'HOZ': 'HOWWOOD (RENFREW)', 'HPA': 'HONOR OAK PARK', 'HPD': 'HARPENDEN', 'HPE': 'HOPE (FLINTSHIRE)', 'HPK': 'HEATON PARK MTLK', 'HPL': 'HARTLEPOOL', 'HPN': 'HAPTON', 'HPQ': 'HARWICH INTERNATIONAL', 'HPT': 'HOPTON HEATH', 'HRD': 'HARLING ROAD', 'HRE': 'HORDEN', 'HRH': 'HORSHAM', 'HRL': 'HARLECH', 'HRM': 'HARRIETSHAM', 'HRN': 'HORNSEY', 'HRO': 'HAROLD WOOD', 'HRR': 'HARRINGTON', 'HRS': 'HORSFORTH', 'HRW': 'HARROW & WEALDSTONE', 'HRY': 'HARRINGAY GREEN LANES', 'HSB': 'HELSBY', 'HSC': 'HOSCAR', 'HSD': 'HAMSTEAD (BIRMINGHAM)', 'HSG': 'HATHERSAGE', 'HSK': 'HASSOCKS', 'HSL': 'HASLEMERE', 'HST': 'HIGH STREET (GLASGOW)', 'HSW': 'HESWALL', 'HSY': 'HORSLEY', 'HTC': 'HEATON CHAPEL', 'HTE': 'HATCH END', 'HTF': 'HARTFORD (CHESHIRE)', 'HTH': 'HANDFORTH', 'HTM': 'HOLT TOWN MTLK', 'HTN': 'HATTON', 'HTO': 'HIGHTOWN', 'HTR': 'HEATHROW CENTRAL BUS STN', 'HTW': 'HARTWOOD', 'HTY': 'HATTERSLEY', 'HUB': 'HUNMANBY', 'HUD': 'HUDDERSFIELD', 'HUL': 'HULL', 'HUN': 'HUNTINGDON', 'HUP': 'HUMPHREY PARK', 'HUR': 'HURST GREEN', 'HUS': 'HUNSTANTON BUS', 'HUT': 'HUTTON CRANSWICK', 'HUU': 'HULL BUS STN', 'HUY': 'HUYTON', 'HVF': 'HAVERFORDWEST', 'HVH': 'HOEK VAN HOLLAND', 'HVN': 'HAVENHOUSE', 'HWA': 'HEATHROW T2 BUS', 'HWB': 'HAWARDEN BRIDGE', 'HWC': 'HARWICH TOWN', 'HWD': 'HAWARDEN', 'HWE': 'HEATHROW T3 BUS', 'HWF': 'HEATHROW TERMINAL 4 BUSES ONLY', 'HWH': 'HALTWHISTLE', 'HWI': 'HORWICH PARKWAY', 'HWM': 'HARLOW MILL', 'HWN': 'HARLOW TOWN', 'HWV': 'HEATHROW TERMINAL 5', 'HWW': 'HOW WOOD (HERTFORDSHIRE)', 'HWX': 'HEATHROW T5 BUS', 'HWY': 'HIGH WYCOMBE', 'HXM': 'HOVETON & WROXHAM', 'HXX': 'HEATHROW TERMINALS 2 & 3', 'HYB': 'HONEYBOURNE', 'HYC': 'HYDE CENTRAL', 'HYD': 'HEYFORD', 'HYH': 'HYTHE (ESSEX)', 'HYK': 'HOYLAKE', 'HYL': 'HAYLE', 'HYM': 'HAYMARKET', 'HYN': 'HYNDLAND', 'HYR': 'HAYDONS ROAD', 'HYS': 'HAYES (KENT)', 'HYT': 'HYDE NORTH', 'HYW': 'HINCHLEY WOOD', 'IBS': 'INVERNESS BUS STATION', 'IFD': 'ILFORD', 'IFI': 'IFIELD', 'IGD': 'INVERGORDON', 'ILK': 'ILKLEY', 'ILN': 'ILKESTON', 'IMW': 'IMPERIAL WHARF', 'INB': 'INVERNESS AIRPORT BUS STANCE', 'INC': 'INCE (MANCHESTER)', 'INE': 'INCE & ELTON', 'ING': 'INVERGOWRIE', 'INH': 'INVERSHIN', 'INK': 'INVERKEITHING', 'INP': 'INVERKIP', 'INR': 'INVERURIE', 'INS': 'INSCH', 'INT': 'INGATESTONE', 'INV': 'INVERNESS', 'IPS': 'IPSWICH', 'IRL': 'IRLAM', 'IRV': 'IRVINE', 'ISL': 'ISLEWORTH', 'ISP': 'ISLIP', 'IVA': 'INVERNESS AIRPORT', 'IVR': 'IVER', 'IVY': 'IVYBRIDGE', 'JCH': 'JAMES COOK UNIVERSITY HOSPITAL', 'JEQ': 'JEWELLERY QUARTER', 'JHN': 'JOHNSTONE (RENFREWSHIRE)', 'JOH': 'JOHNSTON (PEMBS)', 'JOR': 'JORDANHILL', 'KBC': 'KINBRACE', 'KBF': 'KIRKBY-IN-FURNESS', 'KBK': 'KENTS BANK', 'KBM': 'KINGSWAY BP MTLK', 'KBN': 'KILBURN HIGH ROAD', 'KBW': 'KNEBWORTH', 'KBX': 'KIRBY CROSS', 'KCK': 'KNOCKHOLT', 'KDB': 'KIDBROOKE', 'KDG': 'KIDSGROVE', 'KDY': 'KIRKCALDY', 'KEB': 'KENLEY (A22)', 'KEH': 'KEITH', 'KEI': 'KEIGHLEY', 'KEL': 'KELVEDON', 'KEM': 'KEMBLE', 'KEN': 'KENDAL', 'KET': 'KETTERING', 'KEY': 'KEYHAM', 'KGE': 'KINGSKNOWE', 'KGH': 'KINGHORN', 'KGL': 'KINGS LANGLEY', 'KGM': 'KINGHAM', 'KGN': 'KINGS NYMPTON', 'KGP': 'KINGS PARK', 'KGS': 'KINGS SUTTON', 'KGT': 'KILGETTY', 'KGX': 'LONDON KINGS CROSS', 'KID': 'KIDDERMINSTER', 'KIL': 'KILDONAN', 'KIN': 'KINGUSSIE', 'KIR': 'KIRKBY (MERSEYSIDE)', 'KIT': 'KINTBURY', 'KIV': 'KIVETON BRIDGE', 'KKB': 'KIRKBY-IN-ASHFIELD', 'KKD': 'KIRKDALE', 'KKH': 'KIRKHILL', 'KKM': 'KIRKHAM & WESHAM', 'KKN': 'KIRKNEWTON', 'KKS': 'KIRK SANDALL', 'KLB': 'KINGS LYNN COACH', 'KLD': 'KILDALE', 'KLF': 'KIRKSTALL FORGE', 'KLM': 'KILMAURS', 'KLN': 'KINGS LYNN', 'KLS': 'KINGS LYNN BUSGN', 'KLY': 'KENLEY', 'KMH': 'KEMPSTON HARDWICK', 'KMK': 'KILMARNOCK', 'KML': 'KEMSLEY', 'KMP': 'KEMPTON PARK', 'KMS': 'KEMSING', 'KNA': 'KNARESBOROUGH', 'KND': 'KINGSWOOD', 'KNE': 'KENNETT', 'KNF': 'KNUTSFORD', 'KNG': 'KINGSTON', 'KNI': 'KNIGHTON', 'KNL': 'KENSAL GREEN', 'KNN': 'KINGS NORTON', 'KNO': 'KNOTTINGLEY', 'KNR': 'KENSAL RISE', 'KNS': 'KENNISHEAD', 'KNT': 'KENTON', 'KNU': 'KNUCKLAS', 'KNW': 'KENILWORTH', 'KPA': 'KENSINGTON OLYMPIA', 'KPT': 'KILPATRICK', 'KRK': 'KIRKCONNEL', 'KSL': 'KEARSLEY', 'KSN': 'KEARSNEY', 'KSW': 'KIRKBY STEPHEN', 'KTH': 'KENT HOUSE', 'KTL': 'KIRTON LINDSEY', 'KTN': 'KENTISH TOWN', 'KTR': 'KINTORE', 'KTW': 'KENTISH TOWN WEST', 'KVD': 'KELVINDALE', 'KVP': 'KIVETON PARK', 'KWB': 'KEW BRIDGE', 'KWD': 'KIRKWOOD', 'KWG': 'KEW GARDENS', 'KWL': 'KIDWELLY', 'KWN': 'KILWINNING', 'KWR': 'KINGSWEAR (FOR DARTMOUTH)', 'KYK': 'KYLEAKIN', 'KYL': 'KYLE OF LOCHALSH', 'KYN': 'KEYNSHAM', 'LAC': 'LANCING', 'LAD': 'LADYWELL', 'LAG': 'LANGWITH - WHALEY THORNS', 'LAI': 'LAINDON', 'LAK': 'LAKENHEATH', 'LAM': 'LAMPHEY', 'LAN': 'LANCASTER', 'LAP': 'LAPFORD', 'LAR': 'LARGS', 'LAS': 'LLANSAMLET', 'LAU': 'LAURENCEKIRK', 'LAW': 'LANDYWOOD', 'LAY': 'LAYTON (LANCS)', 'LBG': 'LONDON BRIDGE', 'LBK': 'LONG BUCKBY', 'LBO': 'LOUGHBOROUGH', 'LBR': 'LLANBEDR', 'LBT': 'LARBERT', 'LBZ': 'LEIGHTON BUZZARD', 'LCB': 'LOCHBOISDALE', 'LCC': 'LOCHLUICHART', 'LCG': 'LOCHGELLY', 'LCK': 'LOCKWOOD', 'LCL': 'LOCHAILORT', 'LCN': 'LINCOLN', 'LCS': 'LOCHEILSIDE', 'LDN': 'LLANDANWG', 'LDS': 'LEEDS', 'LDW': 'LADYWELL MTLK', 'LDY': 'LADYBANK', 'LEA': 'LEAGRAVE', 'LEB': 'LEA BRIDGE', 'LED': 'LEDBURY', 'LEE': 'LEE (LONDON)', 'LEG': 'LEA GREEN', 'LEH': 'LEA HALL', 'LEI': 'LEICESTER', 'LEL': 'LELANT', 'LEM': 'LEYTON MIDLAND ROAD', 'LEN': 'LENHAM', 'LEO': 'LEOMINSTER', 'LER': 'LEYTONSTONE HIGH ROAD', 'LES': 'LEIGH-ON-SEA', 'LET': 'LETCHWORTH GARDEN CITY', 'LEU': 'LEUCHARS', 'LEW': 'LEWISHAM', 'LEY': 'LEYLAND', 'LFD': 'LINGFIELD', 'LFL': 'LEIGH FLEURDELIS', 'LGB': 'LANGBANK', 'LGD': 'LINGWOOD', 'LGE': 'LONG EATON', 'LGF': 'LONGFIELD', 'LGG': 'LANGLEY GREEN', 'LGJ': 'LOUGHBOROUGH JUNCTION', 'LGK': 'LONGBECK', 'LGM': 'LANGLEY MILL', 'LGN': 'LONGTON', 'LGO': 'LLANGYNLLO', 'LGS': 'LANGSIDE', 'LGW': 'LANGWATHBY', 'LHA': 'LOCH AWE', 'LHD': 'LEATHERHEAD', 'LHE': 'LOCH EIL OUTWARD BOUND', 'LHM': 'LEALHOLM', 'LHO': 'LANGHO', 'LHS': 'LIMEHOUSE', 'LHW': 'LOCHWINNOCH', 'LIC': 'LICHFIELD CITY', 'LID': 'LIDLINGTON', 'LIH': 'LEIGH (KENT)', 'LIN': 'LINLITHGOW', 'LIP': 'LIPHOOK', 'LIS': 'LISS', 'LIT': 'LITTLEHAMPTON', 'LIV': 'LIVERPOOL LIME STREET', 'LKE': 'LAKE', 'LLA': 'LLANABER', 'LLC': 'LLANDECWYN', 'LLD': 'LLANDUDNO', 'LLE': 'LLANELLI', 'LLF': 'LLANFAIRFECHAN', 'LLG': 'LLANGADOG', 'LLH': 'LLANGENNECH', 'LLI': 'LLANDYBIE', 'LLJ': 'LLANDUDNO JUNCTION', 'LLL': 'LLANDEILO', 'LLM': 'LLANGAMMARCH', 'LLN': 'LLANDAF', 'LLO': 'LLANDRINDOD', 'LLR': 'LLANHARAN', 'LLS': 'LLANISHEN', 'LLT': 'LLANBISTER ROAD', 'LLV': 'LLANDOVERY', 'LLW': 'LLWYNGWRIL', 'LLY': 'LLWYNYPIA', 'LMR': 'LOW MOOR', 'LMS': 'LEAMINGTON SPA', 'LNB': 'LLANBRADACH', 'LND': 'LONGNIDDRY', 'LNE': 'LONDON INTERNATIONAL(CIV)', 'LNG': 'LONGCROSS', 'LNK': 'LANARK', 'LNR': 'LLANWRDA', 'LNW': 'LLANWRTYD', 'LNY': 'LANGLEY (BERKSHIRE)', 'LNZ': 'LENZIE', 'LOB': 'LONGBRIDGE', 'LOC': 'LOCKERBIE', 'LOE': 'LONDON EUROSTAR CIV', 'LOF': 'LONDON FIELDS', 'LOH': 'LOSTOCK HALL', 'LOO': 'LOOE', 'LOS': 'LOSTWITHIEL', 'LOT': 'LOSTOCK', 'LOW': 'LOWDHAM', 'LPD': 'LUTON AIRPORT PARKWAY DART', 'LPG': 'LLANFAIRPWLL', 'LPO': 'LYME REGIS BUS X53', 'LPR': 'LONG PRESTON', 'LPT': 'LONGPORT', 'LPW': 'LAPWORTH', 'LPY': 'LIVERPOOL SOUTH PARKWAY', 'LRB': 'LONDON ROAD (BRIGHTON)', 'LRD': 'LONDON ROAD (GUILDFORD)', 'LRG': 'LAIRG', 'LRH': 'LARKHALL', 'LRR': 'LONDON ROAD D R', 'LSK': 'LISKEARD', 'LSN': 'LIVINGSTON NORTH', 'LST': 'LONDON LIVERPOOL STREET', 'LSW': 'LEASOWE', 'LSY': 'LOWER SYDENHAM', 'LTG': 'LOSTOCK GRALAM', 'LTH': 'LLANHILLETH', 'LTK': 'LITTLE KIMBLE', 'LTL': 'LITTLEBOROUGH', 'LTM': 'LYTHAM', 'LTN': 'LUTON AIRPORT PARKWAY', 'LTP': 'LITTLEPORT', 'LTR': 'LAMPETER BLACK LION', 'LTS': 'LELANT SALTINGS', 'LTT': 'LITTLE SUTTON', 'LTV': 'LICHFIELD TRENT VALLEY', 'LUA': 'LUTON AIRPORT', 'LUD': 'LUDLOW', 'LUT': 'LUTON', 'LUX': 'LUXULYAN', 'LVC': 'LIVERPOOL CENTRAL', 'LVG': 'LIVINGSTON SOUTH', 'LVJ': 'LIVERPOOL JAMES STREET', 'LVM': 'LEVENSHULME', 'LVN': 'LITTLEHAVEN', 'LVS': 'LIVERPOOL LND SG', 'LVT': 'LISVANE & THORNHILL', 'LWH': 'LAWRENCE HILL', 'LWM': 'LLANTWIT MAJOR', 'LWR': 'LLANRWST', 'LWS': 'LEWES', 'LWT': 'LOWESTOFT', 'LWY': 'LANGWORTHY MTLK', 'LYC': 'LYMPSTONE COMMANDO', 'LYD': 'LYDNEY', 'LYE': 'LYE', 'LYM': 'LYMPSTONE VILLAGE', 'LYP': 'LYMINGTON PIER', 'LYT': 'LYMINGTON TOWN', 'LZB': 'LAZONBY & KIRKOSWALD', 'MAC': 'MACCLESFIELD', 'MAG': 'MAGHULL', 'MAI': 'MAIDENHEAD', 'MAL': 'MALDEN MANOR', 'MAN': 'MANCHESTER PICCADILLY', 'MAO': 'MARTINS HERON', 'MAR': 'MARGATE', 'MAS': 'MANORS', 'MAT': 'MATLOCK', 'MAU': 'MAULDETH ROAD', 'MAX': 'MAXWELL PARK', 'MAY': 'MAYBOLE', 'MBK': 'MILLBROOK (HAMPSHIRE)', 'MBR': 'MIDDLESBROUGH', 'MBT': 'MARSH BARTON', 'MCB': 'MOULSECOOMB', 'MCE': 'METROCENTRE', 'MCF': 'MARTINSCTFT MTLK', 'MCH': 'MARCH', 'MCM': 'MORECAMBE', 'MCN': 'MACHYNLLETH', 'MCO': 'MANCHESTER OXFORD ROAD', 'MCT': 'MEDIA CITY MTLK', 'MCV': 'MANCHESTER VICTORIA', 'MCZ': 'MANCHESTER CTLZ', 'MDB': 'MAIDSTONE BARRACKS', 'MDE': 'MAIDSTONE EAST', 'MDG': 'MIDGHAM', 'MDL': 'MIDDLEWOOD', 'MDM': 'MOOR ROAD MTLK', 'MDN': 'MAIDEN NEWTON', 'MDS': 'MORDEN SOUTH', 'MDW': 'MAIDSTONE WEST', 'MEC': 'MEOLS COP', 'MEL': 'MELDRETH', 'MEN': 'MENHENIOT', 'MEO': 'MEOLS', 'MEP': 'MEOPHAM', 'MER': 'MERTHYR TYDFIL', 'MES': 'MELTON (SUFFOLK)', 'MEV': 'MERTHYR VALE', 'MEW': 'MAESTEG (EWENNY ROAD)', 'MEX': 'MEXBOROUGH', 'MEY': 'MERRYTON', 'MFA': 'MORFA MAWDDACH', 'MFF': 'MINFFORDD', 'MFH': 'MILFORD HAVEN', 'MFL': 'MOUNT FLORIDA', 'MFT': 'MANSFIELD', 'MGM': 'METHERINGHAM', 'MGN': 'MARSTON GREEN', 'MHM': 'MERSTHAM', 'MHR': 'MARKET HARBOROUGH', 'MHS': 'MEADOWHALL', 'MIA': 'MANCHESTER AIRPORT', 'MIC': 'MICHELDEVER', 'MIF': 'MILLFIELD STN T&WM', 'MIH': 'MILLS HILL (MANCHESTER)', 'MIJ': 'MITCHAM JUNCTION', 'MIK': 'MICKLEFIELD', 'MIL': 'MILL HILL BROADWAY', 'MIM': 'MORETON-IN-MARSH', 'MIN': 'MILLIKEN PARK', 'MIR': 'MIRFIELD', 'MIS': 'MISTLEY', 'MKC': 'MILTON KEYNES CENTRAL', 'MKM': 'MELKSHAM', 'MKR': 'MARKET RASEN', 'MKT': 'MARKS TEY', 'MLB': 'MILLBROOK (BEDFORDSHIRE)', 'MLD': 'MOULDSWORTH', 'MLF': 'MILFORD (SURREY)', 'MLG': 'MALLAIG', 'MLH': 'MILL HILL (LANCASHIRE)', 'MLM': 'MILLOM', 'MLN': 'MILNGAVIE', 'MLR': 'MILNROW MTLK', 'MLS': 'MELROSE', 'MLT': 'MALTON', 'MLW': 'MARLOW', 'MLY': 'MORLEY', 'MMO': 'MELTON MOWBRAY', 'MNA': 'MAN AIRPORT MTLK', 'MNC': 'MARKINCH', 'MNE': 'MANEA', 'MNG': 'MANNINGTREE', 'MNN': 'MENSTON', 'MNP': 'MANOR PARK', 'MNR': 'MANOR ROAD', 'MNS': 'MAGHULL NORTH', 'MOB': 'MOBBERLEY', 'MOG': 'MOORGATE', 'MON': 'MONIFIETH', 'MOO': 'MUIR OF ORD', 'MOR': 'MORTIMER', 'MOS': 'MOSS SIDE', 'MOT': 'MOTSPUR PARK', 'MPK': 'MOSSPARK', 'MPL': 'MARPLE', 'MPT': 'MORPETH', 'MRB': 'MANORBIER', 'MRD': 'MORCHARD ROAD', 'MRF': 'MOORFIELDS', 'MRN': 'MARDEN', 'MRP': 'MOORTHORPE', 'MRR': 'MORAR', 'MRS': 'MONKS RISBOROUGH', 'MRT': 'MORETON (MERSEYSIDE)', 'MRW': 'MERIDIAN WATER', 'MRY': 'MARYPORT', 'MSD': 'MOORSIDE', 'MSH': 'MOSSLEY HILL', 'MSK': 'MARSKE', 'MSL': 'MOSSLEY (MANCHESTER)', 'MSM': 'MONSALL MTLK', 'MSN': 'MARSDEN (YORKS)', 'MSO': 'MOSTON', 'MSR': 'MINSTER', 'MSS': 'MOSES GATE', 'MST': 'MAESTEG', 'MSW': 'MANSFIELD WOODHOUSE', 'MTA': 'MOUNTAIN ASH', 'MTB': 'MATLOCK BATH', 'MTC': 'MITCHAM EASTFIELDS', 'MTE': 'MIRA TECH PARK', 'MTG': 'MOTTINGHAM', 'MTH': 'MOTHERWELL', 'MTL': 'MORTLAKE', 'MTM': 'MARTIN MILL', 'MTN': 'MORETON (DORSET)', 'MTO': 'MARTON', 'MTP': 'MONTPELIER', 'MTS': 'MONTROSE', 'MTV': 'MOUNT VERNON', 'MUB': 'MUSSELBURGH', 'MUI': 'MUIREND', 'MUK': 'MUCK (ISLE OF)', 'MVL': 'MALVERN LINK', 'MYB': 'LONDON MARYLEBONE', 'MYH': 'MARYHILL', 'MYL': 'MARYLAND', 'MYT': 'MYTHOLMROYD', 'MZH': 'MAZE HILL', 'NAN': 'NANTWICH', 'NAR': 'NARBERTH', 'NAY': 'NEWTON AYCLIFFE', 'NBA': 'NEW BARNET', 'NBC': 'NEW BECKENHAM', 'NBE': 'NEWBRIDGE', 'NBM': 'NEWBOLD MTLK', 'NBN': 'NEW BRIGHTON', 'NBR': 'NARBOROUGH', 'NBT': 'NORBITON', 'NBW': 'NORTH BERWICK', 'NBY': 'NEWBURY', 'NCE': 'NEW CLEE', 'NCK': 'NEW CUMNOCK', 'NCL': 'NEWCASTLE', 'NCM': 'NORTH CAMP', 'NCO': 'NEWCOURT', 'NCT': 'NEWARK CASTLE', 'NCZ': 'NEWCASTLE(METRO)', 'NDL': 'NORTH DULWICH', 'NEG': 'NEWTONGRANGE', 'NEH': 'NEW ELTHAM', 'NEI': 'NEILSTON', 'NEL': 'NELSON', 'NEM': 'NEW MALDEN', 'NES': 'NESTON', 'NET': 'NETHERFIELD', 'NEW': 'NEWCRAIGHALL', 'NFA': 'NORTH FAMBRIDGE', 'NFD': 'NORTHFIELD', 'NFL': 'NORTHFLEET', 'NFN': 'NAFFERTON', 'NGT': 'NEWINGTON', 'NHD': 'NUNHEAD', 'NHE': 'NEW HYTHE', 'NHL': 'NEW HOLLAND', 'NHY': 'NEWHEY MTLK', 'NIM': 'NEW ISLNGTN MTLK', 'NIT': 'NITSHILL', 'NLN': 'NEW LANE', 'NLR': 'NORTH LLANRWST', 'NLS': 'NAILSEA & BACKWELL', 'NLT': 'NORTHOLT PARK', 'NLW': 'NEWTON-LE-WILLOWS', 'NMC': 'NEW MILLS CENTRAL', 'NMK': 'NEWMARKET', 'NMM': 'NEWTNH&MOSTNMTKL', 'NMN': 'NEW MILLS NEWTOWN', 'NMP': 'NORTHAMPTON', 'NMR': 'NORTHERN MR MTLK', 'NMT': 'NEEDHAM MARKET', 'NNG': 'NEWARK NORTHGATE', 'NNN': 'NUNEATON BUS STN', 'NNP': 'NINIAN PARK', 'NNT': 'NUNTHORPE', 'NOA': 'NEWTON-ON-AYR', 'NOR': 'NORMANTON', 'NOT': 'NOTTINGHAM', 'NPD': 'NEW PUDSEY', 'NQU': 'NORTH QUEENSFERRY', 'NQY': 'NEWQUAY', 'NRB': 'NORBURY', 'NRC': 'NEWBURY RACECOURSE', 'NRD': 'NORTH ROAD (DARLINGTON)', 'NRN': 'NAIRN', 'NRT': 'NETHERTOWN', 'NRW': 'NORWICH', 'NSB': 'NORMANS BAY', 'NSD': 'NEWSTEAD', 'NSG': 'NEW SOUTHGATE', 'NSH': 'NORTH SHEEN', 'NTA': 'NEWTON ABBOT', 'NTC': 'NEWTON ST CYRES', 'NTH': 'NEATH', 'NTL': 'NETLEY', 'NTN': 'NEWTON (LANARKSHIRE)', 'NTR': 'NORTHALLERTON', 'NUF': 'NUTFIELD', 'NUM': 'NORTHUMBERLAND PARK (LONDON)', 'NUN': 'NUNEATON', 'NUT': 'NUTBOURNE', 'NVH': 'NEWHAVEN HARBOUR', 'NVN': 'NEWHAVEN TOWN', 'NVR': 'NAVIGATION ROAD', 'NWA': 'NORTH WALSHAM', 'NWB': 'NORTH WEMBLEY', 'NWD': 'NORWOOD JUNCTION', 'NWE': 'NEWPORT (ESSEX)', 'NWI': 'NORTHWICH', 'NWM': 'NEW MILTON', 'NWN': 'NEWTON FOR HYDE', 'NWP': 'NEWPORT (SOUTH WALES)', 'NWR': 'NEWTONMORE', 'NWT': 'NEWTOWN (POWYS)', 'NWX': 'NEW CROSS', 'NXG': 'NEW CROSS GATE', 'OBN': 'OBAN', 'OCK': 'OCKENDON', 'OCM': 'OLDHAM CTRL MTLK', 'OHL': 'OLD HILL', 'OKE': 'OKEHAMPTON', 'OKL': 'OAKLEIGH PARK', 'OKM': 'OAKHAM', 'OKN': 'OAKENGATES', 'OKS': 'OLDHAM K ST MTLK', 'OLD': 'OLD STREET', 'OLF': 'OLDFIELD PARK', 'OLM': 'OLDHAM MPS MTLK', 'OLT': 'OLTON', 'OLY': 'OCKLEY', 'OMS': 'ORMSKIRK', 'OPK': 'ORRELL PARK', 'ORE': 'ORE', 'ORN': 'OLD ROAN', 'ORP': 'ORPINGTON', 'ORR': 'ORRELL', 'OTF': 'OTFORD', 'OTR': 'OLD TRAFFRD MTLK', 'OUN': 'OULTON BROAD NORTH', 'OUS': 'OULTON BROAD SOUTH', 'OUT': 'OUTWOOD', 'OVE': 'OVERPOOL', 'OVR': 'OVERTON', 'OXF': 'OXFORD', 'OXN': 'OXENHOLME LAKE DISTRICT', 'OXP': 'OXFORD PARKWAY', 'OXS': 'OXSHOTT', 'OXT': 'OXTED', 'PAD': 'LONDON PADDINGTON', 'PAI': 'PALLION STN T&WM', 'PAL': 'PALMERS GREEN', 'PAN': 'PANGBOURNE', 'PAR': 'PAR', 'PAT': 'PATRICROFT', 'PAW': 'PELAW TYNE & WEAR METRO', 'PBL': 'PARBOLD', 'PBO': 'PETERBOROUGH', 'PBR': 'POTTERS BAR', 'PBU': 'PETERBRO BUS STN', 'PBY': 'PEMBREY & BURRY PORT', 'PCD': 'PENCOED', 'PCN': 'PAISLEY CANAL', 'PDG': 'PADGATE', 'PDT': 'PADSTOW BUS', 'PDW': 'PADDOCK WOOD', 'PEA': 'PEARTREE', 'PEB': 'PEVENSEY BAY', 'PEE': 'PORTREE', 'PEG': 'PEGSWOOD', 'PEM': 'PEMBERTON', 'PEN': 'PENARTH', 'PER': 'PENRHIWCEIBER', 'PES': 'PENSARN (GWYNEDD)', 'PET': 'PETTS WOOD', 'PEV': 'PEVENSEY & WESTHAM', 'PEW': 'PEWSEY', 'PFL': 'PURFLEET', 'PFM': 'PONTEFRACT MONKHILL', 'PFR': 'PONTEFRACT BAGHILL', 'PFY': 'POULTON-LE-FYLDE', 'PGM': 'PENGAM', 'PGN': 'PAIGNTON', 'PHG': 'PENHELIG', 'PHM': 'PEEL HALL MTLK', 'PHR': 'PENSHURST', 'PIL': 'PILNING', 'PIN': 'PINHOE', 'PIT': 'PITLOCHRY', 'PIZ': 'PICKERING BUS', 'PKG': 'PENKRIDGE', 'PKS': 'PARKSTONE (DORSET)', 'PKT': 'PARK STREET', 'PLC': 'PLUCKLEY', 'PLD': 'PORTSLADE', 'PLE': 'POLLOKSHIELDS EAST', 'PLG': 'POLEGATE', 'PLK': 'PLOCKTON', 'PLM': 'PLUMLEY', 'PLN': 'PORTLETHEN', 'PLS': 'PLEASINGTON', 'PLT': 'PONTLOTTYN', 'PLU': 'PLUMSTEAD', 'PLW': 'POLLOKSHIELDS WEST', 'PLY': 'PLYMOUTH', 'PMA': 'PORTSMOUTH ARMS', 'PMB': 'PEMBROKE', 'PMD': 'PEMBROKE DOCK', 'PMH': 'PORTSMOUTH HARBOUR', 'PMO': 'POMONA MTLK', 'PMP': 'PLUMPTON', 'PMR': 'PECKHAM RYE', 'PMS': 'PORTSMOUTH & SOUTHSEA', 'PMT': 'POLMONT', 'PMW': 'PENMAENMAWR', 'PNA': 'PENALLY', 'PNC': 'PENYCHAIN', 'PNE': 'PENGE EAST', 'PNF': 'PENYFFORDD', 'PNL': 'PANNAL', 'PNM': 'PENMERE', 'PNQ': 'PENZANCE QUAY', 'PNR': 'PENRITH NORTH LAKES', 'PNS': 'PENISTONE', 'PNW': 'PENGE WEST', 'PNY': 'PEN-Y-BONT', 'PNZ': 'PENZANCE', 'POK': 'POKESDOWN', 'POL': 'POLSLOE BRIDGE', 'PON': 'PONDERS END', 'POO': 'POOLE', 'POP': 'POPPLETON', 'POR': 'PORTH', 'POT': 'PONTEFRACT TANSHELF', 'PPD': 'PONTYPRIDD', 'PPK': 'POSSILPARK & PARKHOUSE', 'PPL': 'PONTYPOOL & NEW INN', 'PPR': 'PRESTON PRK LDNR', 'PRA': 'PRESTWICK INTL AIRPORT', 'PRB': 'PRESTBURY', 'PRE': 'PRESTON', 'PRH': 'PENRHYNDEUDRAETH', 'PRI': 'PORTWAY PARK & RIDE', 'PRL': 'PRITTLEWELL', 'PRN': 'PARTON', 'PRP': 'PRESTON PARK', 'PRR': 'PRINCES RISBOROUGH', 'PRS': 'PREES', 'PRT': 'PRESTATYN', 'PRU': 'PRUDHOE', 'PRW': 'PERRANWELL', 'PRY': 'PERRY BARR', 'PSC': 'PRESCOT', 'PSE': 'PITSEA', 'PSH': 'PERSHORE', 'PSL': 'PORT SUNLIGHT', 'PSN': 'PARSON STREET', 'PST': 'PRESTONPANS', 'PSW': 'POLESWORTH', 'PTA': 'PORT TALBOT PARKWAY', 'PTB': 'PENTRE-BACH', 'PTC': 'PORTCHESTER', 'PTD': 'PONTARDDULAIS', 'PTF': 'PANTYFFYNNON', 'PTG': 'PORT GLASGOW', 'PTH': 'PERTH', 'PTK': 'PARTICK', 'PTL': 'PRIESTHILL & DARNLEY', 'PTM': 'PORTHMADOG', 'PTR': 'PETERSFIELD', 'PTT': 'PATTERTON', 'PTW': 'PRESTWICK TOWN', 'PUL': 'PULBOROUGH', 'PUO': 'PURLEY OAKS', 'PUR': 'PURLEY', 'PUT': 'PUTNEY', 'PWC': 'PRESTWICH MTLK', 'PWE': 'POLLOKSHAWS EAST', 'PWL': 'PWLLHELI', 'PWW': 'POLLOKSHAWS WEST', 'PWY': 'PATCHWAY', 'PYC': 'PONTYCLUN', 'PYE': 'PYE CORNER', 'PYG': 'PAISLEY GILMOUR STREET', 'PYJ': 'PAISLEY ST JAMES', 'PYL': 'PYLE', 'PYN': 'PENRYN', 'PYP': 'PONT-Y-PANT', 'PYT': 'POYNTON', 'QBR': 'QUEENBOROUGH', 'QCD': 'CH DESTINATION', 'QCO': 'CH ORIGIN', 'QED': 'EMR DESTINATION', 'QEO': 'EMR ORIGIN', 'QHC': 'HAMPTN CT FLOWER', 'QND': 'NTH DESTINATION', 'QNO': 'NTH ORIGIN', 'QPK': 'QUEENS PARK (GLASGOW)', 'QPW': 'QUEENS PARK (LONDON)', 'QRB': 'QUEENSTOWN ROAD (BATTERSEA)', 'QRP': 'QUEENS ROAD PECKHAM', 'QTD': 'TRANSPENNINE DESTINATION', 'QTO': 'TRANSPENNINE ORIGIN', 'QUI': 'QUINTRELL DOWNS', 'QXD': 'XC DESTINATION', 'QXO': 'XC ORIGIN', 'QYD': 'QUAKERS YARD', 'RAD': 'RADLEY', 'RAI': 'RAINHAM (KENT)', 'RAM': 'RAMSGATE', 'RAN': 'RANNOCH', 'RAU': 'RAUCEBY', 'RAV': 'RAVENGLASS FOR ESKDALE', 'RAY': 'RAYNES PARK', 'RBR': 'ROBERTSBRIDGE', 'RBU': 'READING BUS', 'RCA': 'RISCA & PONTYMISTER', 'RCC': 'REDCAR CENTRAL', 'RCD': 'ROCHDALE', 'RCE': 'REDCAR EAST', 'RCF': 'RADCLIFFE MTLK', 'RDA': 'REDLAND', 'RDB': 'REDBRIDGE', 'RDC': 'REDDITCH', 'RDD': 'RIDDLESDOWN', 'RDF': 'RADCLIFFE (NOTTINGHAMSHIRE)', 'RDG': 'READING', 'RDH': 'REDHILL', 'RDM': 'RIDING MILL', 'RDN': 'REDDISH NORTH', 'RDR': 'RADYR', 'RDS': 'REDDISH SOUTH', 'RDT': 'RADLETT', 'RDW': 'READING WEST', 'REC': 'RECTORY ROAD', 'RED': 'REDRUTH', 'REE': 'REEDHAM (NORFOLK)', 'REG': 'REGENT CENTRE (NEWCASTLE)', 'REI': 'REIGATE', 'RET': 'RETFORD', 'RFD': 'ROCHFORD', 'RFY': 'ROCK FERRY', 'RGL': 'RUGELEY TRENT VALLEY', 'RGP': 'READING GREEN PARK', 'RGT': 'RUGELEY TOWN', 'RGW': 'RAMSGREAVE & WILPSHIRE', 'RHD': 'RIBBLEHEAD', 'RHI': 'RHIWBINA', 'RHL': 'RHYL', 'RHM': 'REEDHAM (LONDON)', 'RHO': 'RHOSNEIGR', 'RHU': 'RHUM (ISLE OF)', 'RHY': 'RHYMNEY', 'RIA': 'RHOOSE CARDIFF INTL AIRPORT', 'RIC': 'RICKMANSWORTH', 'RID': 'RIDGMONT', 'RIL': 'RICE LANE', 'RIS': 'RISHTON', 'RKT': 'RUSKINGTON', 'RLG': 'RAYLEIGH', 'RLN': 'ROWLANDS CASTLE', 'RMB': 'ROMAN BRIDGE', 'RMC': 'ROTHERHAM CENTRAL', 'RMD': 'RICHMOND (LONDON)', 'RMF': 'ROMFORD', 'RMK': 'RICHMOND YKS BUS', 'RML': 'ROMILEY', 'RNF': 'RAINFORD', 'RNH': 'RAINHILL', 'RNM': 'RAINHAM (ESSEX)', 'RNR': 'ROUGHTON ROAD', 'ROB': 'ROBY', 'ROC': 'ROCHE', 'ROE': 'ROTHERHITHE', 'ROG': 'ROGART', 'ROL': 'ROLLESTON', 'ROM': 'ROMSEY', 'ROO': 'ROOSE', 'ROR': 'ROGERSTONE', 'ROS': 'ROSYTH', 'ROW': 'ROWLEY REGIS', 'RRB': 'RYDER BROW', 'RRM': 'ROBINSWD RD MTLK', 'RRN': 'ROBROYSTON', 'RSB': 'ROSSLARE EUROPORT (CIE', 'RSG': 'ROSE GROVE', 'RSH': 'ROSE HILL MARPLE', 'RSN': 'RESTON', 'RTC': 'ROCHDALE TC MTLK', 'RTH': 'ROUNDTHORN MTLK', 'RTN': 'RENTON', 'RTR': 'ROCHESTER', 'RTY': 'ROTHESAY', 'RUA': 'RUABON', 'RUE': 'RUNCORN EAST', 'RUF': 'RUFFORD', 'RUG': 'RUGBY', 'RUN': 'RUNCORN', 'RUS': 'RUSWARP', 'RUT': 'RUTHERGLEN', 'RVB': 'RAVENSBOURNE', 'RVN': 'RAVENSTHORPE', 'RWC': 'RAWCLIFFE', 'RYB': 'ROY BRIDGE', 'RYD': 'RYDE ESPLANADE', 'RYE': 'RYE', 'RYH': 'RYE HOUSE', 'RYN': 'ROYDON', 'RYP': 'RYDE PIER HEAD', 'RYR': 'RYDE ST JOHNS ROAD', 'RYS': 'ROYSTON', 'SAA': 'ST ALBANS ABBEY', 'SAB': 'SMALLBROOK JUNCTION', 'SAC': 'ST ALBANS CITY', 'SAD': 'SANDWELL & DUDLEY', 'SAE': 'SALTAIRE', 'SAF': 'SALFORDS (SURREY)', 'SAH': 'SALHOUSE', 'SAJ': 'ST JOHNS (LONDON)', 'SAL': 'SALISBURY', 'SAM': 'SALTMARSHE', 'SAN': 'SANDOWN', 'SAO': 'ST ANDREWS BUS', 'SAQ': 'SALFORD QYS MTLK', 'SAR': 'ST ANDREWS ROAD', 'SAS': 'ST ANNES-ON-THE-SEA', 'SAT': 'SOUTH ACTON', 'SAU': 'ST AUSTELL', 'SAV': 'STRATFORD-UPON-AVON', 'SAW': 'SAWBRIDGEWORTH', 'SAX': 'SAXMUNDHAM', 'SAY': 'SWANLEY', 'SBE': 'STARBECK', 'SBF': 'ST BUDEAUX FERRY ROAD', 'SBJ': 'STOURBRIDGE JUNCTION', 'SBK': 'SOUTH BANK', 'SBM': 'SOUTH BERMONDSEY', 'SBP': 'STONEBRIDGE PARK', 'SBR': 'SPEAN BRIDGE', 'SBS': 'ST BEES', 'SBT': 'STOURBRIDGE TOWN', 'SBU': 'SOUTHBURY', 'SBV': 'ST BUDEAUX VICTORIA ROAD', 'SBY': 'SELBY', 'SCA': 'SCARBOROUGH', 'SCB': 'SCRABSTER', 'SCF': 'STECHFORD', 'SCG': 'STONE CROSSING', 'SCH': 'SCOTSTOUNHILL', 'SCM': 'STH CHADTN MTLK', 'SCN': 'STONE CROWN ST', 'SCR': 'ST COLUMB ROAD', 'SCS': 'STARCROSS', 'SCT': 'SCOTSCALDER', 'SCU': 'SCUNTHORPE', 'SCY': 'SOUTH CROYDON', 'SDA': 'SNODLAND', 'SDB': 'SANDBACH', 'SDC': 'SHOREDITCH HIGH STREET', 'SDE': 'SHADWELL', 'SDF': 'SAUNDERSFOOT', 'SDG': 'SANDLING', 'SDH': 'SUDBURY HILL HARROW', 'SDL': 'SANDHILLS', 'SDM': 'SHIELDMUIR', 'SDN': 'ST DENYS', 'SDP': 'SANDPLACE', 'SDR': 'SAUNDERTON', 'SDW': 'SANDWICH', 'SDY': 'SANDY', 'SEA': 'SEAHAM', 'SEB': 'SEABURN', 'SEC': 'SEATON CAREW', 'SED': 'SHELFORD (CAMBRIDGESHIRE)', 'SEE': 'SOUTHEASE', 'SEF': 'SEAFORD', 'SEG': 'SELLING', 'SEH': 'SHOREHAM (KENT)', 'SEL': 'SELLAFIELD', 'SEM': 'SEAMER', 'SEN': 'SHENSTONE', 'SER': 'ST ERTH', 'SES': 'SOUTH ELMSALL', 'SET': 'SETTLE', 'SEV': 'SEVENOAKS', 'SEZ': 'SOUTHEASE CHURCH', 'SFA': 'STRATFORD INTERNATIONAL', 'SFD': 'SALFORD CENTRAL', 'SFI': 'SHAWFAIR', 'SFL': 'SEAFORTH & LITHERLAND', 'SFN': 'SHIFNAL', 'SFO': 'STANFORD-LE-HOPE', 'SFR': 'SHALFORD (SURREY)', 'SGB': 'SMETHWICK GALTON BRIDGE', 'SGH': 'SOUTH GOSFORTH', 'SGL': 'SOUTH GYLE', 'SGM': 'ST GERMANS', 'SGN': 'SOUTH GREENFORD', 'SGQ': 'STONE GRNVLE SQ', 'SGR': 'SLADE GREEN', 'SHA': 'SHAW & CROM MTLK', 'SHB': 'SHIREBROOK', 'SHC': 'STREETHOUSE', 'SHD': 'SHILDON', 'SHE': 'SHERBORNE', 'SHF': 'SHEFFIELD', 'SHH': 'SHIREHAMPTON', 'SHI': 'SHIPLAKE', 'SHJ': 'ST HELENS JUNCTION', 'SHL': 'SHAWLANDS', 'SHM': 'SHERINGHAM', 'SHN': 'SHANKLIN', 'SHO': 'SHOLING', 'SHP': 'SHEPPERTON', 'SHR': 'SHREWSBURY', 'SHS': 'SHOTTS', 'SHT': 'SHOTTON', 'SHU': 'STONEHOUSE', 'SHV': 'SOUTHSEA HOVERPORT', 'SHW': 'SHAWFORD', 'SHY': 'SHIPLEY', 'SHZ': 'SOUTH HYLTON', 'SIA': 'SOUTHEND AIRPORT', 'SIB': 'SEAHOUSES BUS', 'SIC': 'SILECROFT', 'SID': 'SIDCUP', 'SIE': 'SHERBURN-IN-ELMET', 'SIH': 'ST HELIER (LONDON)', 'SIL': 'SILEBY', 'SIN': 'SINGER', 'SIP': 'SHIPTON', 'SIT': 'SITTINGBOURNE', 'SIV': 'ST IVES (CORNWALL)', 'SJP': 'ST JAMES PARK (EXETER)', 'SJS': 'ST JAMES STREET (WALTHAMSTOW)', 'SKE': 'SKEWEN', 'SKG': 'SKEGNESS', 'SKI': 'SKIPTON', 'SKM': 'STOKE MANDEVILLE', 'SKN': 'ST KEYNE WISHING WELL HALT', 'SKS': 'STOCKSFIELD', 'SKV': 'ST KEYNE VILLAGE', 'SKW': 'STOKE NEWINGTON', 'SLA': 'SLATEFORD', 'SLB': 'SALTBURN', 'SLD': 'SALFORD CRESCENT', 'SLE': 'SALE MTLK', 'SLH': 'SLEIGHTS', 'SLK': 'SILKSTONE COMMON', 'SLL': 'STALLINGBOROUGH', 'SLO': 'SLOUGH', 'SLQ': 'ST LEONARDS WARRIOR SQUARE', 'SLR': 'SLEAFORD', 'SLS': 'SHETTLESTON', 'SLT': 'SALTCOATS', 'SLV': 'SILVER STREET', 'SLW': 'SALWICK', 'SLY': 'SELLY OAK', 'SMA': 'SMALL HEATH', 'SMB': 'SMITHY BRIDGE', 'SMD': 'STAMFORD', 'SMG': 'ST MARGARETS (LONDON)', 'SMH': 'STAMFORD HILL', 'SMK': 'STOWMARKET', 'SML': 'SEA MILLS', 'SMM': 'SHADOWMOSS MTLK', 'SMN': 'SOUTHMINSTER', 'SMO': 'SOUTH MERTON', 'SMR': 'SMETHWICK ROLFE STREET', 'SMT': 'ST MARGARETS (HERTFORDSHIRE)', 'SMY': 'ST MARY CRAY', 'SNA': 'SANDAL & AGBRIGG', 'SND': 'SANDHURST (BERKSHIRE)', 'SNE': 'STONE (STAFFS)', 'SNF': 'SHENFIELD', 'SNG': 'SUNNINGDALE', 'SNH': 'ST HELENS CENTRAL', 'SNI': 'SNAITH', 'SNK': 'SANKEY FOR PENKETH', 'SNL': 'STONELEIGH', 'SNN': 'SWINTON (MANCHESTER)', 'SNO': 'ST NEOTS', 'SNR': 'SANDERSTEAD', 'SNS': 'STAINES', 'SNW': 'SWANWICK', 'SNY': 'SUNNYMEADS', 'SOA': 'SOUTHAMPTON AIRPORT PARKWAY', 'SOB': 'SOUTHBOURNE', 'SOC': 'SOUTHEND CENTRAL', 'SOE': 'SOUTHEND EAST', 'SOF': 'SOUTH WOODHAM FERRERS', 'SOG': 'STONEGATE', 'SOH': 'SOUTH HAMPSTEAD', 'SOI': 'STOW', 'SOJ': 'SOHAM', 'SOK': 'SOUTH KENTON', 'SOL': 'SOLIHULL', 'SOM': 'SOUTH MILFORD', 'SON': 'STEETON & SILSDEN', 'SOO': 'STROOD (KENT)', 'SOP': 'SOUTHPORT', 'SOR': 'SOLE STREET', 'SOS': 'STROMNESS ORKNEY', 'SOT': 'STOKE-ON-TRENT', 'SOU': 'SOUTHAMPTON CENTRAL', 'SOV': 'SOUTHEND VICTORIA', 'SOW': 'SOWERBY BRIDGE', 'SOY': 'STORNOWAY', 'SPA': 'SPALDING', 'SPB': 'SHEPHERDS BUSH', 'SPF': 'SPRINGFIELD', 'SPH': 'SHEPHERDS WELL', 'SPI': 'SPITAL', 'SPK': 'SUTTON PARKWAY', 'SPM': 'SALE W PARK MTLK', 'SPN': 'SPOONER ROW', 'SPO': 'SPONDON', 'SPP': 'SHIPPEA HILL', 'SPR': 'SPRINGBURN', 'SPS': 'STEPPS', 'SPT': 'STOCKPORT', 'SPU': 'STAPLEHURST', 'SPX': 'LONDON ST PANCRAS INTL', 'SPY': 'SHEPLEY', 'SQE': 'SURREY QUAYS', 'SQH': 'SANQUHAR', 'SQU': 'SQUIRES GATE', 'SRA': 'STRATFORD (LONDON)', 'SRC': 'STREATHAM COMMON', 'SRD': 'STAPLETON ROAD', 'SRF': 'STRETFORD MTLK', 'SRG': 'SEER GREEN & JORDANS', 'SRH': 'STREATHAM HILL', 'SRI': 'SPRING ROAD', 'SRL': 'SHIRLEY', 'SRN': 'STRINES', 'SRO': 'SHIREOAKS', 'SRR': 'SARN', 'SRS': 'SELHURST', 'SRT': 'SHORTLANDS', 'SRU': 'SOUTH RUISLIP', 'SRY': 'SHOEBURYNESS', 'SSA': 'SOUTHEASE A26', 'SSC': 'SEASCALE', 'SSD': 'STANSTED AIRPORT', 'SSE': 'SHOREHAM-BY-SEA', 'SSM': 'STOCKSMOOR', 'SSS': 'SHEERNESS-ON-SEA', 'SST': 'STANSTED MOUNTFITCHET', 'STA': 'STAFFORD', 'STC': 'STRATHCARRON', 'STD': 'STROUD (GLOS)', 'STE': 'STREATHAM', 'STF': 'STROMEFERRY', 'STG': 'STIRLING', 'STH': 'SHEPRETH', 'STI': 'STADIUM OF LIGHT', 'STJ': 'SEVERN TUNNEL JUNCTION', 'STK': 'STOCKTON', 'STL': 'SOUTHALL', 'STM': 'ST MICHAELS', 'STN': 'STONEHAVEN', 'STO': 'SOUTH TOTTENHAM', 'STP': 'LONDON ST PANCRAS', 'STQ': 'SOTON TOWN QUAY', 'STR': 'STRANRAER', 'STS': 'SALTASH', 'STT': 'STEWARTON', 'STU': 'STURRY', 'STV': 'STEVENSTON', 'STW': 'STRAWBERRY HILL', 'STY': 'STRATFORD-UPON-AVON PARKWAY', 'STZ': 'ST PETERS', 'SUC': 'SUTTON COMMON', 'SUD': 'SUDBURY & HARROW ROAD', 'SUG': 'SUGAR LOAF', 'SUM': 'SUMMERSTON', 'SUN': 'SUNDERLAND', 'SUO': 'SUTTON (LONDON)', 'SUP': 'SUNDRIDGE PARK', 'SUR': 'SURBITON', 'SUT': 'SUTTON COLDFIELD', 'SUU': 'SUNBURY', 'SUY': 'SUDBURY (SUFFOLK)', 'SVB': 'SEVERN BEACH', 'SVG': 'STEVENAGE', 'SVK': 'SEVEN KINGS', 'SVL': 'STAVELEY', 'SVR': 'SILVERDALE', 'SVS': 'SEVEN SISTERS', 'SWA': 'SWANSEA', 'SWB': 'SWAFFHAM (COACH)', 'SWD': 'SWINDERBY', 'SWE': 'SWINESHEAD', 'SWG': 'SWAYTHLING', 'SWI': 'SWINDON (WILTS)', 'SWJ': 'ST WERBURGH MTLK', 'SWK': 'SOUTHWICK', 'SWL': 'SWALE', 'SWM': 'SWANSCOMBE', 'SWN': 'SWINTON (SOUTH YORKSHIRE)', 'SWO': 'SNOWDOWN', 'SWR': 'STEWARTBY', 'SWS': 'SOUTH WIGSTON', 'SWT': 'SLAITHWAITE', 'SWY': 'SWAY', 'SXY': 'SAXILBY', 'SYA': 'STYAL', 'SYB': 'STALYBRIDGE', 'SYD': 'SYDENHAM', 'SYH': 'SYDENHAM HILL', 'SYL': 'SYON LANE', 'SYS': 'SYSTON', 'SYT': 'SOMERLEYTON', 'TAB': 'TAME BRIDGE PARKWAY', 'TAC': 'TACKLEY', 'TAD': 'TADWORTH', 'TAF': 'TAFFS WELL', 'TAI': 'TAIN', 'TAL': 'TALSARNAU', 'TAM': 'TAMWORTH', 'TAP': 'TAPLOW', 'TAT': 'TATTENHAM CORNER', 'TAU': 'TAUNTON', 'TAY': 'TAYNUILT', 'TBD': 'THREE BRIDGES', 'TBM': 'TRAFFRD BAR MTLK', 'TBR': 'TILBURY RIVERSIDE', 'TBW': 'TUNBRIDGE WELLS', 'TBY': 'THORNABY', 'TCR': 'TOTTENHAM COURT ROAD EL', 'TDU': 'TONDU', 'TED': 'TEDDINGTON', 'TEE': 'TIREE (ISLE OF)', 'TEN': 'TENBY', 'TEO': 'THEOBALDS GROVE', 'TEY': 'TEYNHAM', 'TFC': 'TELFORD CENTRAL', 'TGM': 'TEIGNMOUTH', 'TGS': 'TY GLAS', 'THA': 'THATCHAM', 'THB': 'THORNLIEBANK', 'THC': 'THURNSCOE', 'THD': 'THAMES DITTON', 'THE': 'THEALE', 'THH': 'THATTO HEATH', 'THI': 'THIRSK', 'THL': 'TILE HILL', 'THO': 'THORNFORD', 'THP': 'THANET PARKWAY', 'THS': 'THURSO', 'THT': 'THORNTONHALL', 'THU': 'THURGARTON', 'THW': 'THE HAWTHORNS', 'TIL': 'TILBURY TOWN', 'TIM': 'TIMPERLEY', 'TIP': 'TIPTON', 'TIR': 'TIR-PHIL', 'TIS': 'TISBURY', 'TLB': 'TALYBONT', 'TLC': 'TAL-Y-CAFN', 'TLH': 'TILEHURST', 'TLK': 'THE LAKES (WARWICKSHIRE)', 'TLS': 'THORPE-LE-SOKEN', 'TMC': 'TEMPLECOMBE', 'TNA': 'THORNTON ABBEY', 'TNF': 'TONFANAU', 'TNN': 'THORNE NORTH', 'TNP': 'TONYPANDY', 'TNS': 'THORNE SOUTH', 'TOD': 'TODMORDEN', 'TOK': 'THREE OAKS', 'TOL': 'TOLWORTH', 'TOM': 'TOTTENHAM HALE', 'TON': 'TONBRIDGE', 'TOO': 'TOOTING', 'TOP': 'TOPSHAM', 'TOT': 'TOTNES', 'TPB': 'THORPE BAY', 'TPC': 'THORPE CULVERT', 'TPN': 'TON PENTRE', 'TQY': 'TORQUAY', 'TRA': 'TRAFFORD PARK', 'TRB': 'TREHERBERT', 'TRD': 'TROED-Y-RHIW', 'TRE': 'TREFFOREST ESTATE', 'TRF': 'TREFFOREST', 'TRH': 'TREHAFOD', 'TRI': 'TRING', 'TRM': 'TRIMLEY', 'TRN': 'TROON', 'TRO': 'TROWBRIDGE', 'TRR': 'TORRE', 'TRS': 'THURSTON', 'TRU': 'TRURO', 'TRY': 'TREORCHY', 'TTA': 'TADWORTH (AVENUE', 'TTF': 'THETFORD', 'TTH': 'THORNTON HEATH', 'TTN': 'TOTTON', 'TUH': 'TULSE HILL', 'TUL': 'TULLOCH', 'TUR': 'TURKEY STREET', 'TUT': 'TUTBURY & HATTON', 'TVP': 'TIVERTON PARKWAY', 'TWB': 'TWEEDBANK', 'TWI': 'TWICKENHAM', 'TWN': 'TOWN GREEN', 'TWY': 'TWYFORD', 'TYC': 'TY CROES', 'TYG': 'TYGWYN', 'TYL': 'TYNDRUM LOWER', 'TYS': 'TYSELEY', 'TYW': 'TYWYN', 'UCK': 'UCKFIELD', 'UDD': 'UDDINGSTON', 'UHA': 'UPHALL', 'UHL': 'UPPER HOLLOWAY', 'UIG': 'UIG BUS', 'ULC': 'ULCEBY', 'ULL': 'ULLESKELF', 'ULP': 'ULLAPOOL', 'ULV': 'ULVERSTON', 'UMB': 'UMBERLEIGH', 'UNI': 'UNIVERSITY (BIRMINGHAM)', 'UNV': 'UNIVERSITY (SUNDERLAND)', 'UPH': 'UPPER HALLIFORD', 'UPL': 'UPHOLLAND', 'UPM': 'UPMINSTER', 'UPT': 'UPTON', 'UPW': 'UPWEY', 'URM': 'URMSTON', 'UTT': 'UTTOXETER', 'UTY': 'UPPER TYNDRUM', 'UWL': 'UPPER WARLINGHAM', 'VAL': 'VALLEY', 'VIC': 'LONDON VICTORIA', 'VIR': 'VIRGINIA WATER', 'VPM': 'VELOPARK MTLK', 'VXH': 'VAUXHALL', 'WAC': 'WARRINGTON CENTRAL', 'WAD': 'WADHURST', 'WAE': 'LONDON WATERLOO EAST', 'WAF': 'WALLYFORD', 'WAL': 'WALTON-ON-THAMES', 'WAM': 'WALMER', 'WAN': 'WANBOROUGH', 'WAO': 'WALTON (MERSEYSIDE)', 'WAR': 'WARE', 'WAS': 'WATTON-AT-STONE', 'WAT': 'LONDON WATERLOO', 'WAV': 'WAVERTREE TECHNOLOGY PARK', 'WAW': 'WARRINGTON WEST', 'WBC': 'WATERBEACH', 'WBD': 'WHITLEY BRIDGE', 'WBE': 'WADEBRIDGE BUS', 'WBL': 'WARBLINGTON', 'WBO': 'WIMBLEDON CHASE', 'WBP': 'WEST BROMPTON', 'WBQ': 'WARRINGTON BANK QUAY', 'WBR': 'WHALEY BRIDGE', 'WBY': 'WEST BYFLEET', 'WCB': 'WESTCOMBE PARK', 'WCF': 'WESTCLIFF', 'WCH': 'WHITCHURCH (HAMPSHIRE)', 'WCK': 'WICK', 'WCL': 'WEST CALDER', 'WCM': 'WICKHAM MARKET', 'WCP': 'WORCESTER PARK', 'WCR': 'WHITECRAIGS', 'WCT': 'WATCHET BUS', 'WCX': 'WEMBLEY STADIUM', 'WCY': 'WEST CROYDON', 'WDB': 'WOODBRIDGE', 'WDD': 'WIDDRINGTON', 'WDE': 'WOOD END', 'WDH': 'WOODHOUSE', 'WDI': 'W DIDSBURY MTLK', 'WDL': 'WOODHALL', 'WDM': 'WINDERMERE', 'WDN': 'WALSDEN', 'WDO': 'WADDON', 'WDR': 'QUEENS ROAD MTLK', 'WDS': 'WOODLESFORD', 'WDT': 'WEST DRAYTON', 'WDU': 'WEST DULWICH', 'WEA': 'WEST EALING', 'WED': 'WEDGWOOD', 'WEE': 'WEELEY', 'WEH': 'WEST HAM', 'WEL': 'WELLINGBOROUGH', 'WEM': 'WEM', 'WEO': 'WEDGWOOD OLD RD', 'WER': 'WEDGWOOD LANE', 'WES': 'WESTERTON', 'WET': 'WEETON', 'WEY': 'WEYMOUTH', 'WFF': 'WHIFFLET', 'WFH': 'WATFORD HIGH STREET', 'WFI': 'WESTERFIELD', 'WFJ': 'WATFORD JUNCTION', 'WFL': 'WAINFLEET', 'WFN': 'WATFORD NORTH', 'WGA': 'WESTGATE-ON-SEA', 'WGC': 'WELWYN GARDEN CITY', 'WGN': 'WIGAN NORTH WESTERN', 'WGR': 'WOODGRANGE PARK', 'WGT': 'WIGTON', 'WGV': 'WARGRAVE', 'WGW': 'WIGAN WALLGATE', 'WHA': 'WESTENHANGER', 'WHC': 'WALTHAMSTOW CENTRAL', 'WHD': 'WEST HAMPSTEAD', 'WHE': 'WHALLEY', 'WHG': 'WESTHOUGHTON', 'WHI': 'WHITSTABLE', 'WHK': 'WYTHNSHW TC MTLK', 'WHL': 'WHITE HART LANE', 'WHM': 'WHIMPLE', 'WHN': 'WHISTON', 'WHP': 'WEST HAMPSTEAD THAMESLINK', 'WHR': 'WEST HORNDON', 'WHS': 'WHYTELEAFE SOUTH', 'WHT': 'WHITCHURCH (CARDIFF)', 'WHY': 'WHYTELEAFE', 'WIC': 'WICKFORD', 'WID': 'WIDNES', 'WIH': 'WINCHMORE HILL', 'WIJ': 'WILLESDEN JUNCTION', 'WIL': 'WILLINGTON', 'WIM': 'WIMBLEDON', 'WIN': 'WINCHESTER', 'WIS': 'WISBECH (COACH)', 'WIV': 'WIVENHOE', 'WKB': 'WEST KILBRIDE', 'WKD': 'WALKDEN', 'WKF': 'WAKEFIELD WESTGATE', 'WKG': 'WORKINGTON', 'WKI': 'WEST KIRBY', 'WKK': 'WAKEFIELD KIRKGATE', 'WKM': 'WOKINGHAM', 'WLC': 'WALTHAM CROSS', 'WLD': 'WEST ST LEONARDS', 'WLE': 'WHITTLESEA', 'WLF': 'WHITTLESFORD PARKWAY', 'WLG': 'WALLASEY GROVE ROAD', 'WLI': 'WELLING', 'WLM': 'WILLIAMWOOD', 'WLN': 'WELLINGTON (SHROPSHIRE)', 'WLO': 'WATERLOO (MERSEYSIDE)', 'WLP': 'WELSHPOOL', 'WLS': 'WOOLSTON', 'WLT': 'WALLINGTON', 'WLV': 'WALLASEY VILLAGE', 'WLW': 'WELWYN NORTH', 'WLY': 'WOODLEY', 'WMA': 'WEST MALLING', 'WMB': 'WEMBLEY CENTRAL', 'WMC': 'WILMCOTE (WARWICKSHIRE)', 'WMD': 'WYMONDHAM', 'WME': 'WOODMANSTERNE', 'WMG': 'WELHAM GREEN', 'WMI': 'WILDMILL', 'WML': 'WILMSLOW', 'WMM': 'WITHINGTON MTLK', 'WMN': 'WARMINSTER', 'WMR': 'WIDNEY MANOR', 'WMS': 'WEMYSS BAY', 'WMT': 'WEASTE MTLK', 'WMW': 'WALTHAMSTOW QUEENS ROAD', 'WNC': 'WINDSOR & ETON CENTRAL', 'WND': 'WENDOVER', 'WNE': 'WILNECOTE (STAFFORDSHIRE)', 'WNF': 'WINCHFIELD', 'WNG': 'WAUN-GRON PARK', 'WNH': 'WARNHAM', 'WNI': 'WINCHELSEA NEW I', 'WNL': 'WHINHILL', 'WNM': 'WESTON MILTON', 'WNN': 'WENNINGTON', 'WNP': 'WANSTEAD PARK', 'WNR': 'WINDSOR & ETON RIVERSIDE', 'WNS': 'WINNERSH', 'WNT': 'WANDSWORTH TOWN', 'WNW': 'WEST NORWOOD', 'WNY': 'WHITE NOTLEY', 'WOB': 'WOBURN SANDS', 'WOF': 'WORCESTER FOREGATE STREET', 'WOH': 'WOLDINGHAM', 'WOK': 'WOKING', 'WOL': 'WOLVERTON', 'WOM': 'WOMBWELL', 'WON': 'WALTON-ON-THE-NAZE', 'WOO': 'WOOL', 'WOP': 'WORCESTERSHIRE PARKWAY', 'WOR': 'WORLE', 'WOS': 'WORCESTER SHRUB HILL', 'WPE': 'WAPPING', 'WPL': 'WORPLESDON', 'WPM': 'WYTHNSHW PK MTLK', 'WRB': 'WRABNESS', 'WRE': 'WRENBURY', 'WRH': 'WORTHING', 'WRK': 'WORKSOP', 'WRL': 'WETHERAL', 'WRM': 'WAREHAM', 'WRN': 'WEST RUNTON', 'WRP': 'WARWICK PARKWAY', 'WRS': 'WRESSLE', 'WRT': 'WORSTEAD', 'WRU': 'WEST RUISLIP', 'WRW': 'WARWICK', 'WRX': 'WREXHAM GENERAL', 'WRY': 'WRAYSBURY', 'WSA': 'WEST ALLERTON', 'WSB': 'WESTBURY', 'WSE': 'WINCHELSEA', 'WSF': 'WINSFORD', 'WSH': 'WISHAW', 'WSL': 'WALSALL', 'WSM': 'WESTON-SUPER-MARE', 'WSR': 'WOODSMOOR', 'WST': 'WOOD STREET', 'WSU': 'WEST SUTTON', 'WSW': 'WANDSWORTH COMMON', 'WTA': 'WESTERHAILES', 'WTB': 'WHITBY', 'WTC': 'WHITCHURCH (SHROPSHIRE)', 'WTE': 'WHITLOCKS END', 'WTF': 'WHITEFIELD MTLK', 'WTG': 'WATLINGTON', 'WTH': 'WHITEHAVEN', 'WTI': 'WINNERSH TRIANGLE', 'WTL': 'WHITLAND', 'WTM': 'WITHAM', 'WTN': 'WHITTON (LONDON)', 'WTO': 'WATER ORTON', 'WTR': 'WATERINGBURY', 'WTS': 'WHATSTANDWELL', 'WTT': 'WITTON (WEST MIDLANDS)', 'WTW': 'COWES WEST RDJET', 'WTY': 'WITLEY', 'WTZ': 'WHITBY BUS', 'WVF': 'WIVELSFIELD', 'WVH': 'WOLVERHAMPTON', 'WWA': 'WOOLWICH ARSENAL', 'WWC': 'WOOLWICH EL', 'WWD': 'WOOLWICH DOCKYARD', 'WWI': 'WEST WICKHAM', 'WWL': 'WHITWELL', 'WWM': 'WESTWOOD MTLK', 'WWO': 'WEST WORTHING', 'WWR': 'WANDSWORTH ROAD', 'WWW': 'WOOTTON WAWEN', 'WXC': 'WREXHAM CENTRAL', 'WYB': 'WEYBRIDGE', 'WYE': 'WYE', 'WYL': 'WYLDE GREEN', 'WYM': 'WYLAM', 'WYT': 'WYTHALL', 'X00': 'KINGSBRIDGE BUS STATION', 'X01': 'PONTYPRIDD SIG VR730', 'X02': 'LONDON ROAD DEPOT', 'X03': 'BISHOPS LYDEARD L ARMS', 'X04': 'PRINCES ST GARDENS', 'X05': 'PADDINGTON BAKERLOO LUL', 'X06': 'LIFTON ARUNDELL ARMS HOTEL', 'X07': 'LYDFORD WAR MEMORIAL', 'X08': 'LILLIE BRIDGE DEPOT LUL', 'XAA': 'GALASHIELS V BWK', 'XAV': 'HELSTON BUS', 'XAZ': 'LAUNCESTON WESTGATE STREET', 'XBV': 'MINEHEAD BUTLINS', 'XBW': 'MINEHEAD BUS', 'XCF': 'CARDIFF AIR RIA', 'XCG': 'OKEHAMPTON BUS', 'XCV': 'TAVISTOCK BUS', 'XDJ': 'PLYMOUTH SALT RD', 'XDK': 'SWINDON BUS STN', 'XDN': 'CHIPPENHAM NEW RD', 'XDO': 'BATH BUS STATION', 'XDP': 'TOTNES STN ROAD', 'XDR': 'PAR STN BUS STOP', 'XDY': 'DUNSTER BUS', 'XEE': 'HOLSWORTHY BUS', 'XET': 'NUTFIELD MEMORIAL HALL', 'XGO': 'CATTERICK CAMP CENTRE', 'XKW': 'BLACKWOOD BUS LINC', 'XLB': 'LEEDS BRD AIRBUS', 'XMT': 'DARTMOUTH', 'XNA': 'ALTRINCHAM MTLK', 'XPB': 'BRISTOL AIRPORT', 'XRD': 'RYDE HOVERPORT', 'XRM': 'RCHDLE STN MTLK', 'XSC': 'SALCOMBE BUS', 'XVE': 'OXFORD WESTGATE', 'YAE': 'YATE', 'YAL': 'YALDING', 'YAT': 'YATTON', 'YEO': 'YEOFORD', 'YET': 'YETMINSTER', 'YMH': 'YARMOUTH IOW', 'YNW': 'YNYSWEN', 'YOK': 'YOKER', 'YRD': 'YARDLEY WOOD', 'YRK': 'YORK', 'YRM': 'YARM', 'YRT': 'YORTON', 'YSM': 'YSTRAD MYNACH', 'YSR': 'YSTRAD RHONDDA', 'YVJ': 'YEOVIL JUNCTION', 'YVP': 'YEOVIL PEN MILL', 'ZAE': 'ALDGATE EAST UND', 'ZBQ': 'BARONS COURT LT', 'ZBS': 'BAKER STREET UND', 'ZCK': 'COCKFOSTERS UND', 'ZCO': 'CROXLEY UND', 'ZCW': 'CANADA WATER', 'ZDB': 'DEPTFORD BRIDGE DLR', 'ZDE': 'DAGENHAM EAST L.T.', 'ZEH': 'EAST HAM UND', 'ZEL': 'ELEPHANT & CASTLE (LT)', 'ZEO': 'BERMONDSEY LRT', 'ZET': 'EARLS COURT UND', 'ZFD': 'FARRINGDON', 'ZFR': 'FINCHLEY ROAD UND', 'ZHA': 'HAMMERSMITH (DISTRICT) LUL', 'ZHB': 'HIGH BARNET UND', 'ZHD': 'HILLINGDON UND', 'ZHJ': 'HEATHROW UNDERGROUND', 'ZHR': 'HOLLOWAY RD UND', 'ZHS': 'KENSINGTON HIGH ST L.T.', 'ZKB': 'BARKING L.T.', 'ZKX': 'KINGS CROSS UND', 'ZLW': 'WHITECHAPEL', 'ZND': 'NORTHWOOD UND', 'ZNP': 'NEWBURY PARK UND', 'ZOA': 'OAKWOOD UND', 'ZPA': 'PADDINGTON UND', 'ZTG': 'TOWER GATEWY DLR', 'ZTH': 'TOWER HILL L.T.', 'ZTL': 'TURNPIKE LANE UND', 'ZTU': 'TURNHAM GREEN LT', 'ZUM': 'UPMINSTER L.T.', 'ZWT': 'WATFORD MET UND', 'ZWY': 'WEMBLEY PARK UND'}
#session 1 type
depspecifictrainservices = [session1.get(f"https://www.brtimes.com/board_dep?stn={stationcode}&filt={i}&date={date}").json() for i in callingpoints]
arrspecifictrainservices = [session1.get(f"https://www.brtimes.com/board_arr?stn={stationcode}&filt={i}&date={date}").json() for i in callingpoints]
deptimes = []
arrtimes = []
traveltimes = []
besttraveltime = 99999999999999999
fullGenPageHTML = ''
#converting times into the format used by the site
def timeformat(value):
return datetime.datetime.strftime(datetime.datetime(2021,1,1) + value * datetime.timedelta(seconds=30), "%H:%M")
for i in range(len(depspecifictrainservices)):
table_header = f'{codelookup[callingpoints[i]]}, ({(len(depspecifictrainservices[i]["events"]))} per day)'
#moving through the json
for k in depspecifictrainservices[i]['events']:
for L in k['portions']:
for m in L['filter']:
#discarding trains which are slower than others
if m['overtaken'] == False:
for n in range(len(depspecifictrainservices[i]['events'])):
for o in range(len(depspecifictrainservices[i]['events'][n]['portions'])):
if depspecifictrainservices[i]['events'][n]['portions'][o]['filter'] != "":
#checking the depart and arrive times of each service
for p in range(len((depspecifictrainservices[i]['events'][n]['portions'][o]['filter']))):
deptimes.append(depspecifictrainservices[i]['events'][n]['portions'][o]['filter'][p]['public_time'])
arrtimes.append(depspecifictrainservices[i]['events'][n]['public_time'])
break
break
break
for q in range(len(arrtimes)):
traveltimes.append(deptimes[q] - arrtimes[q])
newrow = f''' <tr>
<td>{codelookup[callingpoints[i]]}</td>
<td>{(len(depspecifictrainservices[i]["events"]))}</td>
<td>{(len(arrspecifictrainservices[i]["events"]))}</td>
<td>{timeformat(depspecifictrainservices[i]['events'][0]['public_time'])}</td>
<td>{timeformat(depspecifictrainservices[i]['events'][n]['public_time'])}</td>
<td>{timeformat(min(traveltimes))}</td>
</tr>'''
fullGenPageHTML = fullGenPageHTML + newrow
arrtimes = []
deptimes = []
traveltimes = []
fullGenPageHTML = f'''<!DOCTYPE html>
<html>
<body>
<h2>Trains from {codelookup[stationcode]}</h2>
<table class="headerSort">
<thead>
<tr>
<th>Station</th>
<th>Trains Home Per Day</th>
<th>Trains Away Per Day</th>
<th>First Train Out</th>
<th>Last Train Home</th>
<th>Travel Time</th>
</tr>
</thead>
<tbody>
''' + fullGenPageHTML + '''</tbody></table>
</body>
</html>'''
with open('trains.html', 'w+') as fw:
fw.write(fullGenPageHTML)
webbrowser.open_new_tab(f'file:///{getcwd()}/trains.html')