Vi som jobber med å utvikle nrk.no jobber hardt med å både forbedre tjenestene der samt å drifte og fylle selve nrk.no med innhold. Som et ledd i disse planene, begynte vi høsten 2008 et prosjekt for å kunne gi utvidet tilgang til NRKs innhold. Ved å tilby et API. En verktøykasse med funksjoner som gjør at andre kan lage nye tjenester basert på video, lyd, tekst og informasjon fra NRK.
Foto: Eirik Solheim / NRKbeta – Creative Commons.
I forbindelse med prosjektet avdekket vi en del grunntjenester som rett og slett ikke var bra nok. Vi ønsket derfor å etablere en ny arkitektur som skal gjøre det enklere for oss å kunne publisere nye grensesnitt mot vårt innhold i fremtiden. Det å gi eksterne tilgang til alt innholdet vårt er ikke bare enkelt.
Det er mange hindre på veien, alt fra det juridiske og rettighetsmessige til formatvalg. Og det nevnte kvalitetsmessige ved selve løsningen. I tillegg til denne kabalen er alltid tilgang på våre ressurser en joker. Vi må gjøre harde prioriteringer daglig blant alle de gode ideene og de strålende funksjonalitetsønskene. Vi er over 30 dyktige og entusiastiske utviklere som jobber direkte med nrk.no i tillegg til flere flinke redaksjonelle utviklere.
API’et
Det som står på planene i første rekke er:
– Tilgang til programinformasjon
– Tilgang til hele artikkel-universet fra nrk.no (inkl bilder, video og lyd)
– Tilgang til DMA (NRKs store musikkatalog, kanskje også via streaming)
– Tilgang til en del nett-TV-funksjonalitet
Det kommer sikkert mer etter hvert, men dette er det vi i første rekke har på blokka. Innspillene i artikkelen til Henrik vil vi også se på underveis. Men som med alt annet må vi også jobbe oss igjennom vilkårene for bruk, krav til registrering og en del annen juridisk mat.
Jeg tipper noen av tjenestene vil se dagens lys før sommeren. Flere av APIene legges ut fortløpende.
Kom gjerne med innspill og kommentarer. Hva dere ønsker er i stor grad med på å påvirke hva vi legger ut av API og tjenester. Vi imøtekommer ønsker og utfordringer. Kan dere for eksempel komme med deres topp tre-lister over APIer fra NRK? Helst med begrunnelse?
(Artikkelforfatter Andreas Munkelien er sjef for teknisk utvikling i NRKs utviklingsavdeling)
perake (perake)
Hva skjer så med NRKs API? tinyurl.com/dmcqls #svpt
Henke (Henrik Larsson)
Jag älskar verkligen NRK! RT @perake: Hva skjer så med NRKs API? tinyurl.com/dmcqls #svpt
Geir Arne Brevik
1) Programoversikt – fordi det hadde vært grådig kjekt
2) Spillelister med musikk fra radioprogrammer – for å lage tøffe radio-apps (det blir jo rapportert til TONO uansett)
3) Maktbasen til Brennpunkt (av åpenbare grunner)
pelles (Pelle Sten)
NRK släpper flera API:er under våren. bit.ly/7FJZ
evenv
For min del er Nett-TV absolutt #1 – det er jo der dere sitter på enormt mye unikt innhold som man kan gjøre mye spennende med. Noen grunn til at dere bare vil lage "Tilgang til en del nett-TV-funksjonalitet"?
Andreas Munkelien
Hei!
Rundt Nett-TV så vurderer vi hva vi kan gjøre i forhold til rettigheter og de utfordingene det gir oss i forhold til å overholde forpliktelser i forhold til rettighetseiere.
Andreas Munkelien
Hei!
Takk for innspill, maktbasen skal vi se hva vi kan gjøre med.
Christian Wattengård
For min del er det enkel tilgang til NettTV arkivet. Dette for å få bedre implementasjoner i friprog mediesenterløsninger. NRK Spotlight som er tilgjengelig i Windows Media Center er utrolig dårlig.
Når det gjelder programoversikt, så har jeg tilgang til den som ligger på presseområdet. Og den er forsåvidt ganske grei. Men den har et litt rart XML-format 🙂 Her vil jeg komme med et intenst ønske om å basere en evt api-løsning på XMLTV standarden.
Utenom det så benytter jeg ikke så mye på nrk.no, Urørt basen kanskje kunne hatt et API for tilgang.
mskogly
Vi har planer om api for urørt ihvertfall. Enn så lenge har vi bare haugevis med rss-er, men vi vil jo at folk skal kunne ta med seg og sende inn flere ting fra andre tjenester, samt at vi har planer om en mobil og iphone app som vil trenge et utvidet api, og da er tanken å eksponere mer av urørt for alle som vil.
På urørt har vi lyst til å fortsette å bruke streit rss som bærer av data så langt det lar seg gjøre, for å gjøre det lett å konsumere det også for folk som ikke er programmerere, men json bør vi også tilby.
Jonas
Helt klart et bra og ryddig api til Nett-TV så det enkelt kan integreres mot mediasenterløsninger som f.eks Boxee.
benjamin
Noe jeg svært ofte savner er muligheten (like etter å ha sett et tv program på NRK) er å se hva programmet het (på engelsk), evt. informasjon om hvilke artister som var med (f.eks i div. underholdningsprogram), og evt om det går an a streame det. Dette er ganske sammensatt informasjon som APIet bør greie å levere.
a) tv-program fra en dato
b) slå opp program fra data fra a)
c) finne ressurser og metadata knyttet til b)
Det betyr at det må være høy integritet mellom dataene som de forskjellige APIene leverer.
Det overnevnte program vil være trivielt å lage såfremt APIet har slik integritet.
Frank Finnøy Burmo
#1 Nett-TV
#2 Programguide
#3 Nyheter
FL!P
Nett-TV – Fordi det er så mye digg der.
NettRadio – Fordi vi ikke må glemme den gode game radioen, tross alt der NRK starta.
Urørt API – Fordi det er ingen dum idè.
opet
Definitivt nett-TV. Har påbegynt en plugin for Plex, men det hadde vært så fantastisk mye lettere med en API. Nett-TV er så mye bedre på en faktisk TV, helst med mediesenter frontend.
mskogly
Spilt på radio, spillelister, søk mot artikler, lydarkiv og videoarkiv og DMA står alle høyt på ønskelista mi.
Det hadde også vært fint med et generelt api for "sosial aktivitet", slik at folk som feks lager en tjeneste hvor de viser nrks innhold samtidig kan la folk kommentere, men at kommentarene også blir sendt tilbake til NRKs servere. Som Intensedebate, men i revers altså. Kommentering, rating, stemming, favoriting osv. Det kan være at det beste der er å bruke en ekstern tjeneste, eller i det minste bør den være integrert med facebook, intensedebate og eller openid.
Se på alt innholdet til NRK som sosiale objekter folk kan snakke om og dele, og lag tjenestene ut fra det.
Marius
Programguide står høyt på listen min. Bør kunne søke på dato, programnavn eller personer tilknyttet et program.
Et eksempel vil være å følge med på alt som Atle Antonsen foretar seg. Eller se når Battlestar Galactica kommer tilbake på TV.
Atle Frenvik Sveen
Proggramguide absolutt. Og mulighet til å slå opp "hva gikk på NRKx 12.30". En annen ting jeg kom på i morges når NRK alltid nyheter sto på: jeg hørte et innslag om piratkopiering der bla.a IKT-Norge uttalte seg. Hadde vært greit å kunne:
1) sjekke hvilket program som gikk på radio
2) få liste over alle innslag i dette programmet
3) streame/laste ned dette innslaget.
Henrik Lied
Andreas M: Veit du noko meir om kva for datautvekslingsformat som blir tilgjengeleg? Er det kun XML (ala Polopoly), eller får dykk lagt inn JSON også?
Dette ser uansett flott ut!
Odd Arne Jensen
Et API til både NettTV og NettRadio takk. 🙂 Både livesendinger, og arkivet. Alt som dere nå har tilgjengelig på nettsidene deres for nedlasting eller streaming, bør jo allerede være klarert for bruk på nettet. I stedet for å bruke nettsidene deres for å leite fram noe å se på, og se det på pcskjermen, ønsker jeg å få det integrert i Mythtv, (open source mediasenter), slik at jeg kan bla gjennom innholdet med fjernkontrollen og se det på tven.
Teksting av sendinger ønsker jeg at blir tilgjengelig i standard tekstformater, slik at man kan velge om man vi bruke dem eller ei, og da spesielt på programmer som dere ellers har tekstet på nynorsk. Bare det å slippe nynorske undertekster, er i seg sjøl grunn nok til å laste ned f.eks. Battlestar Galactica fra piratebay, i stedet for å se det på nrk.
Jeg stemmer også for JSON(P), slik at man lett kan utnytte ressursene til NRK på klientsida i webapplikasjoner.
evenv (Even Vinge)
@alftrya Det er nettopp sånt som er veldig vanskelig nå, og grunnen til at vi venter i spenning på API bit.ly/7FJZ
unhammer
+1. Integrering mot slikt som Boxee/xbmc ville vært fantastisk
Audun Vaaler
NRKs egenproduserte og allerede sendte TV- og radioprogrammer er viktigst. De bør publiseres i åpne formater, og på en måte som gjør det lett å linke til både vilkårlige punkter og utdrag (gjerne vha. en Annodex-basert notasjon). Da blir det lett å både vise til, diskutere og annotere materialet.
Lov samtidig at adressene til klippene aldri vil forandre uten at det blir satt opp fungerende redirects, så kan vi bidra med både verdifull aktivitet og metadata, uten å bekymre oss om at det vi legger til vil gå tapt 🙂
Andreas Munkelien
Vi må se på rettigheter, både i forhold til egenproduksjon og innkjøpt innhold. Vi håper å kunne dele så mye som mulig.
Vi satser på å standardisere på en oppbygging av url'er til alle tjenestene vi legger ut, for å holde disse permanente fremover. Vi kommer evt til å gjøre en versjonering i url'en.
Are Akselsen
Det kunne vært interessant å gjøre all informasjon NRK sitter på tilgjengelig som "linked data", og slik være fritt tilgjengelig til utallige uforutsette formål. Ref. Tim Berners-Lee, "nettets far" som her snakker om det neste steget i nettets utvikling: ted.com/index.php/talks/tim_berners_le…
Andreas Munkelien
Hei Henrik!
I første omgang ser vi på RSS og Atom, men er åpen for å vurdere JSON også. Vi må se dette litt i forhold til hva som er hensiktsmessig og i forbindelse med ressurser.
henriklied (NRK)
Hei, Andreas!
Serialisering av objekter til JSON i Java er så vidt eg veit ganske enkelt, og med tanke på kor stor breidde det ser ut til å bli på dei forskjellige tjenestene skal ein ikkje sjå vekk i frå at det er mange som er interesserte i å bygge mashups som bruker APIen ekstensivt.
Da er det veldig flott at JSON kan pluggast direkte inn i JavaScript og brukast som native objekter. Det er slettes ikkje like enkelt å parse XML, verken i JavaScript eller dei fleste andre språk, som JSON.
Ein annan ting er at RSS og Atom (sjå vekk i frå Atom Publishing Protocol i denne kommentaren) stort sett er egna til å gi oppdateringer til brukaren, og er ikkje like fleksible for spesifikke spørringer som eit generisk XML- eller JSON-dokument kan vere.
Så ja, mi stemme går iallfall til JSON. 🙂
Håvard
Jeg kan nesten ikke vente på at dere legger ut en slik API, slik at det endelig blir mulig å skrive en stabil plugin til XBMC som jeg bruker. Forhåpentligvis legger dere ut spesifikasjon/deler av dette tidlig slik at det går an å starte pluginutvikling til XBMC raskt.
Bjørn Sandvik
Ønsker å kunne embedde enkeltreportasjer fra URIX på vårt interaktive verdensatlas: Globalis.no
Magnus
Noe NRK bør få til når en slik API blir tilgjengelig er å sørge for at videoene det lenkes til ikke inneholder halvparten av forrige program, og hallodamen og alt det der. Det bør jo være mulig å bare legge ut programmet uten å måtte ta det opp fra direktesendt fjernsyn.
Jan Hammershaug
Er spent på om det har skjedd noe med NRK’s API, nå snart 9 måneder etter at artikkelen ble publisert? Håper ikke finanskrise og Melodi Grand Prix har medført stopp i all utvikling:)
Tenker spesielt på NRK nett-TV. Grunnen er en henvendelse fra en kompis, som har store problemer med å få sett nett-TV. Har ikke sjekket dette, men vet at han er en erfaren nettbruker, selv om han ikke kjenner stort til teknologien som ligger bak. Han hadde siste versjon av Flip4Mac på en G5 iMac. All programvare oppdatert, og han hadde prøvd Silverlight.
Som sagt, jeg vet ikke hva årsaken kan være i dette enkeltstående tilfellet, men noe sier meg at det er mange der ute som sliter med det samme. Brukere med langt mindre kompetanse enn nevnte kompis. Og de bruker vel gjerne Mac..
Morten
Vil bare henge meg på Jan. Jeg har ofte problemer med nett-TV. Bruker Win XP og Chrome til vanlig, men har også problemer med andre nettlesere. Jeg har aldri fått de tre livestrømmene til å fungere. Kan det være fordi jeg er i utlandet?
Det er blitt etterspurt direktestrømmer slik at man kan bruke for eksempel VLC til å se NRK. Hva er grunnen til at dere ikke vil tilby det?
Hva med å gjøre det enkelt å embedde klipp fra NRK? Se feks hvordan amerikanske tv-kanaler lar deg klippe akkurat den sekvensen man vil ha, og så dele på egen blogg etc.
I mine øyne burde nett-TV-(og radio)-løsningen være hvor ALLE nett-ressursene til NRK blir brukt for å få opp en fantastisk løsning. Deretter kunne dere lage en nettavis og fin forside etc for å konkurrere med andre nettaviser. Det virker nesten som om det er omvendt prioritering sålangt.
Andreas Munkelien
Vi har fremdeles API’et vårt i pipeline, men har måtte prioritere litt anderledes siden sist innlegg.
Vi har veldig høye ambisjoner og begrensede ressurser, så vi har valgt og prioritere prosjekter som er mest synlig for publikum. Det gjør at vi ikke får lansert API tjenesten vår før den er resultat av et behov vi fyller for publikum. Når jeg skrev om denne tidligere, så lå dette an til å skje i løpet av sommeren, men endrede prioriteringer har gjort at vi ikke har fått jobbet så rettet med tjenesten.
Slik det ser ut nå så blir programinformasjon det første vi kan gå ut med, men tidspunktet er fremdeles noe vagt.
Synes forøvrig det er helt supert med alle innspill, tanker og meninger her.
Mvh
Andreas
VictorV
Håvard: Jeg har brukt mye tid på å lage, det som nå har blitt, en ganske omfattende plugin for NRK til XBMC.
xbmc.org/forum/showthread.php?t=52824
Nå avhenger den jo av at NRK ikke skifter struktur på siden, men den er laget for litt fleksibilitet.
Oddstr13
skjer det noe med apiet eller?
stemmer for JSON – fordi det er enkelt å jobbe med i python
#1 Programmgiude – hva går på nrk1 nå? hva er neste program? når starter det? hvor lenge varer det?
#2 Spillelister – hva ble spillt i urørtsendingen? link til artisten/sangen. hvilken musikk var det som ble spillt i filmpolitiet i dag?
#3 Nettradio – hva blir spillt nå?(gjerne inkludert i streamen)
Ronny-André Bendiksen
Stemmer også for JSON. Mye mindre overhead enn XML, raskere å overføre, begynner også å bli utbredt. Enklere å jobbe med f.eks. fra og til JS også.
Eirik
Det begynner å bli en stund siden vi hørte noe fra dette prosjektet.
Skjer det noe?
Åpner det neste mandag?
Er det lagt på hylla?
Andreas Åkre Solberg
Hadde vært stilig med JSON av TV programguide.
Erling Brandvik
Hei.
Er det skjedd noe nytt med API-prosjektet?
Ser at tv.nrk.no benytter seg av noen JSON-objekter:
tv.nrk.no/listobjects/mostpopularbycategory/Unknown/barn.json/page/0
tv.nrk.no/listobjects/mostpopularbycategory/Week/nyheter.json/page/0
tv.nrk.no/listobjects/mostpopular/Week.json/page/0
Spørsmålet mitt er om det finnes et «mønster» i url-ene? Går det an å få en
liste over hva som er tilgjengelig? Finnes det JSON-objekter med mer
informasjon om programmene og med link til høyoppløselige programbilder?
Spent på hva som er tilgjengelig/kommer 🙂
Eirik
Godt spotta!
Munkelien: Kan vi få dokumentasjonen på dette ut?
Erling
Ja, skulle gjerne hatt et svar her Munkelien. Har jobbet med en plugin til Plex, men den blir fort ustabil ved endringer på tv.nrk.no.
Skjønner at prosjekter som er synlige utad blir prioritert, men vil jo tro at et stabilt API kan være veldig nyttig til intern bruk også.
Kenneth H
Kult å se dere jobber med andre metoder å framstille nyheter på!
Hva skjedde med API-et[0] dere jobbet på for noen år siden forøvrig? Jeg har noen ideer til alternative måter å presentere nyheter på selv, og skulle gjerne hatt et API å jobbe på, istedet for å scrape nettsiden deres.
[0]: nrkbeta.no/2009/03/19/hva-skjer-saa-med-nrks-api/
–Kenneth
Andreas Munkelien
Hei!
Takk for interessen rund API’er i NRK.
Siden jeg skrev artikkelen har vi endret litt kurs på våre priortieringer og vi har mer eller mindre de samme tanker om å tilgjengeliggjøre disse som tidligere, men det vil ta tid.
Vi har prioritert utvikling av nrk.no/tv og nrk.no/radio og andre nrk.no tjenester. Når vi utvider med flere åpne api’er kommer vil tilbake med mer informasjon
Tilgjengelige API’er er blant annet disse:
om.dit.no/api/
om.yr.no/verdata/
nrk.no/rss/
Mvh
Andreas
Erling
Hei Andreas og takk for svar.
Hadde det vært mulig for en stakkars plugin-utvikler å få en oversikt over de URL-ene jeg refererer til i min første kommentar? 😉 De er suverene å bruke i stedenfor å scrape nettsidene.
Erling
Erling Brandvik
Ai ai!! v7.psapi.nrk.no/
John Korsnes
Hei Erling,
Bra observert 🙂 Dette er endepunkter som bl.a. nrk.no (video i nyhetsartikler) og mobil-applikasjonene våre benytter for å hente meta-data om programmer.
– Utvikler i tv.nrk.no-teamet
Erling
Veldig bra! Håper det forblir åpent 🙂 Er det planer om utvidelser? Utlisting av programmer, serier, sesonger etc.?
John Korsnes
De endepunktene på v7 forblir nok åpne ja, iogmed at en del av løsningene her i NRK er direkte avhengige av at de er nettopp det. Får svare litt forventningsstyringsmessig angående utvidelser at «det ikke er umulig» ;). For å være helt ærlig, så har vi en liten vei å gå opp for å få til et stabilt API som kan være for alle, men det må jo være målsetningen – helt klart.
Har du et Github-repo på plex-plugin’en jeg kan følge med på?
Erling
github.com/eithe/NRKTV.bundle
Erling
Helt supert at dere er på vei 🙂 Kanonjobb dere gjør!
Er et felt jeg savner i de endepunktene jeg har funnet, er «description». Eks.: tv.nrk.no/listobjects/indexelements/barn/page/0.
I v7-API’et ligger det jo description, men for å få beskrivelse på elementene ved utlisting er jeg nødt til å gjøre et ekstra kall …. noe som genererer mye unødvendig trafikk og gjør plugin’en for treg. Kutter det derfor ut i dag.
Erling
Hei igjen.
Har du noen eksempler på bruk av tv.nrk.no/mediaelementgroup/{id}? Hva er ID-en her?
Erling
Mente jo selvfølgelig v7.psapi.nrk.no/mediaelementgroup/{id}
John Korsnes
Hei Erling, medieelementgroup er et endepunkt som er på vei ut av APIet. Det er ikke lenger i bruk idag.
Lasse Klein
Takk for at dere legger ut dette!
Jeg har laget en liten barnetv-side til eget bruk fordi små barn navigerer mer visuelt og ikke har noe forhold til alfabetisering som dagens barnetv-sider legger opp til. Denne sorterer programmer etter popularitet og episoder innenfor hvert program etter publiseringsdato.
alieninnovation.net/lk/nrk/barnetv.php
Har dere noen planer om å utvide dokumentasjonen? Det er ikke umiddelbart opplagt hvilken id api-et tar. Kan dere hjelpe meg med et eksempel på bruk av denne for et enkeltprogram i en serie? v7.psapi.nrk.no/mediaelement/{id}
Og finnes det et api-kall for å liste alle sesongene til et program?
John Korsnes
Hei Lasse,
Veldig kul visualisering av barneprogrammene! Brukergrensesnittet til tv.nrksuper.no er utformet spesielt med tanke på barn som brukere, men det kan nok sikkert justeres enda ytterligere. Sender det videre til våre interaksjonsdesignere som tips 🙂
APIet:
De endepunktene vi har i dag er rimelig skreddersydd våre interne behov i NRK – som idag er bl.a. å støtte nrk.no sine artikler med metadata om videoklipp. Dersom vi åpner opp APIet «for alle» bør god dokumentasjon være på plass, men også en struktur som ikke bare er logisk internt – men også eksterne behov. Som jeg nevnte til Erling lenger opp i tråden, så har vi noe å gå på dette.
Et eksempel på bruk av mediaelement-endepunktet:
– På tv.nrk.no finner man ID’en til en episode i URLen, f.eks. broen sesong 2, ep. 7 har ID kmte40001712. tv.nrk.no/serie/broen/kmte40001712/sesong-2/episode-7
– Mediaelement for denne episoden kan da hentes med samme ID slik: v7.psapi.nrk.no/mediaelement/kmte40001712
Det som finnes av API-endepunkter er de du finner på dokumentasjonsiden idag.
Håper det var til hjelp 🙂
Erling
Enig med John her, veldig bra visualisering av Barne-TV. Inn som ikon på pad’n 🙂
Lasse Klein
Det var hyggelig at du likte det! Barna hjemme er veldig begeistret, og treåringen ble helt selvhjulpen på iPaden etter at hun fikk denne versjonen.
Linken jeg sendte deg oppdaterer popularitet for alle som bruker siden, men denne løsningen fungerer helt klart best når man sorterer på popularitet for hver bruker som vi gjør hjemme med en privat url for siden.
Takk for forklaringen på id. Jeg ble litt lurt av at både id og sesong+episode brukes i url-en. Det blir mye greiere å forholde seg til api-et enn å måtte scrape sidene og være sårbar for designendringer.
Marius Huseby
Hei
Hvor finner jeg oppdatert api for NRK Nett TV?