0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Steamで販売したゲームのGlobalStatsをPythonで集計する

Last updated at Posted at 2024-12-14

■はじめに

この記事では、みなさんが作成したゲームで設定しているStat(集計のチェックを入れたもの)をPythonで加算集計してみます。
マーケティング等でStatの値を見たい場合に有効かと思います。

集計のチェックを入れていないStatに関してはGlobalStatとして取得できないので、注意して下さい。
Check.png

■ドキュメント

■コード

API_KEY = 'ここ' # <=(*1)ここに皆さん個人のSteamのWebAPIキーを入れる
APP_ID = 'ここ'  # <=ここに皆さんの作成したSteamゲームのAppIDを入れる
STAT_NAMES = ['ここ1', 'ここ2']  # <=ここに取得したいstatのキーを1個以上入れる。

def get_global_stats(app_id, stat_names, api_key):
    try:
        # 複数のstatをリクエストするためにname[0], name[1], ... を作成
        names_param = '&'.join([f'name[{i}]={stat}' for i, stat in enumerate(stat_names)])
        url = f"https://api.steampowered.com/ISteamUserStats/GetGlobalStatsForGame/v1/?appid={app_id}&count={len(stat_names)}&{names_param}&key={api_key}"
        
        # リクエストのURLを表示して、正しく作成されているか確認
        print(f"APIリクエストURL: {url}")

        response = requests.get(url)
        
        # ステータスコードとレスポンスを出力
        print(f"ステータスコード: {response.status_code}")
        print(f"レスポンス: {response.text}")  # JSON形式でない場合のために.textを使う

        if response.status_code == 200:
            data = response.json()  # JSON形式のデータを解析
            
            # 結果を返す(globalstats から値を取得)
            if 'response' in data and 'globalstats' in data['response']:
                return data['response']['globalstats']
            else:
                print("統計データが見つかりませんか、フォーマットが異なります")
        else:
            print(f"APIリクエストが失敗しました: {response.status_code}")
    except Exception as e:
        print(f"例外が発生しました: {e}")
    return None

def main():
    stats = get_global_stats(APP_ID, STAT_NAMES, API_KEY)
    if stats:
        # 複数のstatをループで表示
        for stat_name in STAT_NAMES:
            if stat_name in stats:
                # データが空でないか確認
                if 'total' in stats[stat_name]:
                    print(f"現在の {stat_name}: {stats[stat_name]['total']}")
                else:
                    print(f"{stat_name} のデータが存在しません(空のレスポンス)")
            else:
                print(f"{stat_name} のデータが見つかりません")

if __name__ == "__main__":
    main()

(*1)個人のSteamWEBAPIキーです。
まだWebAPIキーを取得していない場合は以下から取得できます。
http://steamcommunity.com/dev/apikey

■実行

上記をテキストファイル等に書き、そのファイルの拡張子を.pyにした後、コマンドプロンプト等から実行すれば確認できます。

■その他できることがまとめられている記事

■以上

コーヒーに合う電子タバコがあればいいのに、と思いながらなんとなく買ったセッターのメンソールは冬に呑むと寒い。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?