C# - Twitch API Kullanımı
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.
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.