Giter Site home page Giter Site logo

public-transport / hafas-client Goto Github PK

View Code? Open in Web Editor NEW
258.0 15.0 52.0 20.87 MB

JavaScript client for HAFAS public transport APIs.

License: ISC License

JavaScript 99.33% Shell 0.67%
transport api transit public-transport vbb db hafas-client hafas

hafas-client's People

Contributors

1maxnet1 avatar bddq avatar d3d9 avatar dabund24 avatar debfx avatar derhuerst avatar fhueter avatar hannsadrian avatar jagdanju avatar jfilter avatar julianbei avatar juliuste avatar kristjanesperanto avatar lambooo avatar leona-ya avatar mtrnord avatar n0emis avatar noerw avatar nstrelow avatar paulsut avatar plsln avatar rbxd avatar roehrt avatar simlu avatar soerface avatar thezenti avatar traines-source avatar yu-re-ka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hafas-client's Issues

Unknown product express

Hi,

i want to filter now the products for the journey but received always the error "Can't connect to Hafas Error: unknown product express". It work only when i remove the line express.

This is my opt config:
{ suburban: true, subway: true, tram: true, bus: true, ferry: true, express: true, regional: true };

did someone make the same mistake in the search? Thanks for the answer.

parse remarks from remL

So far, I have these:

bf: 'barrier-free'
b_: 'likely not barrier-free'
rO: 'escalator' // todo: does this always mean "upwards"?
Au: 'elevator'
FB: 'bicycles conveyance'
FR: 'bicycles conveyance reservations'
EH: 'on-board access ramp'
RT: 'trip cancelled' // todo: does `RT` always mean cancelled?
BT: 'on-board bistro'
BR: 'on-board restaurant'
EV: 'replacement service'
KG: 'no food or beverages'
WV: 'WiFi available'
KL: 'air-conditioned'
SN: 'snacks available'
LS: 'on-board sockets'

refactor products/modes markup

The current markup is a mess, spread over two places and with lots of explicitly or implicitly redundant values.

Let's make a new one. It might look like this:

// products.js
module.exports = [
  {
    id: 'subway',
    mode: 'train',
    name: 'U-Bahn',
    short: 'U',
    bitmasks: [64, 128], // some endpoints assign several digits to one product
    default: true
  }
  // ...
]

rename location(id) to station(id)

Even though the underlying HAFAS command is called LocDetails, the VBB app only calls it for stations. Also, it fails with both POIs and addresses.

Information: Meaning of d.stbStop.dTimeR

I found the following TODO: https://github.com/derhuerst/hafas-client/blob/d72fdc80921ad3d1ec494d676fbbb2c0d879d47d/parse.js#L144

Not sure if this is still an issue, but anyway, here is a list of fields I've identified in a stationBoard response, journey responses are similar

Here is an example journeyList from a stationboard with clarifications, from what I learned:

{
      "jid": "1|593|7|80|9112017", < Journey Id, used to retrieve details from vehicle page >
      "date": "20171109", < Date of departure >
      "prodX": 0, < Line/Service number > 
      "dirTxt": "Ronse / Renaix", < Headsign of the vehicle / direction text >
      "status": "P", < Unknown, always P for stationboards. Maybe for PROGNOSED? >
      "isRchbl": true, < Unknown, always true for nmbs > 
      "isPartCncl": true, < Partially canceled train, means some stops ahead or earlier are canceled >
      "isCncl": true, < Completely canceled train, doesn't appear together with isPartCncl >
      "stbStop": {
          "locX": 0, < Location of this stop > 
          "idx": 7, < Id of this object? >
          "dCncl": true < Departure is canceled >
          "dProdX": 0, < Departure Line/Service number > 
          "dPlatfS": "4", < Scheduled departure platform>
          "dPlatfR": "3", < Realtime departure platform in case of platform change>
          "dTimeS": "160000", <Scheduled departure time>
          "dTimeR": "160000", < Realtime departure date>
          "dProgType": "PROGNOSED" <Departure prognose type>
       }
}

I came across following ProgType values: Scheduled, Reported, Prognosed, Calculated, Corrected, Partial_Failure_at_arr, Partial_failure_at_dep, canceled.
Partial failure indicates that the arrival or departure is canceled. Reported means the train left or arrived. This doesn't seem to be reliable on all endpoints however.

All values starting with lowercase d affect departures, all values starting with a affect arrivals. It seems they keep compatibility between the journey and stationboard data by using the same formats, which explains why they explicitly define the information as departure information.

R always indicates Realtime data (changes from the original plan), while S indicates a schedule. L at the end always indicates a List.

Our (iRail) implementation of Hafas parsing, in case it helps:
https://github.com/iRail/iRail/blob/master/api/data/NMBS/connections.php

You might know most (or all) of this information already, but I hope it can be a help. Feel free to ask if there are other fields you haven't figured out yet!

departures: expose arrivals, possibly rename the method

Right now, it's not possible to get arrivals, but they may differ significantly from the departure times.

@juliuste what do you think would be an intuitive method for getting both departures and arrivals (at once)? "station board", as used be HAFAS APIs doesn't seem to be very appropriate.

DB: trip is unreliable

For 8011160 (Berlin Hbf) to 8000309 (Regensburg Hbf), it reports an empty direction:

const berlinHbf = '8011160'
const regensburgHbf = '8000309'
client.journeys(berlinHbf, regensburgHbf, {results: 1, tickets: true})
.then(([journey]) => {
	const firstLeg = journey.legs[0]
	return client.journeyLeg(firstLeg.id, firstLeg.line.name)
})
.then((data) => {
	console.log(require('util').inspect(data, {depth: null}))
}, console.error)
node demo.js | grep direction
#   direction: null

Apparently for non-ICE journey legs, it fails completely. E.g. for 8011160 (Berlin Hbf) to 8010035 (Berlin Karlshorst):

{ Error: HCI Service: problems during service execution
    at request (/Users/j/web/hafas-client/lib/request.js:52:14)
    at Object.journeyLeg (/Users/j/web/hafas-client/index.js:286:10)
    at client.journeys.then (/Users/j/web/hafas-client/p/db/example.js:19:16)
    at process._tickCallback (internal/process/next_tick.js:178:7)
  isHafasError: true,
  request: 
   { lang: 'en',
     svcReqL: [ [Object] ],
     client: { id: 'DB', v: '16040000', type: 'IPH', name: 'DB Navigator' },
     ext: 'DB.R15.12.a',
     ver: '1.15',
     auth: { type: 'AID', aid: 'n91dB8Z77MLdoR0K' } },
  url: 'https://reiseauskunft.bahn.de/bin/mgate.exe?checksum=1f68d121702ff7ca65a4139a81ff8eaa',
  statusCode: 200,
  message: 'HCI Service: problems during service execution' }

INSA: radar – some stations have no coordinates

Some examples:

{
  lid: 'A=1@O=Magdeburg, Bodestr.@U=80@L=7511@',
  type: 'S',
  name: 'Magdeburg, Bodestr.',
  icoX: 2,
  extId: '7511',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Magdeburg, Blankenburger Str.@U=80@L=7513@',
  type: 'S',
  name: 'Magdeburg, Blankenburger Str.',
  icoX: 2,
  extId: '7513',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Magdeburg, Hansa-Park@U=80@L=7451@',
  type: 'S',
  name: 'Magdeburg, Hansa-Park',
  icoX: 2,
  extId: '7451',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Magdeburg, IKEA@U=80@L=7498@',
  type: 'S',
  name: 'Magdeburg, IKEA',
  icoX: 3,
  extId: '7498',
  state: 'F',
  pCls: 96
}
{
  lid: 'A=1@O=Sohlen, Unter der Wiesche@U=80@L=3005@',
  type: 'S',
  name: 'Sohlen, Unter der Wiesche',
  icoX: 2,
  extId: '3005',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Hohenwarsleben, Berliner Allee@U=80@L=1106@',
  type: 'S',
  name: 'Hohenwarsleben, Berliner Allee',
  icoX: 2,
  extId: '1106',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Irxleben, Rathaus Hohe Börde@U=80@L=22404@',
  type: 'S',
  name: 'Irxleben, Rathaus Hohe Börde',
  icoX: 2,
  extId: '22404',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Magdeburg, Maybachstr.@U=80@L=20221@',
  type: 'S',
  name: 'Magdeburg, Maybachstr.',
  icoX: 2,
  extId: '20221',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Magdeburg, Am Pfahlberg@U=80@L=10464@',
  type: 'S',
  name: 'Magdeburg, Am Pfahlberg',
  icoX: 2,
  extId: '10464',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Barleben, Rothenseer Str.@U=80@L=1111@',
  type: 'S',
  name: 'Barleben, Rothenseer Str.',
  icoX: 2,
  extId: '1111',
  state: 'F',
  pCls: 64
}
{
  lid: 'A=1@O=Magdeburg SKET Industriepark@U=80@L=8013485@',
  type: 'S',
  name: 'Magdeburg SKET Industriepark',
  icoX: 0,
  extId: '8013485',
  state: 'F',
  pCls: 88
}
{
  lid: 'A=1@O=Magdeburg, Am Katharinenturm@U=80@L=13519@',
  type: 'S',
  name: 'Magdeburg, Am Katharinenturm',
  icoX: 3,
  extId: '13519',
  state: 'F',
  pCls: 32
}
{
  lid: 'A=1@O=Magdeburg, Alter Markt@U=80@L=7333@',
  type: 'S',
  name: 'Magdeburg, Alter Markt',
  icoX: 3,
  extId: '7333',
  state: 'F',
  pCls: 96
}
{
  lid: 'A=1@O=Magdeburg, City Carré/Hauptbahnhof@U=80@L=3846@',
  type: 'S',
  name: 'Magdeburg, City Carré/Hauptbahnhof',
  icoX: 3,
  extId: '3846',
  state: 'F',
  pCls: 32
}

The requestes 3 examples for INSA

1. Requires at least changing once

Magdeburg, Hasselbachplatz (Sternstr.) (Tram/Bus) to Stendal via Dessau

2. No changing required

Magdeburg, Hasselbachplatz (Sternstr.) (Tram/Bus) to Magdeburg, Universität via Magdeburg, Breiter Weg

3. the same as 2.?

Undefined variable d

Hey @ALL,

where is the variable d defined? I received a undefined error on this line.

hafas-client/parse/stopover.js

The line:

const arr = profile.parseDateTime(profile, d.date, st.aTimeS)

Complete lines:

if (st.aCncl) { res.arrival = res.arrivalDelay = null const arr = profile.parseDateTime(profile, d.date, st.aTimeS) res.formerScheduledArrival = arr.toISO() } if (st.dCncl) { res.departure = res.departureDelay = null const arr = profile.parseDateTime(profile, d.date, st.dTimeS) res.formerScheduledDeparture = arr.toISO() }

"PARSE" Error when using with react-native

Hi i get following error when i use it with react native. This is only with client.journys(..). client.locations(..) works fine.

This error is only when i am not in dubugging mode. When i am in debugging mode it works.
This is my code:

const createClient = require('hafas-client')
const dbProfile = require('hafas-client/p/db')
const client = createClient(dbProfile)
const münchenHbf = {
  type: 'station',
  id: '008000261',
  name: 'München Hbf',
  locations: {
    type: 'location',
    latitude:48.140364,
    longitude:11.558735
  }
}

const münchenPassing = {
  type: 'station',
  id: '008004158',
  name: 'München-Pasing',
  locations: {
    type: 'location',
    latitude:48.150036,
    longitude:11.461624
  }
}
const opt = {
  //var date2 = new Date('2018-12-17T03:24:00');
	when: new Date('2018-05-29T06:40:00'),
	whenRepresents: 'departure', // use 'arrival' for journeys arriving before `when`
	//earlierThan: null, // ref to get journeys earlier than the last query
	//laterThan: null, // ref to get journeys later than the last query
	results: 5, // how many journeys?
	via: null, // let journeys pass this station
	passedStations: false, // return stations on the way?
	transfers: 5, // maximum of 5 transfers
	transferTime: 0, // minimum time for a single transfer in minutes
	accessibility: 'none', // 'none', 'partial' or 'complete'
	bike: false, // only bike-friendly journeys
	products: {
		// these entries may vary from profile to profile
		suburban: true,
		subway: true,
		tram: true,
		bus: true,
		ferry: true,
		//express: true,
		regional: true
	},
	tickets: false, // return tickets? only available with some profiles
	polylines: false // return a shape for each leg?
}
    client.journeys(münchenPassing, münchenHbf, opt)
    .then((arr)=>{
      console.log('===============arr=====================');
      console.log(arr);
      console.log('====================================');

    })
    .catch(console.error)


  }
PARSE
request
    request.js:54:13
more
    index.js:134:18
journeys
    index.js:168:14
componentDidMount
    App.js:130:20
proxiedComponentDidMount
    createPrototypeProxy.js:61:45
commitLifeCycles
    ReactNativeRenderer-dev.js:10627:12
commitAllLifeCycles
    ReactNativeRenderer-dev.js:12512:10
invokeGuardedCallback
    ReactNativeRenderer-dev.js:39:15
invokeGuardedCallback
    ReactNativeRenderer-dev.js:221:34
commitRoot
    ReactNativeRenderer-dev.js:12677:10
completeRoot
    ReactNativeRenderer-dev.js:13685:46
performWorkOnRoot
    ReactNativeRenderer-dev.js:13635:23
performWork
    ReactNativeRenderer-dev.js:13545:26
performSyncWork
    ReactNativeRenderer-dev.js:13506:16
requestWork
    ReactNativeRenderer-dev.js:13392:6
scheduleWorkImpl
    ReactNativeRenderer-dev.js:13259:24
scheduleWork
    ReactNativeRenderer-dev.js:13207:28
scheduleRootUpdate
    ReactNativeRenderer-dev.js:13930:17
_updateContainerAtExpirationTime
    ReactNativeRenderer-dev.js:13966:6
updateContainer
    ReactNativeRenderer-dev.js:13991:8
render
    ReactNativeRenderer-dev.js:14726:35
renderApplication
    renderApplication.js:49:21
run
    AppRegistry.js:102:10
runApplication
    AppRegistry.js:194:26
__callFunction
    MessageQueue.js:351:47
<unknown>
    MessageQueue.js:116:26
__guardSafe
    MessageQueue.js:314:6
callFunctionReturnFlushedQueue
    MessageQueue.js:115:17

not getting a journey when using `via` parameter in `vbb-rest`

Request

GET https://vbb.transport.rest/journeys?from=900000013102&to=900000009202&via=900000009102

Result

{
  "error": true,
  "msg": "VBB error: HCI Service: location missing or invalid"
}

Passed Parameters

Key Station ID Station Name
from 900000013102 Kottbusser Tor
to 900000009202 Osloer Straße
via 900000009102 Leopoldplatz

Expected Result

A Journey from Kottbusser Tor over Leopoldplatz to Osloer Straße

Example: Kottbusser Tor -> Hallesches Tor -> Leopoldplatz -> Osloer Straße

use it in react native, get error

Somebody has used in react native?
I get following error:

The development server returned response error code: 500

URL: http://localhost:8081/index.delta?platform=android&dev=true&minify=false&deltaBundleId=9083ef9957029468

Body:
{"originModulePath":"/home/t/ws/react/pendler/node_modules/hafas-client/lib/request.js","targetModuleName":"crypto","message":"Unable to resolve module `crypto` from `/home/t/ws/react/pendler/node_modules/hafas-client/lib/request.js`: Module `crypto` does not exist in the Haste module map\n\nThis might be related to https://github.com/facebook/react-native/issues/4968\nTo resolve try the following:\n  1. Clear watchman watches: `watchman watch-del-all`.\n  2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.\n  3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.  4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.","errors":[{"description":"Unable to resolve module `crypto` from `/home/t/ws/react/pendler/node_modules/hafas-client/lib/request.js`: Module `crypto` does not exist in the Haste module map\n\nThis might be related to https://github.com/facebook/react-native/issues/4968\nTo resolve try the following:\n  1. Clear watchman watches: `watchman watch-del-all`.\n  2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.\n  3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.  4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`."}],"name":"Error","stack":"Error: Unable to resolve module `crypto` from `/home/t/ws/react/pendler/node_modules/hafas-client/lib/request.js`: Module `crypto` does not exist in the Haste module map\n\nThis might be related to https://github.com/facebook/react-native/issues/4968\nTo resolve try the following:\n  1. Clear watchman watches: `watchman watch-del-all`.\n  2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.\n  3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.  4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.\n    at ModuleResolver.resolveDependency (/home/t/ws/react/pendler/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:161:1460)\n    at ResolutionRequest.resolveDependency (/home/t/ws/react/pendler/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:91:16)\n    at DependencyGraph.resolveDependency (/home/t/ws/react/pendler/node_modules/metro/src/node-haste/DependencyGraph.js:272:4579)\n    at dependencies.map.relativePath (/home/t/ws/react/pendler/node_modules/metro/src/DeltaBundler/traverseDependencies.js:376:19)\n    at Array.map (native)\n    at resolveDependencies (/home/t/ws/react/pendler/node_modules/metro/src/DeltaBundler/traverseDependencies.js:374:16)\n    at /home/t/ws/react/pendler/node_modules/metro/src/DeltaBundler/traverseDependencies.js:212:33\n    at Generator.next (<anonymous>)\n    at step (/home/t/ws/react/pendler/node_modules/metro/src/DeltaBundler/traverseDependencies.js:297:313)\n    at /home/t/ws/react/pendler/node_modules/metro/src/DeltaBundler/traverseDependencies.js:297:473"}
processBundleResult
    BundleDownloader.java:266
access$200
    BundleDownloader.java:35
onResponse
    BundleDownloader.java:153
execute
    RealCall.java:135
run
    NamedRunnable.java:32
runWorker
    ThreadPoolExecutor.java:1133
run
    ThreadPoolExecutor.java:607
run
    Thread.java:762

VBB: fix ticket information

cadd410 changed the endpoint. The new one returns sparse ticket info:

{
	name: 'Berlin Tarifgebiet A-B: Einzelfahrausweis – Regeltarif',
	price: 2.8,
	tariff: null,
	coverage: null
}

This might be fixed by migrating back to VBB again, with the 1.16 protocol. See #3

nah.sh: radar() randomly swallows station names

const createClient = require('hafas-client')
const nahshProfile = require('hafas-client/p/nahsh')
const {inspect} = require('util')

const client = createClient(nahshProfile)

client.radar(54.4, 10.0, 54.2, 10.2)
.then((data) => {
	console.log(inspect(data, {depth: null}))
})
.catch(console.error)
{
	direction: 'Kiel Bahnhofsvorplatz',
	trip: 31655,
	line: { /* … */ },
	location: { /* … */ },
	nextStops: [ {
		station: {
			type: 'station',
			id: '3490019',
			name: 'Hamburg Airport',
			location: { /* … */ }
		},
		departure: '2018-03-17T14:15:00.000+01:00',
		departureDelay: null,
		arrival: null,
		arrivalDelay: null
	}, {
		station: {
			type: 'station',
			id: '3435009',
			name: 'Neumünster Holstenhallen',
			location: { /* … */ }
		},
		departure: '2018-03-17T15:10:00.000+01:00',
		departureDelay: null,
		arrival: '2018-03-17T15:10:00.000+01:00',
		arrivalDelay: null
	}, {
		station: {
			type: 'station',
			id: '3440249',
			name: 'Kiel Bahnhofsvorplatz',
			location: { /* … */ }
		},
		departure: null,
		departureDelay: null,
		arrival: '2018-03-17T16:06:00.000+01:00',
		arrivalDelay: null
	}, {
		station: {
			type: 'station',
			id: '3440249',
			name: 'Kiel Bahnhofsvorplatz',
			location: { /* … */ }
		},
		departure: null,
		departureDelay: null,
		arrival: '2018-03-17T16:06:00.000+01:00',
		arrivalDelay: null
	} ],
	frames: [ {
		origin: {
			type: 'station',
			id: '3491419',
			name: undefined, // <----
			location: {
				type: 'location',
				latitude: 54.225557,
				longitude: 10.012491
			}
		},
		destination: {
			type: 'station',
			id: '3491418',
			name: undefined, // <----
			location: {
				type: 'location',
				latitude: 54.310173,
				longitude: 10.066642
			}
		},
		t: 0
	}, {
		origin: {
			type: 'station',
			id: '3491419',
			name: undefined, // <----
			location: {
				type: 'location',
				latitude: 54.225557,
				longitude: 10.012491
			}
		},
		destination: {
			type: 'station',
			id: '3491418',
			name: undefined, // <----
			location: {
				type: 'location',
				latitude: 54.310173,
				longitude: 10.066642
			}
		},
		t: 10000
	}, {
		origin: {
			type: 'station',
			id: '3491419',
			name: undefined, // <----
			location: {
				type: 'location',
				latitude: 54.225557,
				longitude: 10.012491
			}
		},
		destination: {
			type: 'station',
			id: '3491418',
			name: undefined,
			location: {
				type: 'location',
				latitude: 54.310173,
				longitude: 10.066642
			}
		},
		t: 20000
	}, {
		origin: {
			type: 'station',
			id: '3491419',
			name: undefined, // <----
			location: {
				type: 'location',
				latitude: 54.225557,
				longitude: 10.012491
			}
		},
		destination: {
			type: 'station',
			id: '3491418',
			name: undefined, // <----
			location: {
				type: 'location',
				latitude: 54.310173,
				longitude: 10.066642
			}
		},
		t: 30000
	} ]
}

parse all line names

So far, I've only parsed VBB lines.

In an effort to cover more than local Berlin & Brandenburg lines, I created a draft based on the wonderful public-transport-enabler. Buses are still missing.

Also, most of the tram and bus lines won't be globally unique. We'd have to think of a clever mechanism to partially override/extend the global operators list. Maybe it's just better to always let profiles parse their line names.

parse operators from opL

opL contains many different operators. Examples from VBB:

{
  "name": "ODEG Ostdeutsche Eisenbahn GmbH",
  "icoX": 2,
  "id": "ODEG Ostdeutsche Eisenbahn GmbH"
},
{
  "name": "S-Bahn Berlin GmbH",
  "icoX": 7,
  "id": "S-Bahn Berlin GmbH"
},
{
  "name": "DB Regio AG",
  "icoX": 10,
  "id": "DB Regio AG"
},
{
  "name": "Berliner Verkehrsbetriebe",
  "icoX": 1,
  "id": "Berliner Verkehrsbetriebe"
}

Planning support of non-JSON endpoint?

First of all, thank you very much for your work on this project which I consider very useful.

I wanted to add support for the saarfahrplan.de-API which also uses HAFAS, but it turns out the app isn't using the mgate.exe endpoint, but the (older?) query.exe one which does not return pretty JSON data, but gzipped hexadecimal files. I've recorded some requests, you can find them here.

I've read the following in your docs:

Note: hafas-client for now only supports the interface providing JSON (generated from XML), which is being used by the corresponding iOS/Android apps. It supports neither the JSONP, nor the XML, nor the HTML interface. If the endpoint does not end in mgate.exe, it mostly likely won't work.

Are there any plans to support other endpoints within this project? I would like to contribute on the integration!

station identifiers: find out what the `U` parameter stands for

A=2@O=Sylt - Tinnum, Syltshuttle Ankunft@X=8314051@Y=54905780@u=66@U=94@L=981243564@p=1527064139@
A=2@O=Sylt - Tinnum, Syltshuttle Ankunft@X=8314051@Y=54905780@u=66@U=95@L=981243564@p=1527064139@

The only difference is U=94 vs U=95. What does it mean?

Failed to load error on InsaProfile

Hey Guys,

i´am getting the following error with the InsaProfile:

Failed to load https://reiseauskunft.insa.de/bin/mgate.exe?: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.

Is there something i can do, to fix this issue?

Greetings Daniel

VBB: API has no track information for U-Bahn journeys

Although U-Bahn stations in Berlin don't have directly visible track numbers, it would be helpful to get them from the API, in a handful of situations:

  • should station maps ever become available, the track nr would definitely help
  • to let people make estimations on how far two tracks are apart

For S-Bahn trains, track info is available.

Apple Maps already has information at with stop to enter/exit the train:

apple-maps-stops

fully parse journey & journey leg frequencies

hafas-client already parses the frequency of alternatives of a journey leg (if returned by HAFAS) and exposes them as journeyLeg.cycle.min & journeyLeg.cycle.max. If HAFAS has also returned a list of alternative trips via .freq.jnyL, it will parse & expose them via journeyLeg.alternatives.

Missing pieces not parsed yet:

  • journey .freq
    • Is it the frequency of the first leg?
    • Is it the lowest frequency of all legs?
    • Is it the frequency of the journey, taking transfer/change times into account?
    • Does it take alternative trips for each leg into account?
  • .freq.numC
    • What does it mean? – minC is the minimum frequency for the coming time, maxC the max. freq.

Some example data (just search for "freq"):

parse time-aware polylines

The radar method returns data that apps use to move a vehicle on a map. It looks like this:

{
	delta: true,
	dim: 2,
	crdEncYX: 'kbq_IkkzpA??????',
	crdEncZ: '',
	crdEncS: 'NNNN'
}

I'm pretty sure it's either just a polyline or a time-aware/time-based polyline.

Some JS libraries that may use the same encoding:

VBB: direction field has slightly different station names

The station from the VBB API:

{
	"type": "station",
	"id": "900000100038",
	"name": "Am Kupfergraben",
	"location": {
		"type": "location",
		"latitude": 52.519414,
		"longitude": 13.395393
	},
	"products": {
		"suburban": false,
		"subway": false,
		"tram": true,
		"bus": true,
		"ferry": false,
		"express": false,
		"regional": false
	}
}

Trips of the tram line 12 have the direction Mitte, Am Kupfergraben however:

{
	journeyId: '1|49718|11|86|24012018',
	station: {
		type: 'station',
		id: '900000110502',
		name: 'Raumerstr.',
		location: { /* … */ },
		products: { /* … */ }
	},
	when: '2018-01-24T09:00:00.000+01:00',
	direction: 'Mitte, Am Kupfergraben',
	line: {
		type: 'line',
		id: '27',
		name: '12',
		public: true,
		class: 4,
		productCode: 2,
		operator: { /* … */ },
		product: 'tram',
		mode: 'train',
		symbol: null,
		nr: null,
		metro: false,
		express: false,
		night: false
	},
	remarks: [ /* … */ ],
	trip: 49718,
	delay: null
}

VBB: parse prodCtx.admin

prodL[].prodCtx.admin seems to be similar to the operator. I found the following values so far:

800154
800158
800161
BEHDT-
BRB---
BRT---
BVB--- # afaik BVG buses
BVT--- # afaik BVG trams
BVU--- # afaik BVG U-Bahn trains
DBS--- # afaik S-Bahn Berlin
HVG---
N80---
ODEN__
ODRE2_ # ODEG?
ODRE4_ # ODEG?
RPM---
SEV--- # rail replacement service a.k.a. SchienenErsatzVerkehr ?
VIB---
VIT---
VTF---

Change timestamp of journey

I want to change the timestamp of a journey using the opt 'when'. I guess its UNIX timestamp format, but I only got an error massage back when I enter e.g. when: 1526821200. What is the correct way to change the departure time of a journey?
Thanks!

parse more BVG remarks

{
  "common": {
    "locL": [
      {
        "lid": "A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@U=104@L=900981505@",
        "type": "P",
        "name": "Berlin, Tempelhofer Park Eingang Oderstr.",
        "icoX": 1,
        "extId": "900981505",
        "state": "F",
        "crd": {
          "x": 13418720,
          "y": 52476688,
          "type": "WGS84"
        },
        "msgL": [
          {
            "type": "REM",
            "remX": 0,
            "tagL": [
              "RES_LOC"
            ]
          },
          {
            "type": "REM",
            "remX": 1,
            "tagL": [
              "RES_LOC"
            ]
          },
          {
            "type": "REM",
            "remX": 2,
            "tagL": [
              "RES_LOC"
            ]
          }
        ]
      },
      {
        "lid": "A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@l=@X=13384947@Y=52476283@u=0@U=103@L=770013812@",
        "type": "A",
        "name": "12101 Berlin-Tempelhof, Peter-Str.r-Weg 1",
        "icoX": 2,
        "extId": "770013812",
        "state": "F",
        "crd": {
          "x": 13384947,
          "y": 52476283,
          "type": "WGS84"
        },
        "dist": 0
      },
      {
        "lid": "A=1@O=Sommerbad Neukölln (Berlin)@X=13415951@Y=52480580@U=86@L=900079101@",
        "type": "S",
        "name": "Sommerbad Neukölln (Berlin)",
        "icoX": 3,
        "extId": "900079101",
        "state": "F",
        "crd": {
          "x": 13415951,
          "y": 52480580,
          "type": "WGS84"
        },
        "pCls": 8,
        "msgL": [
          {
            "type": "REM",
            "remX": 3,
            "tagL": [
              "RES_LOC"
            ]
          }
        ]
      },
      {
        "lid": "A=1@O=U Platz der Luftbrücke (Berlin)@X=13386349@Y=52484976@U=86@L=900017102@",
        "type": "S",
        "name": "U Platz der Luftbrücke (Berlin)",
        "icoX": 7,
        "extId": "900017102",
        "state": "F",
        "crd": {
          "x": 13386349,
          "y": 52484976,
          "type": "WGS84"
        },
        "pCls": 10,
        "msgL": [
          {
            "type": "REM",
            "remX": 4,
            "tagL": [
              "RES_LOC"
            ]
          },
          {
            "type": "REM",
            "remX": 3,
            "tagL": [
              "RES_LOC"
            ]
          }
        ]
      },
      {
        "lid": "A=1@O=U Paradestr. (Berlin)@X=13386727@Y=52478144@U=86@L=900068101@",
        "type": "S",
        "name": "U Paradestr. (Berlin)",
        "icoX": 7,
        "extId": "900068101",
        "state": "F",
        "crd": {
          "x": 13386727,
          "y": 52478144,
          "type": "WGS84"
        },
        "pCls": 10,
        "msgL": [
          {
            "type": "REM",
            "remX": 6,
            "tagL": [
              "RES_LOC"
            ]
          },
          {
            "type": "REM",
            "remX": 7,
            "tagL": [
              "RES_LOC"
            ]
          },
          {
            "type": "REM",
            "remX": 3,
            "tagL": [
              "RES_LOC"
            ]
          }
        ]
      },
      {
        "lid": "A=1@O=Friedhöfe Columbiadamm (Berlin)@X=13407906@Y=52482207@U=86@L=900079151@",
        "type": "S",
        "name": "Friedhöfe Columbiadamm (Berlin)",
        "icoX": 3,
        "extId": "900079151",
        "state": "F",
        "crd": {
          "x": 13407906,
          "y": 52482207,
          "type": "WGS84"
        },
        "pCls": 8,
        "msgL": [
          {
            "type": "REM",
            "remX": 3,
            "tagL": [
              "RES_LOC"
            ]
          }
        ]
      },
      {
        "lid": "A=1@O=Golßener Str. (Berlin)@X=13400121@Y=52483745@U=86@L=900069151@",
        "type": "S",
        "name": "Golßener Str. (Berlin)",
        "icoX": 3,
        "extId": "900069151",
        "state": "F",
        "crd": {
          "x": 13400121,
          "y": 52483745,
          "type": "WGS84"
        },
        "pCls": 8,
        "msgL": [
          {
            "type": "REM",
            "remX": 3,
            "tagL": [
              "RES_LOC"
            ]
          }
        ]
      },
      {
        "lid": "A=1@O=Columbiadamm/Friesenstr. (Berlin)@X=13394476@Y=52484122@U=86@L=900069101@",
        "type": "S",
        "name": "Columbiadamm/Friesenstr. (Berlin)",
        "icoX": 3,
        "extId": "900069101",
        "state": "F",
        "crd": {
          "x": 13394476,
          "y": 52484122,
          "type": "WGS84"
        },
        "pCls": 8,
        "msgL": [
          {
            "type": "REM",
            "remX": 3,
            "tagL": [
              "RES_LOC"
            ]
          }
        ]
      },
      {
        "lid": "A=1@O=Columbiadamm/Platz der Luftbrücke (Berlin)@X=13390008@Y=52484356@U=86@L=900017181@",
        "type": "S",
        "name": "Columbiadamm/Platz der Luftbrücke (Berlin)",
        "icoX": 3,
        "extId": "900017181",
        "state": "F",
        "crd": {
          "x": 13389028,
          "y": 52484518,
          "type": "WGS84"
        },
        "pCls": 8,
        "msgL": [
          {
            "type": "REM",
            "remX": 3,
            "tagL": [
              "RES_LOC"
            ]
          }
        ]
      }
    ],
    "prodL": [
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 0,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6679",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6679",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 0,
        "prodCtx": {
          "name": "      U6",
          "num": "11544",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 1,
        "prodCtx": {
          "name": "      U6",
          "num": "11544",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 0,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6723",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6723",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 0,
        "prodCtx": {
          "name": "      U6",
          "num": "11546",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 1,
        "prodCtx": {
          "name": "      U6",
          "num": "11546",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6715",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6680",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6728",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6670",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6714",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 0,
        "prodCtx": {
          "name": "      U6",
          "num": "11548",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 1,
        "prodCtx": {
          "name": "      U6",
          "num": "11548",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 0,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6715",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6673",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 0,
        "prodCtx": {
          "name": "      U6",
          "num": "11550",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 1,
        "prodCtx": {
          "name": "      U6",
          "num": "11550",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 0,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6680",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "104",
        "nameS": "104",
        "number": "104",
        "icoX": 5,
        "cls": 8,
        "oprX": 1,
        "prodCtx": {
          "name": "Bus 104 ",
          "num": "6717",
          "line": "104",
          "matchId": "104",
          "catOut": "Bus     ",
          "catOutS": "B",
          "catOutL": "Bus     ",
          "catIn": "B",
          "catCode": "3",
          "admin": "BVB---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 0,
        "prodCtx": {
          "name": "      U6",
          "num": "11552",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      },
      {
        "name": "U6",
        "nameS": "U6",
        "number": "U6",
        "icoX": 8,
        "cls": 2,
        "oprX": 1,
        "prodCtx": {
          "name": "      U6",
          "num": "11552",
          "line": "U6",
          "matchId": "U6",
          "catOut": "U       ",
          "catOutS": "U",
          "catOutL": "U       ",
          "catIn": "U",
          "catCode": "1",
          "admin": "BVU---"
        }
      }
    ],
    "polyL": [],
    "layerL": [],
    "crdSysL": [],
    "opL": [
      {
        "name": "Berliner Verkehrsbetriebe",
        "icoX": 6
      },
      {
        "name": "Berliner Verkehrsbetriebe",
        "icoX": 6,
        "id": "Berliner Verkehrsbetriebe"
      }
    ],
    "remL": [
      {
        "type": "A",
        "code": "B1",
        "prio": 300,
        "icoX": 0,
        "txtN": "$IUR"
      },
      {
        "type": "A",
        "code": "B2",
        "prio": 300,
        "icoX": 0,
        "txtN": "$IAD"
      },
      {
        "type": "A",
        "code": "P0",
        "prio": 920,
        "icoX": 0,
        "txtN": "P0 (POI-Kategorie Sehenswertes: Sehenswertes, Ausflugsziele)"
      },
      {
        "type": "A",
        "code": "IS",
        "prio": 999,
        "icoX": 0,
        "txtN": "Responsible DINO stop"
      },
      {
        "type": "A",
        "code": "FT",
        "prio": 300,
        "icoX": 0,
        "txtN": "escalator"
      },
      {
        "type": "A",
        "code": "bf",
        "prio": 2,
        "icoX": 0,
        "txtN": "barrier-free"
      },
      {
        "type": "A",
        "code": "AT",
        "prio": 300,
        "icoX": 0,
        "txtN": "Aufzug"
      },
      {
        "type": "A",
        "code": "BL",
        "prio": 300,
        "icoX": 0,
        "txtN": "Blindenleitstreifen"
      },
      {
        "type": "A",
        "code": "FB",
        "prio": 350,
        "icoX": 0,
        "txtN": "Bicycle conveyance"
      }
    ],
    "icoL": [
      {
        "res": "INFO"
      },
      {
        "res": "POI"
      },
      {
        "res": "ADR"
      },
      {
        "res": "B",
        "fg": {
          "r": 255,
          "g": 255,
          "b": 255,
          "a": 255
        },
        "bg": {
          "r": 170,
          "g": 85,
          "b": 153,
          "a": 255
        }
      },
      {
        "res": "WALK"
      },
      {
        "res": "B"
      },
      {
        "res": "BVG",
        "txt": "Berliner Verkehrsbetriebe"
      },
      {
        "res": "U",
        "fg": {
          "r": 255,
          "g": 255,
          "b": 255,
          "a": 255
        },
        "bg": {
          "r": 0,
          "g": 51,
          "b": 153,
          "a": 255
        }
      },
      {
        "res": "U"
      }
    ]
  },
  "outConL": [
    {
      "cid": "C-0",
      "date": "20181026",
      "dur": "002500",
      "chg": 1,
      "sDays": {
        "sDaysR": "not every day",
        "sDaysI": "26. Oct until 2. Nov 2018 Mo - Fr",
        "sDaysB": "7CF80000000000"
      },
      "dep": {
        "locX": 0,
        "dInR": true,
        "dTimeS": "173300",
        "type": "N"
      },
      "arr": {
        "locX": 1,
        "aOutR": true,
        "aTimeS": "175800",
        "type": "N"
      },
      "secL": [
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 0,
            "dInR": true,
            "dTimeS": "173300",
            "type": "N"
          },
          "arr": {
            "locX": 2,
            "aOutR": true,
            "aTimeS": "174200",
            "type": "N"
          },
          "gis": {
            "dist": 564,
            "durS": "000900",
            "ctx": "G|1|G@F|A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@U=104@L=900981505@|A=1@O=Sommerbad Neukölln (Berlin)@X=13415951@Y=52480580@U=86@L=900079101@|26102018|173300|174200|bf|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        },
        {
          "type": "JNY",
          "icoX": 5,
          "dep": {
            "locX": 2,
            "idx": 17,
            "dProdX": 0,
            "dInR": true,
            "dTimeS": "174200",
            "dTimeR": "174000",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 3,
            "idx": 22,
            "aOutR": true,
            "aTimeS": "174700",
            "aTimeR": "174500",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|4885|0|86|26102018",
            "prodX": 1,
            "dirTxt": "Neu-Westend, Brixplatz",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 9,
              "maxC": 10,
              "numC": 13
            },
            "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261742$201810261747$Bus 104 $$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 2,
                "tLocX": 3,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000300"
        },
        {
          "type": "JNY",
          "icoX": 8,
          "dep": {
            "locX": 3,
            "idx": 21,
            "dProdX": 2,
            "dInR": true,
            "dTimeS": "175100",
            "dTimeR": "175100",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 4,
            "idx": 22,
            "aOutR": true,
            "aTimeS": "175200",
            "aTimeR": "175200",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|19014|1|86|26102018",
            "prodX": 3,
            "dirTxt": "U Alt-Mariendorf (Berlin)",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 5,
              "maxC": 5,
              "numC": 25
            },
            "ctxRecon": "T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261751$201810261752$      U6$$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              },
              {
                "type": "REM",
                "remX": 8,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000600"
        },
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 4,
            "dInR": true,
            "dTimeS": "175200",
            "type": "N"
          },
          "arr": {
            "locX": 1,
            "aOutR": true,
            "aTimeS": "175800",
            "type": "N"
          },
          "gis": {
            "dist": 332,
            "durS": "000600",
            "ctx": "G|1|G@F|A=1@O=U Paradestr. (Berlin)@X=13386727@Y=52478144@U=86@L=900068101@|A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@l=@X=13384947@Y=52476283@u=0@U=103@L=770013812@|26102018|175200|175800|fb|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        }
      ],
      "ctxRecon": "G@F$A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@L=900981505@a=128@$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$201810261733$201810261742$$$1$§T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261742$201810261747$Bus 104 $$1$§T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261751$201810261752$      U6$$1$§G@F$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@X=13384947@Y=52476283@u=0@L=770013812@a=128@$201810261752$201810261758$$$1$",
      "freq": {
        "minC": 9
      },
      "conSubscr": "U",
      "cksum": "2f57e582_3"
    },
    {
      "cid": "C-1",
      "date": "20181026",
      "dur": "002500",
      "chg": 1,
      "sDays": {
        "sDaysR": "not every day",
        "sDaysI": "26. Oct until 2. Nov 2018 Mo - Fr",
        "sDaysB": "7CF80000000000"
      },
      "dep": {
        "locX": 0,
        "dInR": true,
        "dTimeS": "174300",
        "type": "N"
      },
      "arr": {
        "locX": 1,
        "aOutR": true,
        "aTimeS": "180800",
        "type": "N"
      },
      "secL": [
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 0,
            "dInR": true,
            "dTimeS": "174300",
            "type": "N"
          },
          "arr": {
            "locX": 2,
            "aOutR": true,
            "aTimeS": "175200",
            "type": "N"
          },
          "gis": {
            "dist": 564,
            "durS": "000900",
            "ctx": "G|1|G@F|A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@U=104@L=900981505@|A=1@O=Sommerbad Neukölln (Berlin)@X=13415951@Y=52480580@U=86@L=900079101@|26102018|174300|175200|bf|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        },
        {
          "type": "JNY",
          "icoX": 5,
          "dep": {
            "locX": 2,
            "idx": 13,
            "dProdX": 4,
            "dInR": true,
            "dTimeS": "175200",
            "dTimeR": "174600",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 3,
            "idx": 18,
            "aOutR": true,
            "aTimeS": "175700",
            "aTimeR": "175100",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|4925|7|86|26102018",
            "prodX": 5,
            "dirTxt": "U Berliner Str.",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 9,
              "maxC": 10,
              "numC": 13
            },
            "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261752$201810261757$Bus 104 $$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 2,
                "tLocX": 3,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000300"
        },
        {
          "type": "JNY",
          "icoX": 8,
          "dep": {
            "locX": 3,
            "idx": 21,
            "dProdX": 6,
            "dInR": true,
            "dTimeS": "180100",
            "dTimeR": "180100",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 4,
            "idx": 22,
            "aOutR": true,
            "aTimeS": "180200",
            "aTimeR": "180200",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|19012|8|86|26102018",
            "prodX": 7,
            "dirTxt": "U Alt-Mariendorf (Berlin)",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 5,
              "maxC": 5,
              "numC": 25
            },
            "ctxRecon": "T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261801$201810261802$      U6$$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              },
              {
                "type": "REM",
                "remX": 8,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000600"
        },
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 4,
            "dInR": true,
            "dTimeS": "180200",
            "type": "N"
          },
          "arr": {
            "locX": 1,
            "aOutR": true,
            "aTimeS": "180800",
            "type": "N"
          },
          "gis": {
            "dist": 332,
            "durS": "000600",
            "ctx": "G|1|G@F|A=1@O=U Paradestr. (Berlin)@X=13386727@Y=52478144@U=86@L=900068101@|A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@l=@X=13384947@Y=52476283@u=0@U=103@L=770013812@|26102018|180200|180800|fb|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        }
      ],
      "ctxRecon": "G@F$A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@L=900981505@a=128@$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$201810261743$201810261752$$$1$§T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261752$201810261757$Bus 104 $$1$§T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261801$201810261802$      U6$$1$§G@F$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@X=13384947@Y=52476283@u=0@L=770013812@a=128@$201810261802$201810261808$$$1$",
      "freq": {
        "minC": 9
      },
      "conSubscr": "U",
      "cksum": "79894c31_3"
    },
    {
      "cid": "C-2",
      "date": "20181026",
      "dur": "002500",
      "chg": 1,
      "sDays": {
        "sDaysR": "not every day",
        "sDaysI": "26. Oct until 2. Nov 2018 Mo - Fr",
        "sDaysB": "7CF80000000000"
      },
      "dep": {
        "locX": 0,
        "dInR": true,
        "dTimeS": "175300",
        "type": "N"
      },
      "arr": {
        "locX": 1,
        "aOutR": true,
        "aTimeS": "181800",
        "type": "N"
      },
      "secL": [
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 0,
            "dInR": true,
            "dTimeS": "175300",
            "type": "N"
          },
          "arr": {
            "locX": 2,
            "aOutR": true,
            "aTimeS": "180200",
            "type": "N"
          },
          "gis": {
            "dist": 564,
            "durS": "000900",
            "ctx": "G|1|G@F|A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@U=104@L=900981505@|A=1@O=Sommerbad Neukölln (Berlin)@X=13415951@Y=52480580@U=86@L=900079101@|26102018|175300|180200|bf|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        },
        {
          "type": "JNY",
          "icoX": 5,
          "dep": {
            "locX": 2,
            "idx": 17,
            "dProdX": 0,
            "dInR": true,
            "dTimeS": "180200",
            "dTimeR": "180200",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 3,
            "idx": 22,
            "aOutR": true,
            "aTimeS": "180700",
            "aTimeR": "180700",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|4885|1|86|26102018",
            "prodX": 1,
            "dirTxt": "Neu-Westend, Brixplatz",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 9,
              "maxC": 17,
              "numC": 13,
              "jnyL": [
                {
                  "jid": "1|4918|0|86|26102018",
                  "prodX": 8,
                  "dirTxt": "U Berliner Str.",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 13,
                      "dProdX": 8,
                      "dTimeS": "181100",
                      "dDirTxt": "U Berliner Str.",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 14,
                      "aProdX": 8,
                      "aTimeS": "181200",
                      "dProdX": 8,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 15,
                      "aProdX": 8,
                      "aTimeS": "181300",
                      "dProdX": 8,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 16,
                      "aProdX": 8,
                      "aTimeS": "181400",
                      "dProdX": 8,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 17,
                      "aProdX": 8,
                      "aTimeS": "181500",
                      "dProdX": 8,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 18,
                      "aProdX": 8,
                      "aTimeS": "181600",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261811$201810261816$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4886|0|86|26102018",
                  "prodX": 9,
                  "dirTxt": "Neu-Westend, Brixplatz",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 17,
                      "dProdX": 9,
                      "dTimeS": "182000",
                      "dDirTxt": "Neu-Westend, Brixplatz",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 18,
                      "aProdX": 9,
                      "aTimeS": "182100",
                      "dProdX": 9,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 19,
                      "aProdX": 9,
                      "aTimeS": "182200",
                      "dProdX": 9,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 20,
                      "aProdX": 9,
                      "aTimeS": "182300",
                      "dProdX": 9,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 21,
                      "aProdX": 9,
                      "aTimeS": "182400",
                      "dProdX": 9,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 22,
                      "aProdX": 9,
                      "aTimeS": "182500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261820$201810261825$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4930|0|86|26102018",
                  "prodX": 10,
                  "dirTxt": "U Berliner Str.",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 13,
                      "dProdX": 10,
                      "dTimeS": "183000",
                      "dDirTxt": "U Berliner Str.",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 14,
                      "aProdX": 10,
                      "aTimeS": "183100",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 15,
                      "aProdX": 10,
                      "aTimeS": "183200",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 16,
                      "aProdX": 10,
                      "aTimeS": "183300",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 17,
                      "aProdX": 10,
                      "aTimeS": "183400",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 18,
                      "aProdX": 10,
                      "aTimeS": "183500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261830$201810261835$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4876|0|86|26102018",
                  "prodX": 11,
                  "dirTxt": "Neu-Westend, Brixplatz",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 17,
                      "dProdX": 11,
                      "dTimeS": "184000",
                      "dDirTxt": "Neu-Westend, Brixplatz",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 18,
                      "aProdX": 11,
                      "aTimeS": "184100",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 19,
                      "aProdX": 11,
                      "aTimeS": "184200",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 20,
                      "aProdX": 11,
                      "aTimeS": "184300",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 21,
                      "aProdX": 11,
                      "aTimeS": "184400",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 22,
                      "aProdX": 11,
                      "aTimeS": "184500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261840$201810261845$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4917|0|86|26102018",
                  "prodX": 12,
                  "dirTxt": "U Berliner Str.",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 13,
                      "dProdX": 12,
                      "dTimeS": "185000",
                      "dDirTxt": "U Berliner Str.",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 14,
                      "aProdX": 12,
                      "aTimeS": "185100",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 15,
                      "aProdX": 12,
                      "aTimeS": "185200",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 16,
                      "aProdX": 12,
                      "aTimeS": "185300",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 17,
                      "aProdX": 12,
                      "aTimeS": "185400",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 18,
                      "aProdX": 12,
                      "aTimeS": "185500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261850$201810261855$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                }
              ]
            },
            "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261802$201810261807$Bus 104 $$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 2,
                "tLocX": 3,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000300"
        },
        {
          "type": "JNY",
          "icoX": 8,
          "dep": {
            "locX": 3,
            "idx": 21,
            "dProdX": 13,
            "dInR": true,
            "dTimeS": "181100",
            "dTimeR": "181100",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 4,
            "idx": 22,
            "aProdX": 13,
            "aOutR": true,
            "aTimeS": "181200",
            "aTimeR": "181200",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|19015|0|86|26102018",
            "prodX": 14,
            "dirTxt": "U Alt-Mariendorf (Berlin)",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 5,
              "maxC": 5,
              "numC": 25
            },
            "ctxRecon": "T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261811$201810261812$      U6$$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              },
              {
                "type": "REM",
                "remX": 8,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000600"
        },
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 4,
            "dInR": true,
            "dTimeS": "181200",
            "type": "N"
          },
          "arr": {
            "locX": 1,
            "aOutR": true,
            "aTimeS": "181800",
            "type": "N"
          },
          "gis": {
            "dist": 332,
            "durS": "000600",
            "ctx": "G|1|G@F|A=1@O=U Paradestr. (Berlin)@X=13386727@Y=52478144@U=86@L=900068101@|A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@l=@X=13384947@Y=52476283@u=0@U=103@L=770013812@|26102018|181200|181800|fb|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        }
      ],
      "ctxRecon": "G@F$A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@L=900981505@a=128@$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$201810261753$201810261802$$$1$§T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261802$201810261807$Bus 104 $$1$§T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261811$201810261812$      U6$$1$§G@F$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@X=13384947@Y=52476283@u=0@L=770013812@a=128@$201810261812$201810261818$$$1$",
      "freq": {
        "minC": 9
      },
      "conSubscr": "U",
      "cksum": "69738f03_3"
    },
    {
      "cid": "C-3",
      "date": "20181026",
      "dur": "002600",
      "chg": 1,
      "sDays": {
        "sDaysR": "not every day",
        "sDaysI": "26. Oct until 2. Nov 2018 Mo - Fr",
        "sDaysB": "7CF80000000000"
      },
      "dep": {
        "locX": 0,
        "dInR": true,
        "dTimeS": "180200",
        "type": "N"
      },
      "arr": {
        "locX": 1,
        "aOutR": true,
        "aTimeS": "182800",
        "type": "N"
      },
      "secL": [
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 0,
            "dInR": true,
            "dTimeS": "180200",
            "type": "N"
          },
          "arr": {
            "locX": 2,
            "aOutR": true,
            "aTimeS": "181100",
            "type": "N"
          },
          "gis": {
            "dist": 564,
            "durS": "000900",
            "ctx": "G|1|G@F|A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@U=104@L=900981505@|A=1@O=Sommerbad Neukölln (Berlin)@X=13415951@Y=52480580@U=86@L=900079101@|26102018|180200|181100|bf|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        },
        {
          "type": "JNY",
          "icoX": 5,
          "dep": {
            "locX": 2,
            "idx": 13,
            "dProdX": 15,
            "dInR": true,
            "dTimeS": "181100",
            "dTimeR": "181100",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 3,
            "idx": 18,
            "aProdX": 15,
            "aOutR": true,
            "aTimeS": "181600",
            "aTimeR": "181600",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|4918|0|86|26102018",
            "prodX": 8,
            "dirTxt": "U Berliner Str.",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 9,
              "maxC": 17,
              "numC": 12,
              "jnyL": [
                {
                  "jid": "1|4886|0|86|26102018",
                  "prodX": 9,
                  "dirTxt": "Neu-Westend, Brixplatz",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 17,
                      "dProdX": 9,
                      "dTimeS": "182000",
                      "dDirTxt": "Neu-Westend, Brixplatz",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 18,
                      "aProdX": 9,
                      "aTimeS": "182100",
                      "dProdX": 9,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 19,
                      "aProdX": 9,
                      "aTimeS": "182200",
                      "dProdX": 9,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 20,
                      "aProdX": 9,
                      "aTimeS": "182300",
                      "dProdX": 9,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 21,
                      "aProdX": 9,
                      "aTimeS": "182400",
                      "dProdX": 9,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 22,
                      "aProdX": 9,
                      "aTimeS": "182500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261820$201810261825$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4930|0|86|26102018",
                  "prodX": 10,
                  "dirTxt": "U Berliner Str.",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 13,
                      "dProdX": 10,
                      "dTimeS": "183000",
                      "dDirTxt": "U Berliner Str.",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 14,
                      "aProdX": 10,
                      "aTimeS": "183100",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 15,
                      "aProdX": 10,
                      "aTimeS": "183200",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 16,
                      "aProdX": 10,
                      "aTimeS": "183300",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 17,
                      "aProdX": 10,
                      "aTimeS": "183400",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 18,
                      "aProdX": 10,
                      "aTimeS": "183500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261830$201810261835$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4876|0|86|26102018",
                  "prodX": 11,
                  "dirTxt": "Neu-Westend, Brixplatz",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 17,
                      "dProdX": 11,
                      "dTimeS": "184000",
                      "dDirTxt": "Neu-Westend, Brixplatz",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 18,
                      "aProdX": 11,
                      "aTimeS": "184100",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 19,
                      "aProdX": 11,
                      "aTimeS": "184200",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 20,
                      "aProdX": 11,
                      "aTimeS": "184300",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 21,
                      "aProdX": 11,
                      "aTimeS": "184400",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 22,
                      "aProdX": 11,
                      "aTimeS": "184500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261840$201810261845$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4917|0|86|26102018",
                  "prodX": 12,
                  "dirTxt": "U Berliner Str.",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 13,
                      "dProdX": 12,
                      "dTimeS": "185000",
                      "dDirTxt": "U Berliner Str.",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 14,
                      "aProdX": 12,
                      "aTimeS": "185100",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 15,
                      "aProdX": 12,
                      "aTimeS": "185200",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 16,
                      "aProdX": 12,
                      "aTimeS": "185300",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 17,
                      "aProdX": 12,
                      "aTimeS": "185400",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 18,
                      "aProdX": 12,
                      "aTimeS": "185500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261850$201810261855$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4879|0|86|26102018",
                  "prodX": 16,
                  "dirTxt": "Neu-Westend, Brixplatz",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 17,
                      "dProdX": 16,
                      "dTimeS": "190000",
                      "dDirTxt": "Neu-Westend, Brixplatz",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 18,
                      "aProdX": 16,
                      "aTimeS": "190200",
                      "dProdX": 16,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 19,
                      "aProdX": 16,
                      "aTimeS": "190300",
                      "dProdX": 16,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 20,
                      "aProdX": 16,
                      "aTimeS": "190400",
                      "dProdX": 16,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 21,
                      "aProdX": 16,
                      "aTimeS": "190500",
                      "dProdX": 16,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 22,
                      "aProdX": 16,
                      "aTimeS": "190600",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261900$201810261906$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                }
              ]
            },
            "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261811$201810261816$Bus 104 $$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 2,
                "tLocX": 3,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000300"
        },
        {
          "type": "JNY",
          "icoX": 8,
          "dep": {
            "locX": 3,
            "idx": 21,
            "dProdX": 17,
            "dInR": true,
            "dTimeS": "182100",
            "dTimeR": "182100",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 4,
            "idx": 22,
            "aProdX": 17,
            "aOutR": true,
            "aTimeS": "182200",
            "aTimeR": "182200",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|19014|2|86|26102018",
            "prodX": 18,
            "dirTxt": "U Alt-Mariendorf (Berlin)",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 5,
              "maxC": 5,
              "numC": 25
            },
            "ctxRecon": "T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261821$201810261822$      U6$$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              },
              {
                "type": "REM",
                "remX": 8,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000600"
        },
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 4,
            "dInR": true,
            "dTimeS": "182200",
            "type": "N"
          },
          "arr": {
            "locX": 1,
            "aOutR": true,
            "aTimeS": "182800",
            "type": "N"
          },
          "gis": {
            "dist": 332,
            "durS": "000600",
            "ctx": "G|1|G@F|A=1@O=U Paradestr. (Berlin)@X=13386727@Y=52478144@U=86@L=900068101@|A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@l=@X=13384947@Y=52476283@u=0@U=103@L=770013812@|26102018|182200|182800|fb|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        }
      ],
      "ctxRecon": "G@F$A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@L=900981505@a=128@$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$201810261802$201810261811$$$1$§T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261811$201810261816$Bus 104 $$1$§T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261821$201810261822$      U6$$1$§G@F$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@X=13384947@Y=52476283@u=0@L=770013812@a=128@$201810261822$201810261828$$$1$",
      "freq": {
        "minC": 9
      },
      "conSubscr": "U",
      "cksum": "b8a2c722_3"
    },
    {
      "cid": "C-4",
      "date": "20181026",
      "dur": "002700",
      "chg": 1,
      "sDays": {
        "sDaysR": "Mo - Fr",
        "sDaysB": "7CF9F3E7CF9F00"
      },
      "dep": {
        "locX": 0,
        "dInR": true,
        "dTimeS": "181100",
        "type": "N"
      },
      "arr": {
        "locX": 1,
        "aOutR": true,
        "aTimeS": "183800",
        "type": "N"
      },
      "secL": [
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 0,
            "dInR": true,
            "dTimeS": "181100",
            "type": "N"
          },
          "arr": {
            "locX": 2,
            "aOutR": true,
            "aTimeS": "182000",
            "type": "N"
          },
          "gis": {
            "dist": 564,
            "durS": "000900",
            "ctx": "G|1|G@F|A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@U=104@L=900981505@|A=1@O=Sommerbad Neukölln (Berlin)@X=13415951@Y=52480580@U=86@L=900079101@|26102018|181100|182000|bf|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        },
        {
          "type": "JNY",
          "icoX": 5,
          "dep": {
            "locX": 2,
            "idx": 17,
            "dProdX": 19,
            "dInR": true,
            "dTimeS": "182000",
            "dTimeR": "182000",
            "dProgType": "CALCULATED",
            "type": "N"
          },
          "arr": {
            "locX": 3,
            "idx": 22,
            "aProdX": 19,
            "aOutR": true,
            "aTimeS": "182500",
            "aTimeR": "182500",
            "aProgType": "CALCULATED",
            "type": "N"
          },
          "jny": {
            "jid": "1|4886|0|86|26102018",
            "prodX": 9,
            "dirTxt": "Neu-Westend, Brixplatz",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 9,
              "maxC": 17,
              "numC": 12,
              "jnyL": [
                {
                  "jid": "1|4930|0|86|26102018",
                  "prodX": 10,
                  "dirTxt": "U Berliner Str.",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 13,
                      "dProdX": 10,
                      "dTimeS": "183000",
                      "dDirTxt": "U Berliner Str.",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 14,
                      "aProdX": 10,
                      "aTimeS": "183100",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 15,
                      "aProdX": 10,
                      "aTimeS": "183200",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 16,
                      "aProdX": 10,
                      "aTimeS": "183300",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 17,
                      "aProdX": 10,
                      "aTimeS": "183400",
                      "dProdX": 10,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 18,
                      "aProdX": 10,
                      "aTimeS": "183500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261830$201810261835$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4876|0|86|26102018",
                  "prodX": 11,
                  "dirTxt": "Neu-Westend, Brixplatz",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 17,
                      "dProdX": 11,
                      "dTimeS": "184000",
                      "dDirTxt": "Neu-Westend, Brixplatz",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 18,
                      "aProdX": 11,
                      "aTimeS": "184100",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 19,
                      "aProdX": 11,
                      "aTimeS": "184200",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 20,
                      "aProdX": 11,
                      "aTimeS": "184300",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 21,
                      "aProdX": 11,
                      "aTimeS": "184400",
                      "dProdX": 11,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 22,
                      "aProdX": 11,
                      "aTimeS": "184500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261840$201810261845$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4917|0|86|26102018",
                  "prodX": 12,
                  "dirTxt": "U Berliner Str.",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 13,
                      "dProdX": 12,
                      "dTimeS": "185000",
                      "dDirTxt": "U Berliner Str.",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 14,
                      "aProdX": 12,
                      "aTimeS": "185100",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 15,
                      "aProdX": 12,
                      "aTimeS": "185200",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 16,
                      "aProdX": 12,
                      "aTimeS": "185300",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 17,
                      "aProdX": 12,
                      "aTimeS": "185400",
                      "dProdX": 12,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 18,
                      "aProdX": 12,
                      "aTimeS": "185500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261850$201810261855$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4879|0|86|26102018",
                  "prodX": 16,
                  "dirTxt": "Neu-Westend, Brixplatz",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 17,
                      "dProdX": 16,
                      "dTimeS": "190000",
                      "dDirTxt": "Neu-Westend, Brixplatz",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 18,
                      "aProdX": 16,
                      "aTimeS": "190200",
                      "dProdX": 16,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 19,
                      "aProdX": 16,
                      "aTimeS": "190300",
                      "dProdX": 16,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 20,
                      "aProdX": 16,
                      "aTimeS": "190400",
                      "dProdX": 16,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 21,
                      "aProdX": 16,
                      "aTimeS": "190500",
                      "dProdX": 16,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 22,
                      "aProdX": 16,
                      "aTimeS": "190600",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261900$201810261906$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                },
                {
                  "jid": "1|4920|0|86|26102018",
                  "prodX": 20,
                  "dirTxt": "U Berliner Str.",
                  "stopL": [
                    {
                      "locX": 2,
                      "idx": 13,
                      "dProdX": 20,
                      "dTimeS": "190900",
                      "dDirTxt": "U Berliner Str.",
                      "dDirFlg": "2",
                      "type": "N"
                    },
                    {
                      "locX": 5,
                      "idx": 14,
                      "aProdX": 20,
                      "aTimeS": "191100",
                      "dProdX": 20,
                      "type": "N"
                    },
                    {
                      "locX": 6,
                      "idx": 15,
                      "aProdX": 20,
                      "aTimeS": "191200",
                      "dProdX": 20,
                      "type": "N"
                    },
                    {
                      "locX": 7,
                      "idx": 16,
                      "aProdX": 20,
                      "aTimeS": "191300",
                      "dProdX": 20,
                      "type": "N"
                    },
                    {
                      "locX": 8,
                      "idx": 17,
                      "aProdX": 20,
                      "aTimeS": "191400",
                      "dProdX": 20,
                      "type": "N"
                    },
                    {
                      "locX": 3,
                      "idx": 18,
                      "aProdX": 20,
                      "aTimeS": "191500",
                      "type": "N"
                    }
                  ],
                  "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261909$201810261915$Bus 104 $$1$",
                  "msgL": [
                    {
                      "type": "REM",
                      "remX": 5,
                      "fLocX": 2,
                      "tLocX": 3,
                      "tagL": [
                        "RES_JNY_DTL_H3"
                      ]
                    }
                  ],
                  "subscr": "F"
                }
              ]
            },
            "ctxRecon": "T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261820$201810261825$Bus 104 $$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 2,
                "tLocX": 3,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000300"
        },
        {
          "type": "JNY",
          "icoX": 8,
          "dep": {
            "locX": 3,
            "idx": 21,
            "dProdX": 21,
            "dInR": true,
            "dTimeS": "183100",
            "dProgType": "PROGNOSED",
            "type": "N"
          },
          "arr": {
            "locX": 4,
            "idx": 22,
            "aProdX": 21,
            "aOutR": true,
            "aTimeS": "183200",
            "aProgType": "PROGNOSED",
            "type": "N"
          },
          "jny": {
            "jid": "1|19013|2|86|26102018",
            "prodX": 22,
            "dirTxt": "U Alt-Mariendorf (Berlin)",
            "status": "P",
            "isRchbl": true,
            "freq": {
              "minC": 5,
              "maxC": 5,
              "numC": 25
            },
            "ctxRecon": "T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261831$201810261832$      U6$$1$",
            "msgL": [
              {
                "type": "REM",
                "remX": 5,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL_H3"
                ]
              },
              {
                "type": "REM",
                "remX": 8,
                "fLocX": 3,
                "tLocX": 4,
                "tagL": [
                  "RES_JNY_DTL"
                ]
              }
            ],
            "subscr": "F"
          },
          "minChg": "000600"
        },
        {
          "type": "WALK",
          "icoX": 4,
          "dep": {
            "locX": 4,
            "dInR": true,
            "dTimeS": "183200",
            "type": "N"
          },
          "arr": {
            "locX": 1,
            "aOutR": true,
            "aTimeS": "183800",
            "type": "N"
          },
          "gis": {
            "dist": 332,
            "durS": "000600",
            "ctx": "G|1|G@F|A=1@O=U Paradestr. (Berlin)@X=13386727@Y=52478144@U=86@L=900068101@|A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@l=@X=13384947@Y=52476283@u=0@U=103@L=770013812@|26102018|183200|183800|fb|ft@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@-1@100@1@1000@0@@@@@false@0@-1@$f@$f@$f@$f@$f@$§tf@$f@$f@$f@$f@$f@$§|"
          }
        }
      ],
      "ctxRecon": "G@F$A=4@O=Berlin, Tempelhofer Park Eingang Oderstr.@X=13418720@Y=52476688@L=900981505@a=128@$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$201810261811$201810261820$$$1$§T$A=1@O=Sommerbad Neukölln (Berlin)@L=900079101@a=128@$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$201810261820$201810261825$Bus 104 $$1$§T$A=1@O=U Platz der Luftbrücke (Berlin)@L=900017102@a=128@$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$201810261831$201810261832$      U6$$1$§G@F$A=1@O=U Paradestr. (Berlin)@L=900068101@a=128@$A=2@O=12101 Berlin-Tempelhof, Peter-Str.r-Weg 1@X=13384947@Y=52476283@u=0@L=770013812@a=128@$201810261832$201810261838$$$1$",
      "freq": {
        "minC": 9
      },
      "conSubscr": "U",
      "cksum": "5d2ae5d2_3"
    }
  ],
  "outCtxScrB": "1|OB|MT#11#11133#11133#11158#11158#0#0#165#11124#1#-2147483642#0#1#2|PDH#3620a3acc83164b920b7eb39359edd0d|RD#26102018|RT#172425",
  "outCtxScrF": "1|OF|MT#11#11171#11171#11198#11198#0#0#165#11163#5#-2147483642#0#1#2|PDH#3620a3acc83164b920b7eb39359edd0d|RD#26102018|RT#172425",
  "fpB": "20181021",
  "fpE": "20181208",
  "planrtTS": "1540567421"
}

Trouble with using INSA profile

Hey Guys,

on the moment i have a problem with the INSA profile and the /departures endpoint.

With stationId 000005254 and duration: 20 i get an valid result set.
Try the same with 000005258 and it don´t work. I´m getting the following error:

TypeError: Cannot read property 'substr' of undefined at parseDateTime (..\node_modules\hafas-client\parse\date-time.js:6:22) at Object.parseWarning (..\node_modules\hafas-client\parse\warning.js:36:14) at d.warnings.c.himL.map.w (..\node_modules\hafas-client\lib\request.js:110:41) at Array.map (<anonymous>) at fetch.then.then (..\node_modules\hafas-client\lib\request.js:110:24) at <anonymous> at process._tickCallback (internal/process/next_tick.js:118:7)

Any Ideas on this?

Greetings Daniel

never-ending todo list

clean up the API

  • remove departure.trip & movement.trip – They have a confusing name and may not even be the trip nr all the time. – 1269773
  • split departure.line into dep.trip & dep.trip.linedep.line.id/arr.line.id & dep.line.fahrtNr/arr.line.fahrtNr don't make sense. id (as it currently is) and fahrtNr are properties of the trip/vehicle, not the line.
  • addresses have an ID too – find a way to differentiate them from POIs – #42
  • rename journey.refreshToken to journey.id

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.