一个用于导出 Steam 游戏库和愿望单信息的小工具。
本项目通过 Steam Web API 获取用户的游戏列表和愿望单列表,并可进一步从 Steam 商店页面补全游戏名称、类型、发售日期、价格、折扣、商店链接等信息。导出结果为 CSV 文件,方便后续查看、整理个人游戏档案,或者作为结构化数据交给 AI 分析。
- 获取 Steam 用户拥有的游戏列表
- 获取 Steam 愿望单列表
- 导出为 CSV 文件
- 获取游戏游玩时长:
- 总游玩时间
- 最近两周游玩时间
- 最后游玩时间
- 获取游戏成就完成情况:
- 已解锁成就数
- 总成就数
- 成就完成率
- 可补全 Steam 商店页信息:
- 游戏名称
- 类型
- 发售日期
- 是否免费
- 当前价格
- 原价
- 折扣力度
- 商店链接
- ...
- 可自定义排序方式
- 可选从本地 Steam 配置文件中补充部分 Steam API 未返回的 App,例如:
- 部分家庭共享游戏
- Demo
- 测试版
- 原声带
- 其他本地出现过的 Steam App
需要安装:
pip install requests pandas如果你想启用本地 localconfig.vdf 补充功能,还需要安装:
pip install vdf其中:
requests:用于请求 Steam Web API 和 Steam Store APIpandas:用于整理数据并导出 CSVvdf:仅用于读取本地 Steam 的localconfig.vdf文件;如果不使用本地补充功能,可以不安装
访问:https://steamcommunity.com/dev/apikey
登录你的 Steam 账户后申请一个 API Key。注意:Steam API Key 是私密信息,请不要分享给别人。
打开你的 Steam 个人资料页面,通常网址类似:
https://steamcommunity.com/profiles/XXXXXXXXXXXXXXXXX
其中 XXXXXXXXXXXXXXXXX 这一串数字就是你的 Steam ID。
如果你想从本地 Steam 文件中补充一些 Steam API 没有返回的 App,可以设置 LOCALCONFIG_PATH。
Windows 默认位置通常类似:
LOCALCONFIG_PATH = r"C:\Program Files (x86)\Steam\userdata\**********\config\localconfig.vdf"其中 ********** 是你的本地 Steam userdata 编号。
如果不想使用本地补充功能,可以将其留空:LOCALCONFIG_PATH = None
在脚本中填写:
STEAM_API_KEY = "YOUR_STEAM_API_KEY"
STEAM_ID = "YOUR_STEAM_ID"
LOCALCONFIG_PATH = r"C:\Program Files (x86)\Steam\userdata\**********\config\localconfig.vdf"然后运行脚本:
python steam_game_list.py运行后会生成两个 CSV 文件:
steam_games_full.csv
steam_wishlist_full.csv
当前脚本中,拥有游戏列表默认按照:
- 最近两周游玩时间
- 总游玩时间
从高到低排序,效果类似小黑盒的排序。
愿望单默认按照:
- 折扣力度
- 加入愿望单时间
排序。
你可以在代码中修改 export_to_csv() 的参数来自定义排序方式,例如:
export_to_csv(
full_records,
"steam_games_full.csv",
by=["最近两周游玩时间(分钟)", "总游玩时间(分钟)"],
ascending=[False, False]
)或者:
export_to_csv(
wishlist,
"steam_wishlist_full.csv",
by=["discount_percent", "date_added"],
ascending=[False, False]
)脚本中有一个参数game_details=True,当它为 True 时,脚本会额外请求 Steam Store 的 appdetails 接口,用于补全商店页信息,例如:
- 游戏名称
- 类型
- 发售日期
- 是否免费
- 当前价格
- 原价
- 折扣力度
- 商店链接
- ...(其他内容可以手动修改代码增加输出)
这对于本地 localconfig.vdf 补充出来的 App 尤其有用,因为本地文件通常只有 AppID、游玩时间和最后游玩时间,不包含游戏名称。
不过,如果你的游戏库很大,开启 game_details=True 可能会让运行速度变慢。必要时可以改成:
full_records = get_owned_games(game_details=False)这样会跳过商店详情补全,速度会更快,但输出信息也会更少。
可以设置商店详情的语言和地区:
- LANGUAGE对应Steam 商店详情返回的语言,影响游戏名称、简介、类型等文本信息的语言。
- COUNTRY:Steam 商店价格区域,影响价格、货币符号和折扣显示。
例如,如果希望使用简体中文商店信息和中国区价格,可以写成:
LANGUAGE = "schinese" # schinese / english / ... 主语言
COUNTRY = "cn" # us / cn / ... 用于价格区域(示例使用英文商店信息;真实输出中,最后游玩时间将精确到秒)
| AppID | 游戏名称 | 来源 | 总游玩时间(小时) | 总游玩时间(分钟) | 最近两周游玩时间(小时) | 最近两周游玩时间(分钟) | 最后游玩时间 | 已解锁成就数 | 总成就数 | 成就完成率(%) | type | release_date | is_free | price_final | price_initial | discount_percent | store_url |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1052990 | A Monster's Expedition | Steam API | 10.73 | 644 | 2.72 | 163 | 2026-05 | 5 | 9 | 55.56 | game | 10 Sep, 2020 | FALSE | ¥76.00 | 0 | https://store.steampowered.com/app/1052990/ | |
| 353540 | Stephen's Sausage Roll | Steam API | 0.33 | 20 | 0.33 | 20 | 2026-04 | N/A | N/A | N/A | game | 17 Apr, 2016 | FALSE | ¥108.00 | 0 | https://store.steampowered.com/app/353540/ | |
| 753640 | Outer Wilds | Steam API | 80.60 | 4836 | 0 | 0 | 2023-03 | 19 | 31 | 61.29 | game | 18 Jun, 2020 | FALSE | ¥95.00 | 0 | https://store.steampowered.com/app/753640/ | |
| 835960 | The Talos Principle 2 | Steam API | 75.22 | 4513 | 0 | 0 | 2024-12 | 87 | 87 | 100 | game | 2 Nov, 2023 | FALSE | ¥108.00 | 0 | https://store.steampowered.com/app/835960/ | |
| 1318690 | shapez | Steam API | 48.48 | 2909 | 0 | 0 | 2026-03 | 45 | 45 | 100 | game | 7 Jun, 2020 | FALSE | ¥3.50 | ¥35.00 | 90 | https://store.steampowered.com/app/1318690/ |
| 683320 | GRIS | localconfig | 8.92 | 535 | 0 | 0 | 2026-01 | 17 | 17 | 100 | game | 13 Dec, 2018 | FALSE | ¥14.50 | ¥58.00 | 75 | https://store.steampowered.com/app/683320/ |
| 1255980 | Portal Reloaded | Steam API | 7.35 | 441 | 0 | 0 | 2023-07 | N/A | N/A | N/A | mod | 19 Apr, 2021 | TRUE | https://store.steampowered.com/app/1255980/ | |||
| 2021450 | 14 Minesweeper Variants Demo | localconfig | 3.87 | 232 | 0 | 0 | 2024-12 | N/A | N/A | N/A | demo | 8 Jun, 2022 | TRUE | https://store.steampowered.com/app/2021450/ | |||
| 4059560 | localconfig | 1.65 | 99 | 0 | 0 | 2025-10 | N/A | N/A | N/A | https://store.steampowered.com/app/4059560/ | |||||||
| 220 | Half-Life 2 | Steam API | 0 | 0 | 0 | 0 | 从未游玩 | 0 | 69 | 0 | game | 16 Nov, 2004 | FALSE | ¥42.00 | 0 | https://store.steampowered.com/app/220/ | |
| 323170 | Portal Soundtrack | localconfig | 0 | 0 | 0 | 0 | 2023-07 | N/A | N/A | N/A | music | 24 Sep, 2014 | TRUE | https://store.steampowered.com/app/323170/ |
其中:
来源 = Steam API表示该记录来自 Steam Web API。来源 = localconfig表示该记录是从本地 Steam 配置文件中补充得到的。N/A通常表示该游戏没有可用成就信息,或者成就接口不可用。- 某些 App 可能只有 AppID,没有完整商店信息,这是 Steam Store API 未返回完整数据导致的,可能是游戏已不可被添加,必要时可以自行去steamdb搜索。
Steam 愿望单 API 默认返回的信息比较有限,主要是 AppID。因此脚本会继续请求 Steam Store 的 appdetails 接口,补全游戏名、价格、折扣和商店链接等信息。
| AppID | 游戏名称 | type | release_date | is_free | price_final | price_initial | discount_percent | store_url | date_added |
|---|---|---|---|---|---|---|---|---|---|
| 220200 | Kerbal Space Program | game | 27 Apr, 2015 | FALSE | ¥37.00 | ¥148.00 | 75 | https://store.steampowered.com/app/220200/ | 2020-06 |
| 314650 | SpaceEngine | game | 11 Jun, 2019 | FALSE | ¥75.60 | ¥108.00 | 30 | https://store.steampowered.com/app/314650/ | 2020-07 |
| 4160210 | The Artisan of Glimmith | game | 17 Mar, 2026 | FALSE | ¥44.20 | ¥52.00 | 15 | https://store.steampowered.com/app/4160210/ | 2026-04 |
| 316610 | A Good Snowman Is Hard To Build | game | 25 Feb, 2015 | FALSE | ¥58.00 | 0 | https://store.steampowered.com/app/316610/ | 2026-04 | |
| 2799820 | FSA DRIVING | game | Sep-26 | FALSE | https://store.steampowered.com/app/2799820/ | 2026-02 | |||
| 3980290 | Solvimus | game | 9 Sep, 2026 | FALSE | https://store.steampowered.com/app/3980290/ | 2026-02 | |||
| 3938920 | Birza | game | To be announced | FALSE | https://store.steampowered.com/app/3938920/ | 2025-08 |
Steam API Key 是私密信息。如果 API Key 不小心泄露,可以到 Steam API Key 页面删除或重新生成。
如果你的 Steam 游戏库不是公开可见,Steam API 可能无法返回完整数据。
导出的信息可能暴露个人游戏习惯,请妥善处理您的个人信息。
localconfig.vdf 只能补充本机 Steam 客户端记录过的一部分 App。
它可能包含:
- 家庭共享库中玩过的游戏
- Demo
- 测试版
- Mod
- 原声带
- 已下架或无完整商店页的 App
但它不是 Steam 官方的家庭共享游戏列表接口,因此结果不一定完整。
- Steam API 的访问需要配置代理,有时有代理也会偶发网络错误,可以多试几次。
- 如果游戏很多,运行可能较慢,其他问题目前未知。
- 感谢 ChatGPT 帮助优化代码并生成 README 草稿。
- API 使用:
- 项目灵感来源:
- DeepSeeek_SteamAPI
- Steam_Game_Stats
- 本来考虑过使用 steam 包,但后来发现自己的需求比较简单,直接调用 API 就足够了,于是就写了这个小工具。
This project is licensed under the Apache License 2.0.
This is an unofficial personal-use tool and is not affiliated with Valve or Steam. Users are responsible for complying with Steam's terms and API policies.