
如何使用Route Optimization API優化配送路線
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])}")
示例來源:
值得注意的是,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)
本節將演示一個實際應用:獲取《CS:GO》玩家的成就數據并計算完成率。
730
。GetUserStatsForGame
接口。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}")
直接使用 requests
調用 API 很靈活,但對于復雜的項目,使用封裝好的第三方庫可以提高開發效率。
steam
庫:功能強大,支持用戶數據抓取和自動化操作。from steam.client import SteamClient
client = SteamClient()
client.cli_login() # 交互式登錄
steam-webapi
庫:簡化了 Web API 的請求過程。import os
api_key = os.environ.get('STEAM_API_KEY')
Steam 對免費 API Key 有每日 10 萬次調用的頻率限制。 超出限制可能會導致臨時或永久性的封禁。對于大型項目,應合理設計請求邏輯,避免不必要的調用,并在代碼中加入適當的延遲。如果需要更高的限制,需要聯系 Valve 申請擴容。
網絡請求總會遇到各種問題,良好的代碼必須包含錯誤處理。
response.raise_for_status()
。error
字段。tenacity
等庫實現重試。Steam 數據受到 Steamworks 協議的約束。
Steam API是一個功能強大的工具,它為開發者打開了通往 Steam 龐大生態數據的大門。從獲取個人游戲成就到分析整個商店的趨勢,可能性是無限的。
成功集成 Steam API 的關鍵在于:
希望這篇指南能為你開始使用 Steam API 提供一個堅實的起點。無論是構建炫酷的玩家數據看板,還是開發下一款熱門的游戲輔助工具,現在你都有了基礎知識。祝你編碼愉快!