|
- #!/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']) + (', ' + player['gameextrainfo'] if 'gameextrainfo' in player else ''))
-
-
- if __name__ == '__main__':
- main()
|