Nonlinear Performance Magnification
    Wondering what’s next for npm?Check out our public roadmap! »

    vbb-hafas

    7.0.3 • Public • Published

    vbb-hafas

    A client for the Berlin & Brandenburg public transport service (VBB). It acts as a consistent and straightforward interface on top of a verbose API.

    This project is actually a thin wrapper around hafas-client@5. Its docs document the API in general.

    Note: You may not want to query the VBB API by yourself. vbb-client is an API-compatible client for vbb-rest, my wrapper API. It also works in the browser.

    vbb-rest architecture diagram

    npm version build status ISC-licensed minimum Node.js version chat on gitter support Jannis via GitHub Sponsors

    Installing

    npm install vbb-hafas

    API

    Check the docs for hafas-client as well as its VBB-specific customisations.

    Usage

    const createHafas = require('vbb-hafas')
     
    const hafas = createHafas('my-awesome-program')

    As an example, we will search for a journey from Berlin Hauptbahnhof to Berlin Charlottenburg. To get the station IDs, use vbb-stations.

    hafas.journeys('900000003201', '900000024101', {results: 1})
    .then((journeys) => console.log(journeys[0]))
    .catch(console.error)

    The output will be an array of journey objects in the Friendly Public Transport Format 1.2.1 format:

    [ {
        legs: [ {
            tripId: '1|50420|0|86|25122017',
            direction: 'Brandenburg, Hbf',
            line: {
                type: 'line',
                id: '10',
                name: 'RE1',
                public: true,
                mode: 'train',
                product: 'regional',
                symbol: 'RE',
                nr: 1,
                metro: false,
                express: true,
                night: false,
                class: 64,
                productCode: 6,
                operator: {
                    type: 'operator',
                    id: 'db-regio-ag',
                    name: 'DB Regio AG'
                }
            },
     
            origin: {
                type: 'station',
                id: '900000003201',
                name: 'S+U Berlin Hauptbahnhof',
                location: {
                    type: 'location',
                    latitude: 52.52585,
                    longitude: 13.368928
                },
                products: {
                    suburban: true,
                    subway: true,
                    tram: true,
                    bus: true,
                    ferry: false,
                    express: true,
                    regional: true
                }
            },
            departure: '2017-12-26T00:41:00.000+01:00',
            plannedDeparture: '2017-12-26T00:41:00.000+01:00',
            departureDelay: 0,
            departurePlatform: '14',
            plannedDeparturePlatform: '13',
     
            destination: {
                type: 'station',
                id: '900000024101',
                name: 'S Charlottenburg',
                location: {
                    type: 'location',
                    latitude: 52.504806,
                    longitude: 13.303846
                },
                products: {
                    suburban: true,
                    subway: false,
                    tram: false,
                    bus: true,
                    ferry: false,
                    express: false,
                    regional: true
                }
            },
            arrival: '2017-12-26T00:50:00.000+01:00',
            plannedArrival: '2017-12-26T00:50:00.000+01:00',
            arrivalDelay: null,
            arrivalPlatform: '4',
            plannedArrivalPlatform: '4'
        } ],
     
        // all these are from the first leg
        origin: {
            type: 'station',
            id: '900000003201',
            name: 'S+U Berlin Hauptbahnhof'
            // …
        },
        departure: '2017-12-26T00:41:00.000+01:00',
        plannedDeparture: '2017-12-26T00:41:00.000+01:00',
        departureDelay: 0,
        departurePlatform: '14',
        plannedDeparturePlatform: '13',
     
        // all these are from the last leg
        destination: {
            type: 'station',
            id: '900000024101',
            name: 'S Charlottenburg'
            // …
        },
        arrival: '2017-12-26T00:50:00.000+01:00',
        plannedArrival: '2017-12-26T00:50:00.000+01:00',
        arrivalDelay: null,
        arrivalPlatform: '4',
        plannedArrivalPlatform: '4'
     
        // …
    } ]

    Transfer information for journeys

    vbb-hafas will try to add transfer information from vbb-change-positions if you pass transferInfo: true as an option.

    If it identifies a known transfer, the previous leg will have a bestArrivalPosition and the next leg will have a departurePosition, indicating the optimal transfer between both platforms. Check out the markup in vbb-change-positions for more details.

    Related

    Check hafas-client's related libs.

    Contributing

    If you have a question, found a bug or want to propose a feature, have a look at the issues page.

    Install

    npm i vbb-hafas

    DownloadsWeekly Downloads

    16

    Version

    7.0.3

    License

    ISC

    Unpacked Size

    15.2 kB

    Total Files

    9

    Last publish

    Collaborators

    • avatar