#この記事で紹介する範囲
・無料チャンプの表示
・試合の情報を抜き出す
・名前を変更しているプレイヤーが昔どのような名前を使っていたのか調べる
#環境
php 5.6.40
#無料チャンプの表示
2018年6月30日からlol-static-data-v3が非推奨というか削除されました
これによってDDragonからデータ取得をする手間が増えました
以下のサイトで紹介されています
https://www.utakata.work/entry/20180811/1533996560
なのでCHAMPION-V3で無料チャンプのIDを取得し、DDragonで紐づけることが必要になります
//自分のIDで取得したAPIkeyを入れてください
$key="*********************************";
//DDragonからチャンプの名前を取得
$json= json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/6.24.1/data/ja_JP/champion.json'), true);
//無料チャンプのID取得
$free=json_decode(file_get_contents('https://jp1.api.riotgames.com/lol/platform/v3/champion-rotations'.'?api_key='.$key), true);
//無料チャンプのIDと名前を紐づけ
$freechamp=$free['freeChampionIds'];
foreach($json['data'] as $key => $value){
foreach($freechamp as $value){
if($json['data'][$key]['key']==$value){
//画像データもDDragonにあります
print '<image src="http://ddragon.leagueoflegends.com/cdn/6.24.1/img/champion/'.$key.'.png" width="50" height="50"></image>';
};
}
}
?>
#試合の情報を抜き出す
抜き出すといっても色々あると思うのですが、ここでは何時プレイしたのか、勝敗、ロール、使用チャンプを出すことにします
あとほかのサイトでも紹介されているプロフィールアイコン、配属グループ名、Tier、勝敗数などもついでに出します
<?php
$apikey="RGAPI-2731064c-c779-4026-8f7f-2242da54d8f7";
session_start();
if(isset($_POST['submit'])){
$_SESSION['NAME']= $_POST['username'];
}
if(!preg_match('/exist/',$_SESSION['joutai'])){
$json = json_decode(file_get_contents('https://jp1.api.riotgames.com/lol/summoner/v4/summoners/by-name/'.$_SESSION['NAME'].'?api_key='.$apikey), true);
//ほしい情報をjsonから引き出す
$_SESSION['icon'] = $json["profileIconId"];
$_SESSION['TNAME'] = $json['name'];
$_SESSION['level'] = $json['summonerLevel'];
$_SESSION['id'] = $json['id'];
$_SESSION['accountId']=$json['accountId'];
//ランクの情報 tier、グループ、LP、勝敗数、divison、
$json = json_decode(file_get_contents('https://jp1.api.riotgames.com/lol/league/v4/positions/by-summoner/' . $_SESSION['id'] . '?api_key='.$apikey), true);
$_SESSION['LP']=$json[0]['leaguePoints'];
$_SESSION['division']=$json[0]['rank'];
$_SESSION['losses']=$json[0]['losses'];
$_SESSION['wins']=$json[0]['wins'];
$_SESSION['tier']=$json[0]['tier'];
$_SESSION['name1'] = $json[0]['leagueName'];//テーモのつけた名前
$_SESSION['tierD'] = $json[0]['tier'];
}
?>
<?php print '<image src="http://ddragon.leagueoflegends.com/cdn/6.24.1/img/profileicon/'.$_SESSION['icon'].'.png" width="100px"></image>'; ?>
<p><span style="font-weight : bold"><?php echo $_SESSION['TNAME']; ?></span></p>
サモナーレベル:<?php echo $_SESSION['level']; ?>
</li>
</ul>
<ul class="products">
<li>
<?php
if(!empty($_SESSION['tierD'])){
print '<image src="../img/'.$_SESSION['tier'].$_SESSION['division'].'.png"width="100px"></image>';
print $_SESSION['tierD'].$_SESSION['division'].'<br>';
print $_SESSION['LP'].'LP';
print '<font color="#999999"> / </font>';
print '<font color="#999999">'.$_SESSION['wins'].'勝</font>';
print '<font color="#999999">'.$_SESSION['losses'].'敗</font><br>';
$syouritu = number_format($_SESSION['wins']/($_SESSION['wins']+$_SESSION['losses']),2)*100;
print '<font color="#999999">勝率'.$syouritu.'%</font><br>';
print '<font color="#999999">'.$_SESSION['name1'].'</font>';
}else{
print '<image src="../img/unrank.png"width="100px"></image>';
print '<br>';
print '<br>';
echo 'Unrank';
}
?>
</li>
</ul>
</div>
<?php
$aa=1;
//timestanp
$json = json_decode(file_get_contents('https://jp1.api.riotgames.com/lol/match/v4/matchlists/by-account/' . $_SESSION['accountId'] . '?api_key='.$apikey), true);
$json1= json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/6.24.1/data/ja_JP/champion.json'), true);
$test=$json['matches'];
foreach($test as $key => $value){
if($value['queue']=='420'){
$syori = "1";
}else{
$syori="0";
}
if($syori=="1"){
date_default_timezone_set('Asia/Tokyo');
$timestamp = time();
$tmp = substr($value['timestamp'],0,10);
echo "プレイ日時:";
echo date('Y年m月d日H時i分s秒',$tmp);
echo '<br>';
echo "Role:";
echo $value["lane"];
echo '<br>';
echo "使用チャンプ:";
foreach($json1['data'] as $key1 => $value1){
if($json1['data'][$key1]['key']==$value["champion"]){
echo $json1['data'][$key1]['name'];
}
}
echo '<br>';
echo "matchID:";
echo $value["gameId"];
echo '<br>';
$participantId="";
$json2 = json_decode(file_get_contents('https://jp1.api.riotgames.com/lol/match/v4/matches/'. $value["gameId"] .'?api_key='.$apikey), true);
foreach($json2['participantIdentities'] as $key2 => $value2){
if($json2['participantIdentities'][$key2]['player']['summonerName'] == $_SESSION['NAME']){
$participantId = $json2['participantIdentities'][$key2]['participantId'];
}
}
if($participantId<=5){
if($json2['teams'][0]['win']=="Win"){
echo "勝利";
echo "<br>";
}else{
echo "敗北";
echo "<br>";
}
}else{
if($json2['teams'][1]['win']=="win"){
echo "勝利";
echo "<br>";
}else{
echo "敗北";
echo "<br>";
}
}
echo "<hr>";
if($aa==5){
break;
}
$aa++;
}
}
?>
実行結果
サモナーは配信で有名なスタンミジャパンさんにしてみましたが、無事取れてるはず
試合がどういった風に行われていたかを知りたい場合は
/lol/match/v4/timelines/by-match/{matchId}
上記を叩けばでるのでやってみてください
#名前を変更しているプレイヤーが昔どのような名前を使っていたのか調べる
需要があれば