sbahn-berlin-tweets

Fetch & parse @SBahnBerlin tweets about the operating status of S-Bahn Berlin.

Usage no npm install needed!

<script type="module">
  import sbahnBerlinTweets from 'https://cdn.skypack.dev/sbahn-berlin-tweets';
</script>

README

sbahn-berlin-tweets

Fetch & parse @SBahnBerlin tweets on the operating status of S-Bahn Berlin. Caveats:

  • It guesses lines and stations just by their name. This is brittle.
  • It relies on specific phrases & keywords commonly used by the SBahnBerlin twitter account.

npm version build status ISC-licensed minimum Node.js version chat with me on Gitter support me on Patreon

Installation

npm install sbahn-berlin-tweets

Usage

fetching & parsing tweets

const fetchAndParseTweets = require('sbahn-berlin-tweets')

const [tweet] = await fetchAndParseTweets(1, {
    formatLine: l => l.id,
    formatStation: s => s.id
})
console.log(tweet)
{
    id: '1169225032700239872',
    cause: 'medical-emergency',
    effect: 'disruptions',
    affected: ['S3', 'S5', 'S7', 'S9'],
    runsOnlyBetween: null,
    stations: ['900000024204'], // Savignyplatz
    useLines: []
}

parsing tweets

const parse = require('sbahn-berlin-tweets/parse')

console.log(parse({
    id: '1169246704291524608',
    text: [
        {type: 'hashtag', content: 'S7'},
        {type: 'plain', content: ': Wegen einer Weichenstörung in '},
        {type: 'hashtag', content: 'Olympiastadion'},
        {type: 'plain', content: ' verkehrt die S7 nur zwischen '},
        {type: 'hashtag', content: 'Ahrensfelde'},
        {type: 'plain', content: ' <> '},
        {type: 'hashtag', content: 'Westkreuz'},
        {type: 'plain', content: '. Der 10-Minutentakt kann nur zwischen Ahrensfelde <> '},
        {type: 'hashtag', content: 'Charlottenburg'},
        {type: 'plain', content: ' angeboten werden. Von/nach Olympiastadion/Spandau nutzen Sie bitte die Züge der '},
        {type: 'hashtag', content: 'S3'},
        {type: 'plain', content: ' und '},
        {type: 'hashtag', content: 'S9'},
        {type: 'plain', content: '.'}
    ]
}))
{
    cause: 'switch-failure',
    effect: 'skipped-stops',
    affected: [
        // from the `vbb-lines` npm package
        {id: '10162_109', name: 'S7'}
    ],
    stations: [
        // from the `vbb-stations` npm package
        {id: '900000025321', name: 'S Olympiastadion'}
    ],
    useLines: [
        // from the `vbb-lines` npm package
        {id: '10148_109', name: 'S3'},
        {id: '10170_109', name: 'S9'}
    ],
    runsOnlyBetween: null
}

Related

Contributing

If you have a question or need support using sbahn-berlin-tweets, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to the issues page.