GithubHelp home page GithubHelp logo

mansouryaacoubi / aseag-python Goto Github PK

View Code? Open in Web Editor NEW

This project forked from feuerrot/aseag-python

0.0 2.0 0.0 38 KB

Das sollte mal zu einer vernünftigen API-Implementation werden, ist derzeit aber einfach nur ein Client

License: Other

Python 100.00%

aseag-python's Introduction

Aseag, Python?

Die ASEAG bietet für Smartphones eine Anwendung an, die auf eine API zugreift, die Echtzeitdaten liefert. Da man das natürlich auch gerne in eigenen Anwendungen nutzen will, um Dinge™ anzuzeigen - ein eigener Abfahrtsmonitor wird so z.B. möglich.

Technische Details

Allgemein

http://ivu.aseag.de/interfaces/ura/ ist die Basis, unter der dann alle Endpunkte erreichbar sind. Es scheint so, als wären dort dann zwei generelle Typen unterscheidbar.

{instant,stream}_V{1,2}

Diese vier Endpunkte geben die aktuellen Informationen aus (instant) bzw. streamen sie (stream). Wo genau der Unterschied zwischen _V1 und _V2 ist, ist nicht bekannt. Transport for London hat eine API-Dokumentation, die ganz gut die Verwendung beschreibt.

Die Endpunkte eignen sich wahrscheinlich für Echtzeitdaten für Haltestellen und einzelne Busläufe.

{location,journey,journeyUpdate}

Diese drei Endpunkte geben jeweils nicht-kaputtes JSON aus (yay), aus denen man insbesondere recht einfach die Bedeutung von Werten rauslesen kann und dienen dazu, Haltestellen zu finden (location), Routing zu planen (journey) und Informationen zum Routing aktuell zu halten (journeyUpdate).

location?searchString=NAME findet Haltestellen mit passendem Name. Der Parameter maxResults kann dazu verwendet werden, das ganze weiter einzuschränken oder auch in Kombination mit * als Name, um alle Haltestellen auszugeben. Der Defaultwert scheint 10 zu sein. Der Parameter searchTypes kennt mindestens den Wert STOPPOINT, was auch der Defaultwert ist.

journey?startStopId=A&endStopId=B&departureTime=C gibt Routinginformationen aus. Die HaltestellenIDs A und B ergeben sich aus dem location-Endpunkt, departureTime ist ein Unix Timestamp in Millisekunden. Anstatt departureTime ist auch die Angabe von arrivalTime möglich(?).

journeyUpdate tut komische Dinge mit einem Parameter, der aus journey rausfällt und weiteren Parametern. Keine Ahnung, hab ich bisher noch nicht verwendet.

Benutzung

./main [StopID] [BusIDs] macht Echtzeitinformationen zur Haltestelle. Als StopID funktionieren sowohl Haltestellennamen als auch die numerischen IDs.

./main [StartID] [StopID] macht Routing vom Start zum Stop. Für die IDs gilt das gleiche wie bei den Echtzeitinformationen.

Todo

Der Code ist scheiße. Über die Ausgabe von instant_V{1,2} kann man wahrscheinlich deutlich schöner iterieren und ich habe beim Einbauen des Routing viel Code aus der vorherigen Version übernommen. Man müsste also den ganzen Code mal wegwerfen und alles sauber neu schreiben - das wird in $(date +%Y) natürlich nicht passieren. Was ggf. in $(date +%Y) passiert:

  • Weniger magisches Argumentparsing
  • Sinnvolleres Iterieren über die Ausgabe von instant_V{1,2}
  • Nutzung von stream_V{1,2} für eigene Echtzeitanzeigen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.