IMEbeta

IT og utvikling ved IME-fakultetet

API til folket! Emnedata til fri bruk

with 28 comments

Screenshot av tekstdump

Screenshot av tekstdump

NTNU sitter på store mengder nyttig data som få har tilgang til. Tingenes tilstand er blitt bedre de siste årene, og nå finnes det flere WebService’er enhetene kan bruke for å hente rådata fra offisielle kilder. Dessverre er disse ikke åpne for «publikum», men i dag tar vi første steg for å bote på det.

IME-fakultetet tilbyr den første av forhåpentligvis flere APIer: Emne-API.

Tjenesten fungerer ved at man kjører spørringer REST-ish, f.eks. ime.ntnu.no/api/course/tma4105, og den returnerer JSON-data. Vil man ha noe som er lettere å lese kan man slenge på «.txt» og få en tekstdump rett i browseren.

Målsettingen er å få fart i utviklingen av smarte løsninger, og jeg håper én eller flere driftige studenter/studiner tar utfordringen. F.eks. emnekatalog på mobil?

Hvis noen lager noe på grunnlag av denne tjenesten hadde det vært gøy å få en kommentar her på bloggen.

Edit: oppdaterte til nye URLer i eksemplet.

Written by Rune M. Andersen

mars 11th, 2011 at 2:58 pm

Posted in Tjenester

Tagged with , , , , , ,

28 Responses to 'API til folket! Emnedata til fri bruk'

Subscribe to comments with RSS or TrackBack to 'API til folket! Emnedata til fri bruk'.

  1. Veldig veldig bra!

    Dag Einar Monsen

    11 mar 11 at 15:08

  2. Eksisterer det eit endpoint for å hente ut alle emnekoder i APIet som er tilgjengelig?

    Roy Sindre Norangshol

    11 mar 11 at 16:10

  3. Kult! Vi i Classmate.no vil helt klart gå over til å bruke dette istedenfor å scrape nettsidene neste gang vi har behov for å oppdatere fagdata.

    Hans Fredrik

    11 mar 11 at 16:13

  4. Oversikt over alle emner eksisterer i WS-en, men er ikke tilgjengeliggjort enda. Kommer om kort tid!

    Rune M. Andersen

    11 mar 11 at 20:55

  5. Heia fine standarder og maskinlesbare resultater uten å lese API-dokumentasjon om hva REST-ish er :)
    Og kanskje RDFa i webversjonen av emnekatalog?

    Per Oja

    12 mar 11 at 00:20

  6. Bra jobbet.

    Christine Sætre

    12 mar 11 at 00:52

  7. Kjempebra Rune… Dette er en god start på å få data letter tilgjengelig for studenter!

    Knut Wien

    12 mar 11 at 18:26

  8. Takk for feedback! Det gleder meg å se at såpass intenst nerdete materiale blir populært :) API-posten fikk over dobbelt så mange førstedags-pageviews som noen annen post har fått tidligere på IMEbeta.

    Er tydelig at rådata er interessant, og jeg er spent på om noe smart, i form av tjenester, kommer ut av det på sikt.

    Rune M. Andersen

    12 mar 11 at 19:56

  9. Sweet Rune.. jeg startet å skrive en app til iOS rundt APIet med fokus på å hente nytteinformasjon og lagre det på telefonen (kontaktinformasjon, eksamensdatoer, undervisningsinfo). Kjapp demovideo på http://dl.dropbox.com/u/6140800/film/NTNUApp.mov :-)

    Som Roy Sindre nevnte hadde det vært flott med et endpoint som lister alle emner (så man slipper skrive inn kode selv), og tilgang til undervisningsinformasjon fra http://www.ntnu.no/studieinformasjon/timeplan/v11/ :)

    Magnus Romnes

    12 mar 11 at 22:31

  10. Fin demo, Magnus!

    Oversiktsliste over alle emner kommer på plass om ikke lenge, og timeplandata er underveis. Tjenesten er utviklet, men ikke produksjonssatt enda hos NTNU IT. Bloggpost kommer når alt er klart.

    Rune M. Andersen

    12 mar 11 at 22:51

  11. Nå er også liste med alle emner tilgjengelig i APIet!

    Rune M. Andersen

    14 mar 11 at 12:14

  12. Flott Rune! App’en min er også oppdatert med dette.. søkbar liste over emner og tar i bruk OSF for campuskart:

    http://dl.dropbox.com/u/6140800/film/NTNUApp_HD.mov

    Magnus Romnes

    15 mar 11 at 06:37

  13. Er glad for å kunne si at API for timeplandata endelig er kommet på nett! :)

    http://www.ime.ntnu.no/api/timeplan

    Rune M. Andersen

    18 mar 11 at 15:47

  14. Kjempebra! Det burde være et krav at alle nye datakilder burde etablere et tilsvarende API.

    Noen kommentarer/spørsmål:

    1. Hva er grunnen til at du/dere velger JSON fremfor XML? Jeg ville tro at XML enklere å konsumere? Hadde det vært vanskelig å generere XML i tillegg, og la meg legge på .xml for å få det?

    2. Mange typer maskinell behandling av slike data kan dra nytte av en datamodell/schema, f.eks. for generering av kode. Noe slikt burde finnes for denne tjenesten.

    3. En litt mer WS-ish tjeneste hadde definert en datamodell med operasjoner for å hente ut data, istedenfor å dumpe alle data på en gang. Dette gjør det både enklere for konsumenten og gjør tjenesten mer robust ift. endringer. Det passer dessuten bedre for en stor klasse verktøy, selv om mange mener det er mer tungvektig og mindre smidig. Er det noen prosess på gang for å gå i den retning?

    Hallvard Trætteberg

    21 mar 11 at 10:42

  15. Jeg ser jo nå av det du skriver at du bruker NTNU IT sine web services for å hente ut data. Det svarer delvis på spørsmålet om WS-ish tilgang. Hvor er disse WS’ene dokumentert? Hvordan er tilgangen for oss dødelige?

    Hallvard Trætteberg

    21 mar 11 at 10:47

  16. @Hallvard:

    1) JSON er valgt fordi det er mer kompakt enn XML (nyttelast vs overført tekst) og er enkelt å konsumere f.eks. i PHP. Kjør json_decode(..) så har du et generisk objekt å jobbe med.

    Men det er forsåvidt enkelt å lage en XML-versjon også.

    2) Har med vilje unngått å dokumentere datainnholdet da det kan/vil endre seg uten at jeg kan påvirke det. Quick-and-dirty heller enn 100 % gjennomført, der altså :) (Og online i dag heller enn til neste år).

    3) En full-blown WS blir ikke del av IMEs API. Men for den avanserte (og NTNU-interne) brukeren har NTNU IT WebService-tilgang for alt dette, samt mer avanserte spørringer. Tjenesten krever autentisering, du får en personlig mail med detaljer.

    Rune M. Andersen

    21 mar 11 at 16:15

  17. Legger dere dette til på http://www.programmableweb.com/apis ? :)

    Espen Skarsbø Olsen

    12 mai 11 at 13:44

  18. Bra tips, lagt til nå :)

    Rune M. Andersen

    12 mai 11 at 13:48

  19. Hei, jeg registrerer at timeplanen er utdatert/feil for endel fag. For eksempel:

    http://www.ime.ntnu.no/api/schedule/tdt4240/spring/2011.txt

    Her er rom på tirsdag- og torsdags-forelesningen feil.

    Sammenliknet med 1024.ntnu.no, så vises andre tider, og tidene 1024 henter ut stemmer overens med forelesningene jeg har.

    Håkon Drolsum Røkenes

    15 mai 11 at 11:38

  20. Jeg tømte cache, men får fortastt mismatch i dataene (får samme feildata fra webservice hos NTNU IT). Feilen er meldt inn, vi skal prøve å få fikset det. Takk for at du sa fra! :)

    Rune M. Andersen

    16 mai 11 at 07:19

  21. Hei, først og fremst takk for flott API! Det ser dog ut til at det serverer litt sære data hvis man prøver å hente timeplandata for neste semester (2011h).

    Det ser ut til at schedule-APIet returnerer 2010-data, samtidig som request-parameteren i det returnerte datasettet påstår at det er 2011-data som returneres. Course-APIet returnerer også fortsatt 2010-data, men de er «merket» riktig.

    Jeg forstår selvfølgelig at 2011-data ikke er offentliggjort ennå (de ligger i uoffisiell versjon på http://www.ntnu.no/studieinformasjon/timeplan/h11/, men det er kanskje en annen datakilde?), men da burde vel APIet ha returnert et tomt datasett, og ikke fjorårets merket som årets?

    Aksel Skauge Mellbye

    24 mai 11 at 09:46

  22. Har testet schedule-APIet og kan bekrefte feilaktige fremtidige data, ja. Et tomt datasett ville vært mer korrekt returverdi.

    Problemet ligget dessverre utenfor det jeg greier å gjøre noe med (i selve WS-tjenesten som NTNU IT drifter), men jeg har meldt feilen inn slik at de ser på saken. Regner med at det blir rettet om ikke lenge.

    Timeplanwebsiden henter data fra samme grunnkilde, men uten «mellomvaren» (som er det eneste jeg har tilgang til), derfor er de ferskeste dataene tilgjengelig der først.

    Course-APIet er litt enklere siden tidsangivelse ikke er med i spørringen. Bare ett datasett er til enhver tid tilgjengelig, og det er alltid det ferskest mulige. Verdier i datasettet avslører, som du har merket, ferskheten.

    Rune M. Andersen

    24 mai 11 at 10:22

  23. Har fått svar fra NTNU IT, en midlertidig fiks blir iverksatt onsdag 25. mai. Mekanisme for å synliggjøre hvilket datasett man spør i kommer snart.

    Rune M. Andersen

    24 mai 11 at 13:21

  24. Hei,
    schedule-APIet returnerer fortsatt 2011-data såvidt jeg kan se. Hva er ETA for data for våren 2012?

    Aksel Skauge Mellbye

    22 des 11 at 01:17

  25. Data for våren 2012 er nå tilgjengelig, og en permanent fiks på problemet med feil data ved spørring på kommende semester er lagt inn samtidig.

    For fremtiden vil nye data være på plass inntil 1 måned før nytt semester starter. Det vil også være mulig å fortsette å spørre på forrige semester en periode etter semesterskift.

    Rune M. Andersen

    3 jan 12 at 15:02

  26. Ja, dette er en nyttig tjeneste også for oss som vil ha data om emnene til annet formål. Fint om dere også kunne gjøre data tilgjengelig i xml. json er greit hvis du skal bruke data direkte i en webapplikasjon, men er ellers temmelig tungvint å bruke.

    Trond Aalberg

    25 mai 12 at 10:11

  27. Hunting over this post jogs my memory linked with my buddy! I’m going to forward this kind of write-up to your pet.

  28. Just want to say your article is as astounding. The clarity in your post is simply nice and i could assume you are an expert on this subject. Fine with your permission allow me to grab your RSS feed to keep updated with forthcoming post. Thanks a million and please keep up the gratifying work.

    UGGS On Sale

    2 des 13 at 06:18

Leave a Reply