Forráskód Böngészése

fix oebb: crash when train cancelled

request http://fahrplan.oebb.at/bin/stboard.exe/dn?L=vs_scotty.vs_liveticker&evaId=8101934&boardType=dep&disableEquivs=yes&outputMode=tickerDataOnly&start=yes
{u'pr': u'S 1', u'lastStop': u'Wien Floridsdorf Bahnhof', u'trChg': False, u'rta': {u'status': u'Ausfall', u'dlm': u'', u'dlt': u''}, u'rt': {u'status': u'Ausfall', u'dld': u'', u'dlm': u'', u'dlt': u''}, u'tr': u'2', u'da': u'22.02.2018', u'ti': u'23:07', u'st': u'Wien Floridsdorf Bahnhof', u'id': u'470166811', u'ati': u'23:10'}
Traceback (most recent call last):
  File "/usr/bin/omegalines", line 264, in <module>
    sys.exit(main(sys.argv[1:]))
  File "/usr/bin/omegalines", line 259, in main
    run(**vars(args))
  File "/usr/bin/omegalines", line 229, in run
    oebb_departures.extend(request_oebb_departures(eva_id))
  File "/usr/bin/omegalines", line 157, in request_oebb_departures
    departure_data['rt']['dlt'],
  File "/usr/bin/omegalines", line 52, in parse_oebb_datetime
    dt.datetime.strptime(date_str, '%d.%m.%Y').date(),
  File "/usr/lib/python2.7/_strptime.py", line 332, in _strptime
    (data_string, format))
ValueError: time data '' does not match format '%d.%m.%Y'
Fabian Peter Hammerle 7 éve
szülő
commit
e60d9b10d3
1 módosított fájl, 16 hozzáadás és 10 törlés
  1. 16 10
      scripts/omegalines

+ 16 - 10
scripts/omegalines

@@ -7,6 +7,7 @@ import dateutil.parser
 import dateutil.tz
 import json
 import os
+import sys
 import time
 import urllib2
 import yaml
@@ -144,24 +145,29 @@ def request_oebb_departures(eva_id):
         da: planned departure date (u'22.02.2018')
         ti: planned departure time (u'09:42')
         rt: dict if delayed, otherwise False
+        rt.status (e.g. u'Ausfall)
         rt.dld: estimated departure date
         rt.dlt: estimated departure time
         """
         if departure_data['rt']:
-            predicted_time = parse_oebb_datetime(
-                departure_data['rt']['dld'],
-                departure_data['rt']['dlt'],
-            )
-        else:
+            if departure_data['rt']['dlt'] == '':  # canceled?
+                predicted_time = None
+            else:  # delayed
+                predicted_time = parse_oebb_datetime(
+                    departure_data['rt']['dld'],
+                    departure_data['rt']['dlt'],
+                )
+        else:  # on time
             predicted_time = parse_oebb_datetime(
                 departure_data['da'],
                 departure_data['ti'],
             )
-        departures.append(Departure(
-            line=departure_data['pr'],
-            towards=html_parser.unescape(departure_data['lastStop']),
-            predicted_time=predicted_time,
-        ))
+        if predicted_time:
+            departures.append(Departure(
+                line=departure_data['pr'],
+                towards=html_parser.unescape(departure_data['lastStop']),
+                predicted_time=predicted_time,
+            ))
     return departures