Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

71 řádky
2.3KB

  1. #!/usr/bin/python3
  2. import requests
  3. import sys
  4. import textwrap
  5. import pprint
  6. import simplejson
  7. api = 'http://api.steampowered.com/'
  8. key = '63578AF8E85EDF1E49411D5D4E18E166'
  9. uid = '76561198008294872' #whiteline
  10. #uid = '76561198111568728' #N33R
  11. # Fetch JSON from url and run it through transform, pretty printing errors
  12. # and the data worked on as exhaustively as possible.
  13. def json_query(url, transform, params={}):
  14. try:
  15. result = requests.get(url, params)
  16. except requests.exceptions.ConnectionError:
  17. print("Network connection error.")
  18. sys.exit(1)
  19. try:
  20. data = result.json()
  21. except simplejson.errors.JSONDecodeError as err:
  22. print('Error when decoding JSON:\nFrom endpoint ' + url + ':\n' + str(err) + '\n' + str(result) + '\n')
  23. sys.exit(1)
  24. try:
  25. return transform(data)
  26. except (IndexError, KeyError) as err:
  27. print('Error when traversing JSON:\nFrom endpoint ' + url + ':\n' + str(err))
  28. pprint.PrettyPrinter(indent=2).pprint(data)
  29. sys.exit(1)
  30. def steam_query(endpoint, transform, params={}):
  31. new_params = params.copy()
  32. new_params['key'] = key
  33. return json_query(api + endpoint + '/', transform, new_params)
  34. def get_friend_list(steamid):
  35. params = {
  36. 'steamid' : steamid,
  37. 'relationship' : 'friend'
  38. }
  39. return steam_query('ISteamUser/GetFriendList/v0001', lambda data: data['friendslist']['friends'], params)
  40. def get_player_summaries(steamids):
  41. params = {
  42. 'steamids' : ','.join(steamids)
  43. }
  44. return steam_query('ISteamUser/GetPlayerSummaries/v0002', lambda data: data['response']['players'], params)
  45. def personastate(n):
  46. states = {
  47. 0 : 'Offline',
  48. 1 : 'Online',
  49. 2 : 'Busy',
  50. 3 : 'Away',
  51. 4 : 'Snooze',
  52. 5 : 'Looking to trade',
  53. 6 : 'Looking to play'
  54. }
  55. return states[n]
  56. def main():
  57. #print('\n'.join([friend['steamid'] for friend in get_friend_list(uid)]))
  58. for player in get_player_summaries([friend['steamid'] for friend in get_friend_list(uid)]):
  59. print(player['personaname'] + ': ' + personastate(player['personastate']) + (', playing ' + player['gameextrainfo'] if 'gameextrainfo' in player else ''))
  60. if __name__ == '__main__':
  61. main()