mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-03 07:30:56 +00:00
DEVTOOLS: added helper script to query the steam game id by name
This will allow us to query the achievements per game of e.g. the detection table of AGS games
This commit is contained in:
parent
5c7056a28d
commit
a6cbe538aa
54
devtools/steam_gameid.py
Executable file
54
devtools/steam_gameid.py
Executable file
@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# This script takes the game name as parameter and returns the steam game id
|
||||
# Return with exit code 127 if no game was found for the given title
|
||||
# Return with exit code 1 if there are multiple games for the given name
|
||||
# Return with exit code 0 if there is exactly one match found
|
||||
|
||||
import requests
|
||||
import argparse
|
||||
import urllib.parse
|
||||
from requests_html import HTMLSession
|
||||
import sys
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-n', '--name', required=True, help="The steam game name")
|
||||
parser.add_argument('-c', '--category', default='0', type=int, help="The category, e.g. achievements are 22")
|
||||
parser.add_argument('-a', '--all', action='store_true', help="Show all matches, not just the exact match")
|
||||
parser.add_argument('-v', '--verbose', action='store_true', help="Also print some meta information next to the steam game id")
|
||||
args = parser.parse_args()
|
||||
|
||||
searchurl = "https://steamdb.info/search/?a=app&q={0}&type=1&category={1}".format(urllib.parse.quote_plus(args.name), args.category)
|
||||
|
||||
try:
|
||||
session = HTMLSession()
|
||||
response = session.get(searchurl)
|
||||
game_rows = response.html.xpath("//tr[@class='app']/td")
|
||||
game_columns = 4 # id, text, type, name, last changed
|
||||
entries = int(len(game_rows) / game_columns)
|
||||
if args.verbose:
|
||||
sys.stderr.write('found {0} games\n'.format(entries))
|
||||
|
||||
matches = 0
|
||||
for i in range(entries):
|
||||
idx = game_columns * i
|
||||
game_id = game_rows[idx + 0].text.strip()
|
||||
game_type = game_rows[idx + 1].text.strip()
|
||||
game_name = game_rows[idx + 2].text.strip()
|
||||
game_last_changed = game_rows[idx + 3].attrs["title"].strip()
|
||||
if not args.all and game_name != args.name:
|
||||
if args.verbose:
|
||||
sys.stderr.write('found {0} - no match for {1}\n'.format(game_name, args.name))
|
||||
continue
|
||||
if args.verbose:
|
||||
print("{0} {1} {2}#{3}".format(game_id, game_type, game_last_changed, game_name))
|
||||
else:
|
||||
print("{0}".format(game_id))
|
||||
matches += 1
|
||||
|
||||
if matches == 0:
|
||||
sys.exit(127)
|
||||
if matches > 1:
|
||||
sys.exit(1)
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(e)
|
Loading…
Reference in New Issue
Block a user