PyTransportNSWv2 0.5.2__tar.gz → 0.5.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyTransportNSWv2
3
- Version: 0.5.2
3
+ Version: 0.5.4
4
4
  Summary: Get detailed per-trip transport information from TransportNSW
5
5
  Home-page: https://github.com/andystewart999/TransportNSW
6
6
  Author: andystewart999
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyTransportNSWv2
3
- Version: 0.5.2
3
+ Version: 0.5.4
4
4
  Summary: Get detailed per-trip transport information from TransportNSW
5
5
  Home-page: https://github.com/andystewart999/TransportNSW
6
6
  Author: andystewart999
@@ -134,42 +134,30 @@ class TransportNSWv2(object):
134
134
  exit
135
135
 
136
136
  retrieved_journeys = len(result['journeys'])
137
+ print ("retrieved_journeys = " + str(retrieved_journeys))
137
138
 
138
139
  # Loop through the results applying filters where required, and generate the appropriate JSON output including an array of in-scope trips
139
140
  json_output=''
140
141
  found_journeys = 0
141
142
  no_valid_journeys = False
142
143
 
143
- for current_journey in range (0, retrieved_journeys, 1):
144
+ for current_journey_index in range (0, retrieved_journeys, 1):
145
+ print(current_journey_index)
144
146
  if transport_type == 0:
145
147
  # Just grab the next trip
146
- journey = result['journeys'][current_journey]
147
- next_journey = current_journey + 1
148
+ journey = result['journeys'][current_journey_index]
149
+ next_journey_index = current_journey_index + 1
148
150
  else:
149
151
  # Look for a trip with a matching class filter in at least one of its legs. Either ANY, or the first leg, depending on how strict we're being
150
- journey, next_journey = self.find_next_journey(result['journeys'], current_journey, transport_type, strict_transport_type)
151
-
152
- if (journey is None) or (journey['legs']) is None:
153
- #We've reached the end
154
- no_valid_journeys = True
155
- self.info = {
156
- ATTR_DUE_IN : 'n/a',
157
- ATTR_ORIGIN_STOP_ID : 'n/a',
158
- ATTR_ORIGIN_NAME : 'n/a',
159
- ATTR_DEPARTURE_TIME : 'n/a',
160
- ATTR_DESTINATION_STOP_ID : 'n/a',
161
- ATTR_DESTINATION_NAME : 'n/a',
162
- ATTR_ARRIVAL_TIME : 'n/a',
163
- ATTR_ORIGIN_TRANSPORT_TYPE : 'n/a',
164
- ATTR_ORIGIN_TRANSPORT_NAME : 'n/a',
165
- ATTR_ORIGIN_LINE_NAME : 'n/a',
166
- ATTR_ORIGIN_LINE_NAME_SHORT : 'n/a',
167
- ATTR_CHANGES : 'n/a',
168
- ATTR_OCCUPANCY : 'n/a',
169
- ATTR_REAL_TIME_TRIP_ID : 'n/a',
170
- ATTR_LATITUDE : 'n/a',
171
- ATTR_LONGITUDE : 'n/a'
172
- }
152
+ print ("transport_type = " + str(transport_type))
153
+ journey, next_journey_index = self.find_next_journey(result['journeys'], current_journey_index, transport_type, strict_transport_type)
154
+ if (journey is None):
155
+ print ("Just called find_next_journey")
156
+ print ("journey is None")
157
+
158
+ if ((journey is None) or (journey['legs']) is None):
159
+ print ("This journey isn't valid, moving to the next one")
160
+
173
161
  else:
174
162
  legs = journey['legs']
175
163
  first_leg = self.find_first_leg(legs, transport_type, strict_transport_type)
@@ -181,7 +169,6 @@ class TransportNSWv2(object):
181
169
  destination = last_leg['destination']
182
170
  transportation = first_leg['transportation']
183
171
 
184
-
185
172
  # Origin info
186
173
  origin_stop_id = origin['id']
187
174
  origin_name = origin['name']
@@ -216,7 +203,7 @@ class TransportNSWv2(object):
216
203
  origin_line_name = transportation['number']
217
204
 
218
205
  # Occupancy info, if it's there
219
- occupancy = 'UNKNOWN'
206
+ occupancy = 'unknown'
220
207
  if 'properties' in first_stop:
221
208
  if 'occupancy' in first_stop['properties']:
222
209
  occupancy = first_stop['properties']['occupancy']
@@ -230,22 +217,21 @@ class TransportNSWv2(object):
230
217
  # Build the URL
231
218
  url = \
232
219
  'https://api.transport.nsw.gov.au/v1/gtfs/vehiclepos' \
233
- + self.get_url(origin_mode)
220
+ + self.get_url(origin_mode)
234
221
  auth = 'apikey ' + self.api_key
235
222
  header = {'Authorization': auth}
236
223
 
237
224
  response = requests.get(url, headers=header, timeout=10)
238
-
239
225
  # Only try and process the results if we got a good return code
240
226
  if response.status_code == 200:
241
227
  # Search the feed and see if we can find the trip_id
242
228
  # If we do, capture the latitude and longitude
243
-
244
229
  feed = gtfs_realtime_pb2.FeedMessage()
245
230
  feed.ParseFromString(response.content)
246
231
 
247
232
  # Unfortunately we need to do some mucking about for train-based trip_ids
248
233
  # Define the appropriate regular expression to search for - usually just the full text
234
+ print ( feed.entity[0] )
249
235
  bFindLocation = True
250
236
 
251
237
  if origin_mode == 'Train':
@@ -268,37 +254,40 @@ class TransportNSWv2(object):
268
254
  # We found it, so break out
269
255
  break
270
256
 
271
- self.info = {
272
- ATTR_DUE_IN: due,
273
- ATTR_ORIGIN_STOP_ID : origin_stop_id,
274
- ATTR_ORIGIN_NAME : origin_name,
275
- ATTR_DEPARTURE_TIME : origin_departure_time,
276
- ATTR_DESTINATION_STOP_ID : destination_stop_id,
277
- ATTR_DESTINATION_NAME : destination_name,
278
- ATTR_ARRIVAL_TIME : destination_arrival_time,
279
- ATTR_ORIGIN_TRANSPORT_TYPE : origin_mode,
280
- ATTR_ORIGIN_TRANSPORT_NAME: origin_mode_name,
281
- ATTR_ORIGIN_LINE_NAME : origin_line_name,
282
- ATTR_ORIGIN_LINE_NAME_SHORT : origin_line_name_short,
283
- ATTR_CHANGES: changes,
284
- ATTR_OCCUPANCY : occupancy,
285
- ATTR_REAL_TIME_TRIP_ID : realtimetripid,
286
- ATTR_LATITUDE : latitude,
287
- ATTR_LONGITUDE : longitude
288
- }
289
-
290
- found_journeys = found_journeys + 1
291
-
292
- # Add to the return array
293
- if (found_journeys == journeys_to_return) or (no_valid_journeys == True):
294
- break
295
- else:
296
- if (found_journeys >= 2):
297
- json_output = json_output + ',' + json.dumps(self.info)
298
- else:
299
- json_output = json_output + json.dumps(self.info)
300
-
301
- current_journey = next_journey
257
+ self.info = {
258
+ ATTR_DUE_IN: due,
259
+ ATTR_ORIGIN_STOP_ID : origin_stop_id,
260
+ ATTR_ORIGIN_NAME : origin_name,
261
+ ATTR_DEPARTURE_TIME : origin_departure_time,
262
+ ATTR_DESTINATION_STOP_ID : destination_stop_id,
263
+ ATTR_DESTINATION_NAME : destination_name,
264
+ ATTR_ARRIVAL_TIME : destination_arrival_time,
265
+ ATTR_ORIGIN_TRANSPORT_TYPE : origin_mode,
266
+ ATTR_ORIGIN_TRANSPORT_NAME: origin_mode_name,
267
+ ATTR_ORIGIN_LINE_NAME : origin_line_name,
268
+ ATTR_ORIGIN_LINE_NAME_SHORT : origin_line_name_short,
269
+ ATTR_CHANGES: changes,
270
+ ATTR_OCCUPANCY : occupancy,
271
+ ATTR_REAL_TIME_TRIP_ID : realtimetripid,
272
+ ATTR_LATITUDE : latitude,
273
+ ATTR_LONGITUDE : longitude
274
+ }
275
+
276
+ found_journeys = found_journeys + 1
277
+
278
+ # Add to the return array
279
+ if (no_valid_journeys == True):
280
+ break
281
+
282
+ if (found_journeys >= 2):
283
+ json_output = json_output + ',' + json.dumps(self.info)
284
+ else:
285
+ json_output = json_output + json.dumps(self.info)
286
+
287
+ if (found_journeys == journeys_to_return):
288
+ break
289
+
290
+ current_journey_index = next_journey_index
302
291
 
303
292
  json_output='{"journeys_to_return": ' + str(self.journeys_to_return) + ', "journeys_with_data": ' + str(found_journeys) + ', "journeys": [' + json_output + ']}'
304
293
  return json_output
@@ -316,60 +305,67 @@ class TransportNSWv2(object):
316
305
  # return None
317
306
 
318
307
 
319
- def find_next_journey(self, journeys, start_journey, journeytype, strict):
320
- # Find the next journey that has a leg of the requested type
308
+ def find_next_journey(self, journeys, start_journey_index, journeytype, strict):
309
+ # Fnd the next journey that has a leg of the requested type
321
310
  journey_count = len(journeys)
311
+ print ("(find_next_journey): start_journey_index = " + str(start_journey_index))
312
+ print ("(find_next_journey): journey_count = " + str(journey_count))
322
313
 
323
314
  # Some basic error checking
324
- if start_journey > journey_count:
315
+ if start_journey_index > journey_count:
316
+ print ("None, None")
325
317
  return None, None
326
318
 
327
- for journey in range (start_journey, journey_count, 1):
328
- leg = self.find_first_leg(journeys[journey]['legs'], journeytype, strict)
319
+ for journey_index in range (start_journey_index, journey_count, 1):
320
+ leg = self.find_first_leg(journeys[journey_index]['legs'], journeytype, strict)
329
321
  if leg is not None:
330
- return journeys[journey], journey + 1
322
+ print ("leg is not None")
323
+ return journeys[journey_index], journey_index + 1
331
324
  else:
325
+ print ("leg is None, None")
332
326
  return None, None
333
327
 
334
328
  # Hmm, we didn't find one
335
- return None
329
+ return None, None
336
330
 
337
331
 
338
332
  def find_first_leg(self, legs, legtype, strict):
339
333
  # Find the first leg of the requested type
340
334
  leg_count = len(legs)
341
- for leg in range (0, leg_count, 1):
342
- leg_class = legs[leg]['transportation']['product']['class']
343
-
335
+ print ("leg_count = " + str(leg_count))
336
+ for leg_index in range (0, leg_count, 1):
337
+ leg_class = legs[leg_index]['transportation']['product']['class']
338
+ print("leg_class = " + str(leg_class))
344
339
  # We've got a filter, and the leg type matches it, so return that leg
345
340
  if legtype != 0 and leg_class == legtype:
346
- return legs[leg]
341
+ return legs[leg_index]
347
342
 
348
343
  # We don't have a filter, and this is the first non-walk/cycle leg so return that leg
349
344
  if legtype == 0 and leg_class < 99:
350
- return legs[leg]
345
+ return legs[leg_index]
351
346
 
352
347
  # Exit if we're doing strict filtering and we haven't found that type in the first leg
353
348
  if legtype != 0 and strict == True:
354
349
  return None
355
350
 
356
351
  # Hmm, we didn't find one
352
+ print ("Fell through to None")
357
353
  return None
358
354
 
359
355
 
360
356
  def find_last_leg(self, legs, legtype, strict):
361
357
  # Find the last leg of the requested type
362
358
  leg_count = len(legs)
363
- for leg in range (leg_count - 1, -1, -1):
364
- leg_class = legs[leg]['transportation']['product']['class']
359
+ for leg_index in range (leg_count - 1, -1, -1):
360
+ leg_class = legs[leg_index]['transportation']['product']['class']
365
361
 
366
362
  # We've got a filter, and the leg type matches it, so return that leg
367
363
  if legtype != 0 and leg_class == legtype:
368
- return legs[leg]
364
+ return legs[leg_index]
369
365
 
370
366
  # We don't have a filter, and this is the first non-walk/cycle leg so return that leg
371
367
  if legtype == 0 and leg_class < 99:
372
- return legs[leg]
368
+ return legs[leg_index]
373
369
 
374
370
  # Exit if we're doing strict filtering and we haven't found that type in the first leg
375
371
  if legtype != 0 and strict == True:
@@ -384,8 +380,8 @@ class TransportNSWv2(object):
384
380
  changes = 0
385
381
  leg_count = len(legs)
386
382
 
387
- for leg in range (0, leg_count, 1):
388
- leg_class = legs[leg]['transportation']['product']['class']
383
+ for leg_index in range (0, leg_count, 1):
384
+ leg_class = legs[leg_index]['transportation']['product']['class']
389
385
  if leg_class == legtype or legtype == 0:
390
386
  changes = changes + 1
391
387
 
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="PyTransportNSWv2",
8
- version="0.5.2",
8
+ version="0.5.4",
9
9
  author="andystewart999",
10
10
  description="Get detailed per-trip transport information from TransportNSW",
11
11
  long_description=long_description,