Steam

如何獲取庫中所有遊戲的 App ID 列表?

  • June 8, 2022

我有超過 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. 請注意,遊戲名稱可以包含逗號。如果您需要其他格式的文件,您需要自己修改腳本。

引用自:https://gaming.stackexchange.com/questions/364877