ifjernsyn's TV-guide API (beta)

Format

API'et er simpel read-only data i tekstformat. Hver linje repræsenterer et objekt og objekternes attributter er adskilt af en tabulator.

  1. Download kanal- eller programlisterne (se nedenfor)
  2. Split indholdet på \n\r eller Environment.NewLine i .NET for at adskille objekterne
  3. Split igen på \t for at adskille attributterne

Kanaler

Kanalerne ændres ikke særlig tit, så her vil det være naturligt at cache dataene i en længere periode.

Eksempel: Kanallisten

Programmer

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

Kode

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;
        }
    }


Forside