omegalines 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env python
  2. wiener_linien_api_key = "insert here"
  3. import datetime
  4. import dateutil.parser
  5. import json
  6. import time
  7. import urllib2
  8. from OmegaExpansion import oledExp
  9. assert not oledExp.driverInit()
  10. assert not oledExp.setDisplayPower(1)
  11. while True:
  12. oledExp.clear()
  13. oledExp.setCursor(0, 0)
  14. oledExp.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
  15. req = urllib2.Request(
  16. "https://www.wienerlinien.at/ogd_realtime/monitor?sender=%s&rbl=4648" % wiener_linien_api_key)
  17. req.add_header("Accept", "application/json")
  18. req.add_header("Content-Type", "application/json")
  19. try:
  20. resp = json.loads(urllib2.urlopen(req).read())
  21. except urllib2.HTTPError:
  22. resp = None
  23. if resp:
  24. # datetime.datetime.strptime:
  25. # ValueError: 'z' is a bad directive in format '%Y-%m-%dT%H:%M:%S.%f%z'
  26. server_time = dateutil.parser.parse(resp['message']['serverTime'])
  27. print(server_time)
  28. monitors = resp['data']['monitors']
  29. assert 1 == len(monitors)
  30. lines = monitors[0]['lines']
  31. assert 1 == len(lines)
  32. for line in lines:
  33. assert 1 == len(line['departures'])
  34. for i, departure in enumerate(line['departures']['departure']):
  35. if 'vehicle' in departure:
  36. line_name = departure['vehicle']['name']
  37. towards = departure['vehicle']['towards']
  38. else:
  39. line_name = line['name']
  40. towards = line['towards']
  41. print(line_name, towards, departure['departureTime'])
  42. oledExp.setCursor(1 + i, 0)
  43. oledExp.write("%s %s %s" %
  44. (departure['departureTime']['countdown'], line_name, towards))
  45. time.sleep(9.9)