2014/12/06

Riot API: プロフィールアイコンの取得

この記事はRiot APIのAdvent Calendarの6日目の投稿です。

Riot APIで取得できるJSONデータをみるとなんかワクワクして、LOLKingなどMobafireみたいなかっこいいサイト作りたくなりますよね?
でももちろん、ウェブサイトを作った場合に、最新のアイコンなどの画像も必要になりますので、今回はPythonをつかって自分のプロフィールアイコンのurlを取得するところまでデモしたいと思います。

Riot Gamesのアセット・リポジトリはData Dragonというサービスに通じてアクセスできます。
Riot APIと別のチームが管理しているらしいので、アップデート直後にData Dragonへの反映が遅れたり、 データーが一致しない可能性もありますが、それでも最新の画像の取得には一番便利なツールになります。

ではプロフィールアイコンの取得をやりましょう

1) バージョン取得

画像データーはバッチでアップロードされていて、一番最初にダウンロードしたい画像のバージョンを取得する必要があります。 自分のアカウントはNorth Americaサーバーにありますので、naのjsonフィードを使います。

# datadragon.py
import requests    # pip install requests

DD_URL = 'http://ddragon.leagueoflegends.com'

version_path = '/realms/na.json'
res = requests.get(DD_URL + version_path)
res.raise_for_status()      # catch non 2xx status

print(res.text)
  

プリントの結果はこんな感じです:


{"n":{"item":"4.20.1","rune":"4.17.1","mastery":"4.17.1","summoner":"4.20.1","champion":"4.20.1",            "profileicon":"4.20.1","language":"4.20.1"},"v":"4.20.1","l":"en_US","cdn":"http:\/\/ddragon.leagueoflegends.  com\/cdn","dd":"4.17.1","lg":"0.152.55","css":"0.152.55","profileiconmax":28,"store":null}
  

今回はプロフィールアイコンのバージョンが取得したいと思いますので、こういうふうにprofileiconのバージョン番号だけ取得しましょう:


version = res.json()['n']['profileicon']
  

2) 自分のプロフィールアイコンIDを取得

次に自分のプロフィールアイコンIDを取得します。今回はデータードラゴンじゃなくて、通常のRiotAPIを使いましょう。


API_URL = 'https://na.api.pvp.net/api/lol/na'
summoner_by_name_path = "/summoner/by-name/laouji";
profile_url = API_URL + "/v1.4" + summoner_by_name_path + "?api_key=" + API_KEY

res = requests.get(profile_url)
res.raise_for_status()
 

res.textの中身を確認すると:


"laouji":{"id":46048341,"name":"laouji","profileIconId":607,"summonerLevel":23,"revisionDate":1411808085000}}
 

3)画像のURLを組み合わせる

APIコールの結果に必要なprofileIconIdありましたので、画像のurlを組み合わせるのが簡単です:


def icon_url ( version, icon_id ):
    url = DD_URL + '/cdn/' + version + '/img/profileicon/' + str(icon_id) + '.png'
    return url

icon_id = res.json()['laouji']['profileIconId']
icon_url = icon_url(version, icon_id)
 

自分の場合はこれでした:

No comments:

Post a Comment