Created
May 24, 2020 00:12
-
-
Save franga2000/9228b4b303185e8db5dacb0dd84e3aa7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
STEAM GAME MATCHER SCRIPT | |
by franga2000 | |
Users can be given as command line parameters. If no parameters are given, you will be prompted to type them in. | |
Users with vanity URLS (steamcommunity.com/id/my_name) can be entered as my_name, users without vanity URLs (steamcommunity.com/profile/1234567) can be entered as #1234567. | |
(Be careful to enclose numeric ids in single quotes when entering as command line parameters, so the # isn't interpreted as a comment) | |
A Steam API key should be provided in the environment variable STEAM_API_KEY. | |
This script requires the 'steam' package, available here: https://pypi.python.org/pypi/steam | |
""" | |
import os | |
import sys | |
from steam import WebAPI | |
STEAM_API_KEY = os.environ["STEAM_API_KEY"] | |
api = WebAPI(STEAM_API_KEY) | |
def get_steam_id(username): | |
resp = api.ISteamUser.ResolveVanityURL(vanityurl=username)["response"] | |
if resp["success"] == 1: | |
return resp["steamid"] | |
return None | |
def get_games(steamid): | |
resp = api.IPlayerService.GetOwnedGames(steamid=steamid, include_appinfo=True, include_played_free_games=True, include_free_sub=False, appids_filter=[]) | |
return resp["response"]["games"] | |
def get_game_info(gameid): | |
resp = api.ISteamUserStats.GetSchemaForGame(appid=gameid) | |
return resp["game"] | |
def get_common_games(steam_ids): | |
game_sets = [] | |
for steam_id in steam_ids: | |
games = get_games(steam_id) | |
game_sets.append(set([game["appid"] for game in games])) | |
common_game_ids = set.intersection(*game_sets) | |
for game_id in common_game_ids: | |
yield next(g for g in games if g["appid"] == game_id) | |
if __name__ == "__main__": | |
usernames = [] | |
if len(sys.argv) > 1: | |
usernames += sys.argv[1:] | |
# print("Usernames: %s" % ", ".join(usernames)) | |
else: | |
print("Type usernames one by one and press enter") | |
print("When you're done, press enter again to run") | |
i = 1 | |
while True: | |
username = input(str(i) + ". ") | |
if username: | |
usernames.append(username) | |
else: | |
break | |
i += 1 | |
steam_ids = [username.replace("#", "") for username in usernames if username.startswith("#")] | |
steam_ids += [get_steam_id(username) for username in usernames if not username.startswith("#")] | |
common_games = list(get_common_games(steam_ids)) | |
print() | |
print("Found %i games in common:" % len(common_games)) | |
for game in common_games: | |
print(" -", game["name"]) | |
print() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment