MultiModal and NationalRail UK64

Thanks for the latest update for the London River services :slight_smile: Much appreciated. There used to be an app called Fahrplan that showed train info for Germany and Switzerland and I was wondering @cypherpunks if you’re bored and have nothing better to do, if it is possible to integrate the Swiss trains ( in MultiModal since Germany is already there :slight_smile: Now that the travel slowly resumes(?) I will be travelling back to Switzerland so it would be great to be able to use MultiModal there. I believe Swiss users will also enjoy the app too! Also, do you have a donation page/link somewhere?


I’m a bit hesitant to ask since the German rail stuff is just ‘gravy’, but I noticed that Regional Rail and Commuter trains like S-Bahn (Berlin) are listed separately. Is there a reason for that? Means you can’t see the optimal timing if, like me, you switch on the journey from S-Bahn to Regional DB (well, I switch S-Bahn, Regio, U-bahn). But it’s great that it works at all :slight_smile:



Yes, the reason is simply based on the fact that, for the DB API, both are different stations with their own station IDs. This is most likely, in turn, based on the way how the S-Bahn operates in Berlin, means using their own right of way instead of e.g. sharing tracks with the DB. This is handled differently in places like e.g. Cologne in which both modes of transport are displayed as using the same station.

Combining them inside MM would always require two API calls and also some logic that determines which stations to combine into one, with the later part being supposedly much more challenging.

Ok, got it. Thanks for the great app!

1 Like

Fahrplan does work on 64bit aarch and is available on chum and on openrepos
Fahrplan | — Community Repository System

Works for Germany, in any case.

1 Like

Thank you.
Interestingly the VBB API seems to be handling things differently e.g. combining modes in places like e.g. U Eberswalder Str. showing U-bahn and tram services in one call.

type stop
id 900000110006
name U Eberswalder Str.
type location
id 900110006
latitude 52.541024
longitude 13.412157
suburban false
subway true
tram true
bus true
ferry false
express false
regional false

Ah, that’s my neighbourhood. It probably get’s you Routes from Strausberg to Berlin Ostbahnhof with both normal trains and commuter trains. Where are the api end points?

MultiModal currently uses the DB API directly:

(forum does not allow me to post the link for the VBB api for some reason, or at least not in one post)

I’m playing around with the aggregator service for VBB:

Thank you, that is true that I can still use Fahrplan but I would prefer to use MultiModal for the overall UX and active maintenance. The reference to the Fahrplan was more as a pointer that sbb data is available and there was even an app that was able to connect at sbb’s backend and use the data :slight_smile:

Seems not to be working with the endpoint, though. Maybe my Fahrplan installation is messed up or something.

Yeap, correct, just tried to get some trains from Zurich HB to Baden, I got “unexpected character”.

Ok, thought you might have overlooked it. I’m trying to collect all information of this sort and contact all the authors. It’s a lot of information. I also have only ever used it in Germany!

Cool, with api documentation. Are you doing the api processing in javascript or in C?

The processing is largely done in Python plus some Java Script where it’s necessary for QML

1 Like

I’ll fork and see if I have two bits that are useful. I like working with rest/json. and websockets. It’s a sickness. Ah, well, assuming it’s available :slight_smile: I must be mad.

Well, some design decisions in MultiModal may turn out not to be exactly optimal for incorporating additional services. It grew out of a project I started some 6 years ago in a completely different language and supporting only one (Transport for London) endpoint. At some point changes to SFOS meant it would not compile any more so I’ve decided to quickly rewrite the relevant parts in Python without putting much thought into updating internal structures - something that I should have known would almost guaranteed come to bite me in the end. :grinning_face_with_smiling_eyes:

1 Like

Ah, I’m refactoring code I took over. 7,000 line QML files. But at least the python is coherent :wink: I have to admit, the rpm spec file logic throws me more than anything else :wink:

EDIT: When I built my German Weather app thingy I spent a lot of time looking at java and python apis, lucked out and found a great wrapper api (rest/json), implemented the app in pure QML/JS and THEN after I was finished, about a month thereafter, found out that the DWD DID have a rest api that spat out JSON. I felt somewhat egg on my face, but no one has mentioned it yet :slight_smile: