API'et er simpel read-only data i tekstformat. Hver linje repræsenterer et objekt og objekternes attributter er adskilt af en tabulator.
Kanalerne ændres ikke særlig tit, så her vil det være naturligt at cache dataene i en længere periode.
Eksempel: Kanallisten
Programmerne skal forespørges for hver kanal man vil hente programmer fra. Dvs. én forespørgsel pr. kanal.
Ved hjælp af kanal ID'erne fra kanallisten (ovenfor) konstrueres URL'en til kanalens programmer.
Det gøres ved at tilføje URL parametren "channelid" til forespørgslen. Du kan også tilføje parametren "days" for at angive hvor mange dages programliste der skal bruges (maks 7).
channelid [string] obligatorisk
days [int] optional
Eksempel: Eksempel på programlisten for DR1
Følgende kode er et eksempel på en C# programklasse og en metode til at downloade og parse data fra API'et.
public class Program
{
public DateTime Start;
public DateTime Stop;
public string Title;
public string Description;
public string Genre;
public Uri Trailer;
public Uri Image;
public Uri ImdbLink;
}
protected List<Program> DownloadAndParse()
{
List<Program> programs = new List<Program>();
using (System.Net.WebClient client = new System.Net.WebClient())
{
string raw = client.DownloadString("http://ifjernsyn.dk/api/v1/programs.ashx?channelid=dr1&days=1");
string[] rawProgram = raw.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in rawProgram)
{
string[] attr = line.Split('\t');
Program p = new Program()
{
Start = DateTime.Parse(attr[0]),
Stop = DateTime.Parse(attr[1]),
Title = attr[2],
Description = attr[3],
Genre = attr[4],
Trailer = !string.IsNullOrEmpty(attr[5]) ? new Uri(attr[5]) : null,
Image = !string.IsNullOrEmpty(attr[6]) ? new Uri(attr[6]) : null,
ImdbLink = !string.IsNullOrEmpty(attr[7]) ? new Uri(attr[7]) : null
};
programs.Add(p);
}
return programs;
}
}