Geceleri kafa dağıtmak için oynadığım moba türü bir oyundur League of Legends.
Elbette biz meraklı geliştiricileri de unutmamışlar ve bir api servisi hazırlamışlar.
Oynayanlar bilirler lolnexus.com diye bir site var.
Oyuna girdiğimizde rakibi tanımak için buradan yardım alıyoruz.
Peki biz kendimiz için bir lolnexus yazabilir miyiz?
Cevap: Evet.
Lol Apisi ile bu mümkün.
Çünkü bize istediğimiz her şeyi veriyor ????
Gelelim nasıl kullanacağımıza?
İlk olarak aşağıdaki adresten kayıt olun. Ya da oyuna kayıtlıysanız bilgileriniz ile giriş yapın.
https://developer.riotgames.com/
Daha sonra yine üstteki adrese girip bir api key oluşturun.
Benim ki: 100e40c0-9c5a-4464-81ea-bb23e7ba93fe
Ve orada yazıyı göreceksiniz 10 saniyede 10 istek gönderebilirsiniz. 10 dakikada 500 istek. Buna uymazsanız apiden bilgi alamazsınız ????
Api metodları
Lol’ün bize verdiği tüm metodlara aşağıdaki bağlantıdan ulaşabilirsiniz.
https://developer.riotgames.com/api/methods
Örnek: Lol Karakter Bilgisini Çekmek
Örneğin lol’deki üyeliğinizin bilgilerini çekelim. Karakter adınız, leveliniz ve simgenizi bir sayfada gösterelim.
Bunun için bağlanmam gereken link şu;
https://tr.api.pvp.net/api/lol/BOLGE_BURAYA/v1.4/summoner/by-name/KULLANICI_ADI_BURAYA?api_key=API_KEY_BURAYA
Şimdi sırayla koyu alanları açıklayalım;
BOLGE_BURAYA => Hangi serverda oynuyorsanız o gelmeli. Örneğin türkiye server’ı için TR gibi.
KULLANICI_ADI_BURAYA => Lol’e giriş yaparken ki kullanıcı adınız değil! Lol’deki karakter adınız olmalı.
API_KEY_BURAYA => Yukarıda aldığımız api keyimiz
Sonuç olarak bilgiyi döndürecek linkimiz şöyle oluyor;
https://tr.api.pvp.net/api/lol/TR/v1.4/summoner/by-name/erbilen?api_key=100e40c0-9c5a-4464-81ea-bb23e7ba93fe
Gördüğünüz gibi JSON formatında benim karakter bilgilerimi döndürdü.
En basit örneğimiz buydu. Bunu isterseniz jquery ile isterseniz php ile alıp kullanabilirsiniz. Örnek php kullanımı;
<?php $server = 'tr'; $username = strtolower('erbilen'); $api_key = '100e40c0-9c5a-4464-81ea-bb23e7ba93fe'; $url = 'https://tr.api.pvp.net/api/lol/' . $server . '/v1.4/summoner/by-name/' . rawurlencode($username) . '?api_key=' . $api_key; $open = file_get_contents($url); $data = json_decode($open, true); $user_data = $data[str_replace(' ', '', $username)]; // karakter simgesi $karakter_simge = 'http://ddragon.leagueoflegends.com/cdn/5.2.1/img/profileicon/' . $user_data['profileIconId'] . '.png'; // karakter adı $karakter_adi = $user_data['name']; // karakter seviyesi $karakter_level = $user_data['summonerLevel']; echo '<h3>'.$karakter_adi.' - '.$karakter_level.' Level</h3> <img src="'.$karakter_simge.'">';
Başka neler yapılabilir?
https://developer.riotgames.com/api/methods adresinde de göreceğiniz üzere bir çok bilgi alınabilir.
O an oynanan canlı maçın bilgileri şu linkten alınabilir;
https://tr.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/TR1/5663211?api_key=100e40c0-9c5a-4464-81ea-bb23e7ba93fe
Burada eğer ben oyundaysam bilgi döndürecektir. Onun dışında 404 ile karşılaşırsınız.
Bu linkte gördüğünüz gibi karakter adım değilde karakter id ile verileri çekiyorum. Karakter id’sine de yukarıdaki örnekte zaten ulaşmıştık.
Örnek: Karaktere ait oyun istatistikleri
Başka bir örnek daha yapalım. Örneğin karakterinize ait oyun istatistiklerine ulaşalım.
Unranked kaç maç kazanmış, dereceli kaç maç kazanmış. Kaç kişi öldürmüş, kaç minyon öldürmüş vs. gibi bilgiler.
Bunun için link yapımız aşağıda;
https://tr.api.pvp.net/api/lol/tr/v1.3/stats/by-summoner/5663211/summary?season=SEASON2015&api_key=100e40c0-9c5a-4464-81ea-bb23e7ba93fe
Bu link 2015 için geçerli. SEASON2015 yerine SEASON2014 yaparsak 2014 bilgilerim gelecek.
PHP ile yazdıralım bunları.
<?php header('Content-type: text/html; charset=utf8'); $api_key = '100e40c0-9c5a-4464-81ea-bb23e7ba93fe'; $sezon = 'SEASON2015'; $karakter_id = 5663211; // erbilen karakterinin idsi (benim karakter) $server = 'tr'; $url = 'https://tr.api.pvp.net/api/lol/' . $server . '/v1.3/stats/by-summoner/' . $karakter_id . '/summary?season=' . $sezon . '&api_key=' . $api_key; $open = file_get_contents($url); $data = json_decode($open, true); $istatistikler = $data['playerStatSummaries']; foreach ( $istatistikler as $istatistik ){ echo 'Oyun modu: ' . $istatistik['playerStatSummaryType'] . '<br />' . 'Kazanma: ' . $istatistik['wins'] . '<br />' . 'Şampiyon Öldürme: ' . $istatistik['aggregatedStats']['totalChampionKills'] . '<br />' . 'Minyon Katletme: ' . (isset($istatistik['aggregatedStats']['totalMinionKills']) ? $istatistik['aggregatedStats']['totalMinionKills'] : '-yok-') . '<br />' . '<hr/>'; } ?>
İpuçları
Şampiyon resimleri, karakter simgeleri, item resimler gibi görseller içinde api mevcut. Karakter simgesi için yukarıda bir örnek yapmıştık.
Tüm listeyi aşağıda vermeyeyim ancak tümüne şuradan ulaşabilirsiniz;
https://developer.riotgames.com/docs/static-data
İtem resimleri;
http://ddragon.leagueoflegends.com/cdn/5.2.1/img/item/1001.png
1001 – item numarası oluyor. Peki bu item numaralarını nereden öğreneceğiz?
Tabi ki şuradan: http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/item.json
Eğer çok karmaşık gözüküyorsa tarayıcınıza bir json view eklentisi kurmayı unutmayın!
Geri kalan her şey için geliştirici sayfasına bakmanız yeterli.
Hadi kolay gelsin.