NS api

Door Gerhard l, 9 jaar geleden, 12.727x bekeken

De NS heeft al een tijdje zijn API beschikbaar gesteld, en nadat iemand hier op het forum een leuk idee voorstelde ben ik hiermee aan het scripten gegaan, en daar is dit script uitgekomen.

Via de API van NS kan je:
- een lijst met alle stations ophalen
- vertrektijden van een station ophalen
- prijzen van een rit opvragen
- reisadvies opvragen
- storingen ophalen

Hoe werkt het?
Eerst heb je een API gebruikersnaam en wachtwoord nodig, deze kan je hier aanvragen:
https://www.ns.nl/ews-aanvraagformulier/

Daarna heb je dit stukje code nodig om de gegevens op te halen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$ns
= new NS( new curl( new user( USERNAME, PASSWORD ) ) );
//vertrektijden
$vertrektijden = $ns->getDepartures('Delfzijl');

//prijzen
$prijzen = $ns->getPrices('Delfzijl', 'Delfzijl', '',date("dmY"));

//reisadvies
$advies = $ns->getAdvise('Delfzijl', 'Groningen', 'Appingedam', date("dmY"));

//storingen
$stations = $ns->getDisturbances();
?>


Werkend voorbeeld online:
klik

edit 17-4-12:
Quote:
Beste gebruikers van de NS API,
In de aankomende periode zal de prijzen-api (ns-api-prijzen en ns-api-prijzen-v2) worden uitgeschakeld voor gebruikers van de openbare API. Door dit te doen krijgen we groen licht binnen NS om de statische dienstregeling vrij te geven. Het verzoek is daarom om de prijzen-service uit je applicatie te halen als je gebruik maakt van deze webservice. Volgens de algemene voorwaarden is de minimale opzegtermijn 1 maand, de prijzen-service zal daarom minimaal tot 17 mei 2012 beschikbaar blijven.

De prijzen-data kan nog wel gebruikt worden in applicaties, maar dan moet er een apart contract afgesloten worden met betrekking tot de verantwoordelijkheden rondom de communicatie van prijzen. Mocht je hiervan gebruik willen maken, neem dan contact op met NS via nsr.api@ns.nl. Binnen de afspraken rondom het gebruik van de prijzen-api zit waarschijnlijk een reviewronde door NS voordat een applicatie gepubliceerd mag worden. Vooralsnog zullen er geen kosten gerekend worden voor het gebruik van de prijzen-service.


Reacties zijn altijd welkom.

Gerhard

Gesponsorde koppelingen

PHP script bestanden

  1. ns.class.php

 

Er zijn 12 reacties op 'Ns api'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- Ariën -
- Ariën -
9 jaar geleden
 
0 +1 -0 -1
Leuke class, maar houd er rekening mee dat de komende weken/maanden veel aan de API gaat veranderen... :-)
Gerhard l
gerhard l
9 jaar geleden
 
Bedankt! En ik was daar nog niet van op de hoogte, maar dan zal ik dit in de gaten houden, en indien nodig een nieuwe versie plaatsen.
Jan geen
Jan geen
9 jaar geleden
 
0 +1 -0 -1
Ziet er aardig uit, wat puntjes:

- Een goed gebruik m.i. is om constanten binnen je class niet camelCase maar met hoofdletters (en _) te schrijven. Classnames UpperCamelCase. (kleinigheidje)
- Ik zou de User class weglaten, die doet niks behalve wat opslaan. Dat kan ook dmv een Array of 2 variabelen
- echo en print_r uit Curl::get()
- Waarom return je xml en geen array? (die je later/in een andere class weer kan ombouwen tot XML. Stel je wilt JSON gebruiken...)

succes
Gerhard l
gerhard l
9 jaar geleden
 
0 +1 -0 -1
Jan, ben een beetje laat maar bedankt voor je reactie. Ben het eigenlijk met al je punten wel eens. De user class wist ik nog niet zeker omdat ik deze waarschijnlijk nog ging uitbreiden, de print r en echo waren nog voor het debuggen, beetje slordig van mij. Naamgeving zal ik om gaan denken, daar krijg ik vaker tips over, maar zou je mij een voorbeeld kunnen geven van wel een goede naam voor een constante? En ik heb hem xml laten returnen omdat ik hem zo ging gebruiken, maar het is inderdaad netter om hem een array te returnen en de gebruiker zelf laten kiezen hoe hij het verder gaat verwerken.
Koen Hollander
Koen Hollander
9 jaar geleden
 
0 +1 -0 -1
Wie kan mij helpen, ik open mijn pagina en zie deze code
Fatal error: Class 'NS' not found in /home/koenho1q/public_html/ns.php on line 2

kijk maar op http://koen-hollander.nl/ns.php om het zelf te zien
Wouter J
Wouter J
9 jaar geleden
 
1 +1 -0 -1
Je include/required de klasse hoop ik wel in?
Gerhard l
gerhard l
8 jaar geleden
 
0 +1 -0 -1
Update 10-05-2012:
Quote:
Per vandaag is een nieuwe versie van de stationslijst beschikbaar: ns-
api-stations-v2.
Zoals eerder al toegelicht hebben we in deze versie een aantal extra
informatie-elementen opgenomen, o.a. op veler verzoek de 3 varianten
van de stationsnamen. Bovendien is de structuur herzien en is de taal
aangepast aan Nederlands, in lijn met de rest van de API.
Meer informatie is te vinden op de documentatiepagina.
Versie 2 is vanaf nu de aanbevolen versie; versie 1 zal op termijn
worden uitgefaseerd. Nadere berichtgeving hierover volgt.


De class is bijgewerkt.
David Meijer
David Meijer
8 jaar geleden
 
0 +1 -0 -1
Ik had een vraag hoe kan ik de afkortingen gebruiken die bij de NS wordt gebruikt http://bussenentreinenforum.nl/NS-API/index.php?station=Hn <<<<< Met deze krijg ik niks te zien.
Chris -
Chris -
8 jaar geleden
 
0 +1 -0 -1
Door de afkortingen in de database op te slaan met de bijbehorende volledige namen ;)
- Ariën -
- Ariën -
8 jaar geleden
 
0 +1 -0 -1
En daar is ook een URl voor bij de NS API.
- Ariën -
- Ariën -
1 maand geleden
 
1 +1 -0 -1
De NS heeft inmiddels een nieuwe API-portaal, de oude zal in de loop van het jaar verdwijnen, en dus de manier hoe het script hier werkt.

https://apiportal.ns.nl/
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Gerhard l
gerhard l
3 weken geleden
 
0 +1 -0 -1
Poeh, 9 jaar geleden alweer. Thanks voor de link Ariën!
Wordt tijd dat ik hier een nieuwe versie van ga schrijven.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. ns.class.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.