71 lines
2.3 KiB
Python
Executable File
71 lines
2.3 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import requests
|
|
import sys
|
|
import textwrap
|
|
import pprint
|
|
import simplejson
|
|
|
|
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 requests.exceptions.ConnectionError:
|
|
print("Network connection error.")
|
|
sys.exit(1)
|
|
try:
|
|
data = result.json()
|
|
except simplejson.errors.JSONDecodeError as err:
|
|
print('Error when decoding JSON:\nFrom endpoint ' + url + ':\n' + str(err) + '\n' + str(result) + '\n')
|
|
sys.exit(1)
|
|
try:
|
|
return transform(data)
|
|
except (IndexError, KeyError) as err:
|
|
print('Error when traversing JSON:\nFrom endpoint ' + url + ':\n' + str(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()
|