Browse Source

oebb: use estimated time instead of planned if delayed

Fabian Peter Hammerle 7 năm trước cách đây
mục cha
commit
8ec0691523
1 tập tin đã thay đổi với 30 bổ sung8 xóa
  1. 30 8
      scripts/omegalines

+ 30 - 8
scripts/omegalines

@@ -46,6 +46,16 @@ assert "-1:20" == format_timedelta(datetime.timedelta(seconds=-80))
 assert "-2:00" == format_timedelta(datetime.timedelta(seconds=-120))
 
 
+def parse_oebb_datetime(date_str, time_str):
+    return datetime.datetime.combine(
+        datetime.datetime.strptime(date_str, '%d.%m.%Y').date(),
+        datetime.datetime.strptime(time_str, '%H:%M').time().replace(second=0),
+    ).replace(tzinfo=OEBB_TIMEZONE)
+
+assert '2018-02-22T09:46:00+01:00' == \
+    parse_oebb_datetime(u'22.02.2018', u'09:46').isoformat()
+
+
 def oled_write_line(line):
     oledExp.write(
         line.ljust(OLED_DISPLAY_WIDTH, ' ')[:OLED_DISPLAY_WIDTH],
@@ -128,17 +138,29 @@ def request_oebb_departures(eva_id):
     )
     departures = []
     for departure_data in resp_data.get('journey', []):
-        departure_time = datetime.datetime.strptime(departure_data['ti'], '%H:%M').replace(
-            year=req_time.year,
-            month=req_time.month,
-            day=req_time.day,
-            second=0,
-            tzinfo=OEBB_TIMEZONE,
-        )
+        """
+        pr: line (u'R 2323')
+        lastStop (u'Wr.Neustadt Hbf)
+        da: planned departure date (u'22.02.2018')
+        ti: planned departure time (u'09:42')
+        rt: dict if delayed, otherwise False
+        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:
+            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=departure_time,
+            predicted_time=predicted_time,
         ))
     return departures