Steam の API使ってみた

こんにちは。ゲーミングおっさん芦刈です。
最近、とあるメーカーの7色に光るLEDを搭載した無線ヘッドセットを愛用してます。

コロナ事情によって外出の自粛が進み、昨今のゲーム市場は拡大の推移をしているということで、皆さんの中にもゲームを趣味にする方が増えたのではないでしょうか。
近頃は昔懐かしいスーパーファミコンやプレイステーションのような専用ハードだけではなく、PC向けゲームとしてSteam などのクラウドプラットフォームが発展しておりますね。
それに伴いインディーズメーカー、開発者もどんどん新しいゲームを出しており、タイトル数がどんどん増えているため自分にあったゲームを探すのが難しくなってきていると思います。
特にSteamはセールや突発的なディスカウントもあるため、安く手に入れようと思ったら定期的にチェックして値段を追う必要があったりもします。
私はずぼらなので、いちいちSteamに2段階認証でログインし、上から下までウィッシュリストを確認するなんて作業ができません。

そこで今回はSteamの(非公式)APIを利用して、一発で値段が下がってるゲームの情報を取得するプログラムを作ってみました。
(;´Д`)o0(会社のブログでこんな記事やると怒られそうですが...)
実際に作ったものは下記になります。

import json
import requests

# リクエスト先 情報
url = 'http://store.steampowered.com/api/appdetails?l=ja'
# 出力時のフォーマット
output = "タイトル:{0}\r\n\t価格:{1}\r\n\t割引前価格:{2}\r\n\t割引率:{3}%"
# 対象タイトルのid
ids = ["1245620","547140","1859280","739630","1222140"]

for id in ids:
    # 価格情報の取得
    response = requests.get(url + '&appids=' + id)
    # レスポンスを表示する
    if not response.status_code == 200:
        print("Request Error: ",response.status_code)
    else:
        # json 形式に parse
        data = json.loads(response.text)
        if not data[id]["data"]["price_overview"]["discount_percent"] == 0:
            print(output.format(data[id]["data"]["name"],
            data[id]["data"]["price_overview"]["final_formatted"],
            data[id]["data"]["price_overview"]["initial_formatted"],
            data[id]["data"]["price_overview"]["discount_percent"]))

また、本記事公開時点での出力結果は下記になります。

$ python3 request.py
タイトル:Detroit: Become Human
        価格:¥ 1,995
        割引前価格:¥ 3,990
        割引率:50%

リクエスト先のurl については、Steam クライアントアプリのBig Picture mode で使われているものを有志の方が解析したもので、Steam Web API 等のように公式に公開されているものではありません。公式のAPIはゲームの開発・販売者向けなので、あくまで情報を参照するためだけに使おうとするとイマイチなものが多いんですよね。
簡易的なリファレンスはここにあります。
いつか使えなくなるかもしれませんが、しばらくはこれで確認しようと思います。
Slack に自動投稿するようにするといいですよね。