api_key = "YOUR_API_KEY"
steam_id = "76561197960435530" # 64位的Steam ID
url = f"https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key={api_key}&steamids={steam_id}"
response = requests.get(url)
data = response.json()
print(data)

3.2 游戲數據與商店接口

params = {
"key": "YOUR_API_KEY",
"steamid": "玩家SteamID",
"appid": 730 # CS:GO 的 AppID
}
response = requests.get("https://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v2/", params=params)
achievements = response.json()['playerstats']['achievements']
print(f"已完成成就數:{len([a for a in achievements if a['achieved'] == 1])}")

示例來源:

3.3 商店信息接口(非官方但重要)

值得注意的是,Steam 商店數據(如游戲詳情、價格)通常不通過標準的 Web API 獲取,而是使用 Storefront API。這是一個被 Steam 商店自身使用的非官方接口,但穩定且強大。

def get_game_details(app_id):
url = f"https://store.steampowered.com/api/appdetails?appids={app_id}"
response = requests.get(url)
data = response.json()
if data[str(app_id)]['success']:
game_data = data[str(app_id)]['data']
name = game_data['name']
description = game_data['short_description']
# 處理價格信息
if 'price_overview' in game_data:
price = game_data['price_overview']['final_formatted']
else:
price = 'Free' if game_data['is_free'] else 'Price not available'
return {'name': name, 'description': description, 'price': price}
else:
return 'Details not found'

game_info = get_game_details(271590) # 使用《GTA V》的 AppID 進行測試
print(game_info)

4. 實戰案例:獲取并分析游戲成就數據

本節將演示一個實際應用:獲取《CS:GO》玩家的成就數據并計算完成率。

步驟:

  1. 確認 AppID:《CS:GO》的 AppID 是 730
  2. 調用接口:使用 GetUserStatsForGame 接口。
  3. 處理數據:解析返回的 JSON 數據,篩選出已完成的成就。
  4. 分析展示:使用 pandas 庫進行簡單的統計分析。
import requests
import pandas as pd

# 設置請求參數
api_key = "YOUR_API_KEY"
steam_id = "TARGET_STEAM_ID" # 目標玩家的 Steam ID
app_id = 730 # CS:GO 的 AppID

params = {
"key": api_key,
"steamid": steam_id,
"appid": app_id
}

# 發送請求并獲取成就數據
try:
response = requests.get("https://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v2/", params=params)
response.raise_for_status() # 檢查請求是否成功
data = response.json()
achievements = data['playerstats']['achievements']

# 將數據轉換為 DataFrame
df = pd.DataFrame(achievements)
df['achieved'] = df['achieved'].astype(bool) # 將 achieved 轉換為布爾值

# 計算成就完成率
total_achievements = len(df)
achieved_count = df['achieved'].sum()
achievement_rate = (achieved_count / total_achievements) * 100

print(f"總成就數: {total_achievements}")
print(f"已完成成就: {achieved_count}")
print(f"成就完成率: {achievement_rate:.2f}%")

# 可以進一步分析每個成就的獲取情況
# ...

except requests.exceptions.RequestException as e:
print(f"請求出錯: {e}")
except KeyError as e:
print(f"解析響應數據出錯: {e}")

5. 第三方庫與工具

直接使用 requests 調用 API 很靈活,但對于復雜的項目,使用封裝好的第三方庫可以提高開發效率。

from steam.client import SteamClient
client = SteamClient()
client.cli_login() # 交互式登錄

6. 最佳實踐與注意事項

6.1 安全地管理 API Key

import os
api_key = os.environ.get('STEAM_API_KEY')

6.2 遵守速率限制

Steam 對免費 API Key 有每日 10 萬次調用的頻率限制。 超出限制可能會導致臨時或永久性的封禁。對于大型項目,應合理設計請求邏輯,避免不必要的調用,并在代碼中加入適當的延遲。如果需要更高的限制,需要聯系 Valve 申請擴容。

6.3 處理錯誤和異常

網絡請求總會遇到各種問題,良好的代碼必須包含錯誤處理。

6.4 尊重用戶隱私和數據使用協議

Steam 數據受到 Steamworks 協議的約束。

7. 總結

Steam API是一個功能強大的工具,它為開發者打開了通往 Steam 龐大生態數據的大門。從獲取個人游戲成就到分析整個商店的趨勢,可能性是無限的。

成功集成 Steam API 的關鍵在于:

  1. 正確地申請和保管你的 API Key。
  2. 理解不同接口的用途和參數,特別是官方 Web API 與非官方 Storefront API 的區別。
  3. 在代碼中遵循最佳實踐,包括錯誤處理、速率限制規避和安全管理密鑰。
  4. 嚴格遵守 Steam 的開發協議和隱私政策。

希望這篇指南能為你開始使用 Steam API 提供一個堅實的起點。無論是構建炫酷的玩家數據看板,還是開發下一款熱門的游戲輔助工具,現在你都有了基礎知識。祝你編碼愉快!

上一篇:

Duolingo API 使用指南:語言學習與智能應用的融合實踐

下一篇:

Alipay 跨境支付API集成指南:從原理到實踐
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費