Prechádzať zdrojové kódy

wiener linien: fix crash when 'timeReal' not in departure data

config path: /etc/omegalines
> Initializing display
> Setting display to ON
update wiener linien
Traceback (most recent call last):
  File "/usr/bin/omegalines", line 296, in <module>
    sys.exit(main(sys.argv[1:]))
  File "/usr/bin/omegalines", line 291, in main
    run(**vars(args))
  File "/usr/bin/omegalines", line 240, in run
    rbl=config['wiener_linien']['rbl'],
  File "/usr/bin/omegalines", line 110, in request_wiener_linien_departures
    server_time_delta=server_time_delta,
  File "/usr/bin/omegalines", line 124, in departures_from_wiener_linien_line_data
    raise Exception('{}\ndeparture_data: {!r}'.format(e, departure_data))
Exception: 'timeReal'
departure_data: {u'departureTime': {u'timePlanned': u'2018-03-08T18:58:00.000+0100', u'countdown': 1}}
Fabian Peter Hammerle 7 rokov pred
rodič
commit
0a693c43f7
1 zmenil súbory, kde vykonal 7 pridanie a 3 odobranie
  1. 7 3
      scripts/omegalines

+ 7 - 3
scripts/omegalines

@@ -116,12 +116,16 @@ def departures_from_wiener_linien_line_data(line_data, server_time_delta):
     assert 1 == len(line_data['departures']), line_data
     departures = []
     for departure_data in line_data['departures']['departure']:
-        try:
+        if 'timeReal' in departure_data['departureTime']:
             predicted_time_server = dateutil.parser.parse(
                 departure_data['departureTime']['timeReal'],
             )
-        except KeyError as e:
-            raise Exception('{}\ndeparture_data: {!r}'.format(e, departure_data))
+        else:
+            predicted_time_server = dateutil.parser.parse(
+                departure_data['departureTime']['timePlanned'],
+            ) + dt.timedelta(
+                minutes=int(departure_data['departureTime']['countdown']),
+            )
         departures.append(Departure(
             line=departure_data['vehicle']['name']
                 if 'vehicle' in departure_data else line_data['name'],