Twitch'deki yayınlar, kanallar ya da kullanıcılar hakkında anlık bilgi edinebileceğimiz bir API'si var. Bu yazıda bunu kullanarak verilen kanal adına göre yayıncının o anda online olup olmadığını kontrol eden basit bir program yazacağız.

C# - Twitch API Kullanımı
Örnek için hazırladığım form.

API adresi şurada. Adresin channels parametresine kanal adını verdiğimizde o kanala ait bilgiler önümüze geliyor. Json formatındaki verinin içindeki _total değeri kanalın o anda yayında olmadığını söylüyor. Eğer 1 ise online, 0 ise offline demektir.

Kanala Ait Verileri Getirme

API adresinden veriyi almak için WebClient nesnesi kullanacağız. Önce bunun için projemize gerekli isim uzayını dahil edelim.

using System.Net;

Ardından GetTwitchData isimli bir method oluşturduktan sonra DownloadString methodundan gelen veriyi döndürelim. Bu veri -birazdan çözümleyeceğimiz- Json formatında olacaktır.

private string GetTwitchData(string channel)
{
    WebClient webClient = new WebClient();
    return webClient.DownloadString("https://api.twitch.tv/kraken/streams?channel=" + channel);
}

Dönen Veriyi Çözümleme

Json verisini C# içinde çözümleyebilmek için Json.NET paketini kurmamız gerekiyor. Bunun için Tools menüsünden NuGet Package Manager > Package Manager Console diyerek NuGet konsolunu açıp Install-Package Newtonsoft.Json komutunu verelim. Birkaç saniye içerisinde kurulmuş olacaktır. Ardından aşağıdaki gibi projeye dahil edelim.

using Newtonsoft.Json.Linq;

Ardından parametre olarak verilen veriyi parse edip içindeki _total değerini döndüren bir method yazalım.

private string ParseJsonData(string data)
{
    JObject jsonObject = JObject.Parse(data);
    return jsonObject["_total"].ToString();
}

Son olarak yazdığımız iki methodu kullanacak olan IsChannelOnline methodunu yazalım. Bize kanalın yayında olup olmadığını (true/false) söyleyecek.

private bool IsChannelOnline(string channel)
{
    string data = GetTwitchData(channel);
    return ParseJsonData(data).Equals("1");
}

İşte bu kadar. Artık sadece aldığımız cevaba göre label2 metnini düzenlemek kaldı. O da şöyle;

private void button1_Click(object sender, EventArgs e)
{
    if (IsChannelOnline(textBox1.Text))
    {
        label2.Text = "Yayında";
    }
    else
    {
        label2.Text = "Kapalı";
    }
}

Bu en basit örnekti. Bunun dışında yayıncının hangi oyunu oynadığını, kaç izleyicisinin olduğunu, hangi çözünürlükte ya da kaç FPS ile yayın yaptığını vs. öğrenebilirsiniz.

Daha ayrıntılı bilgi için GitHub reposuna bakabilir ya da TwitchApiExample1.rar linkinden örnek projeyi indirebilirsiniz.