#!/usr/bin/python3 import requests import sys import textwrap api = 'http://api.steampowered.com/' key = '63578AF8E85EDF1E49411D5D4E18E166' uid = '76561198008294872' #whiteline #uid = '76561198111568728' #N33R # Fetch JSON from url and run it through transform, pretty printing errors # and the data worked on as exhaustively as possible. def json_query(url, transform, params={}): try: result = requests.get(url, params) except ConnectionError: print("Network connection error.") sys.exit(1) try: data = result.json() except requests.JSONDecodeError as err: print('Error when decoding JSON:\nFrom endpoint ' + url + ':\n' + err + '\n' + result + '\n') sys.exit(1) try: return transform(data) except (IndexError, KeyError) as err: print('Error when traversing JSON:\nFrom endpoint ' + url + ':\n' + err) pprint.PrettyPrinter(indent=2).pprint(data) sys.exit(1) def steam_query(endpoint, transform, params={}): new_params = params.copy() new_params['key'] = key return json_query(api + endpoint + '/', transform, new_params) def get_friend_list(steamid): params = { 'steamid' : steamid, 'relationship' : 'friend' } return steam_query('ISteamUser/GetFriendList/v0001', lambda data: data['friendslist']['friends'], params) def get_player_summaries(steamids): params = { 'steamids' : ','.join(steamids) } return steam_query('ISteamUser/GetPlayerSummaries/v0002', lambda data: data['response']['players'], params) def personastate(n): states = { 0 : 'Offline', 1 : 'Online', 2 : 'Busy', 3 : 'Away', 4 : 'Snooze', 5 : 'Looking to trade', 6 : 'Looking to play' } return states[n] def main(): #print('\n'.join([friend['steamid'] for friend in get_friend_list(uid)])) for player in get_player_summaries([friend['steamid'] for friend in get_friend_list(uid)]): print(player['personaname'] + ': ' + personastate(player['personastate']) + (', playing ' + player['gameextrainfo'] if 'gameextrainfo' in player else '')) if __name__ == '__main__': main()