Steam
如何獲取庫中所有遊戲的 App ID 列表?
我有超過 1100 款遊戲,並將它們全部保存在本地,並需要遊戲的相關數據,以便我可以輕鬆地將游戲從 PC 傳輸到我的家庭網路上的 PC,但需要遊戲 ID,而且我真的不知道手動找到它們的任務。
我發現這個腳本可以下載我在 Steam 上擁有的遊戲的所有標題圖像,但有沒有辦法獲得我 Steam 庫中所有遊戲的所有 App ID 的概覽?
您連結的腳本將您的整個 Steam 庫作為 XML。您要查找的 ID 包含在 XML 中。
該腳本從以下連結檢索您的庫:
http://steamcommunity.com/id/{0}/games?tab=all&xml=1
{0}
您的個人資料 ID在哪裡。要查找您的個人資料 ID,請轉到您在 Steam 上的個人資料頁面,點擊“編輯個人資料”,該 ID 將是“自定義 URL”部分中的數字。或者,您可以在瀏覽器中登錄 Steam,進入您的個人資料頁面,然後從瀏覽器地址欄中的 URL 獲取 ID。XML 包含一個
steamID
(您的個人資料名稱)、一個steamID64
(唯一編號)和您的遊戲列表。這是我擁有的遊戲的範例:
<game> <appID>220</appID> <name> <![CDATA[ Half-Life 2 ]]> </name> <logo> <![CDATA[ https://steamcdn-a.akamaihd.net/steam/apps/220/capsule_184x69.jpg ]]> </logo> <storeLink> <![CDATA[ https://steamcommunity.com/app/220 ]]> </storeLink> <statsLink> <![CDATA[ https://steamcommunity.com/id/{steamID64}/stats/HL2 ]]> </statsLink> <globalStatsLink> <![CDATA[ https://steamcommunity.com/stats/HL2/achievements/ ]]> </globalStatsLink> </game>
這意味著我擁有一款名為“半條命2”的遊戲,其ID為220。
現在我們需要做的就是編寫一個函式,它會給我們一個遊戲 ID 列表。
**注意:**您連結的腳本是用 Python 2 編寫的,但我使用的是 Python 3。如果您必須使用 Python 2,則需要自己進行轉換,這應該不難做到。
def get_ids(username): tree = ET.parse(get_steam_xml(username)) root = tree.getroot() if root.find('error') is not None: print(root.find('error').text) sys.exit(0) return {game.find('appID').text: game.find('name').text for game in root.iter('game')}
或者,如果您想要一個完整的獨立腳本:
import os import sys import urllib.request import xml.etree.ElementTree as ET def get_steam_xml(username): xml_url = 'http://steamcommunity.com/id/{}/games?tab=all&xml=1'.format( username) return urllib.request.urlopen(xml_url) def get_ids(username): tree = ET.parse(get_steam_xml(username)) root = tree.getroot() if root.find('error') is not None: print(root.find('error').text) sys.exit(0) return {game.find('appID').text: game.find('name').text for game in root.iter('game')} def main(): username = input('Steam username: ') path_to_save = input( 'Path to save (leave blank for current directory): ') if path_to_save == '': path_to_save = '.' else: path_to_save = path_to_save.replace('\\', '/') if path_to_save[-1:] == '/': path_to_save = path_to_save[:-1] if not os.path.isdir(path_to_save): print('Directory does not exist') sys.exit(0) with open(path_to_save + '/ids.txt', 'w', encoding='utf-8') as f: for id, name in get_ids(username).items(): f.write("{},{}\n".format(id, name)) if __name__ == '__main__': main()
這將創建一個“ids.txt”文件,其中每一行的格式為:
id,name
. 請注意,遊戲名稱可以包含逗號。如果您需要其他格式的文件,您需要自己修改腳本。