r6.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. ## r6 created by mech ##
  2. ## A simple progam to pull stats using r6tab ##
  3. import sys
  4. import json
  5. from event import Event
  6. try:
  7. import requests
  8. except (ImportError, SystemError):
  9. print("Warning: r6 module requires requests")
  10. requests = object
  11. if sys.version_info > (3, 0, 0):
  12. try:
  13. from .basemodule import BaseModule
  14. except (ImportError, SystemError):
  15. from modules.basemodule import BaseModule
  16. else:
  17. try:
  18. from basemodule import BaseModule
  19. except (ImportError, SystemError):
  20. from modules.basemodule import BaseModule
  21. class R6(BaseModule):
  22. """ Takes specified stats from r6 tracker and prints them to irc channel """
  23. def post_init(self):
  24. r6 = Event("__.r6__")
  25. r6.define(msg_definition=r"^\.r6")
  26. r6.subscribe(self)
  27. self.help = ".r6 <stat> <gamer tag>"
  28. # register ourself to our new r6 event
  29. self.bot.register_event(r6, self)
  30. self.url = "https://r6tab.com/api/search.php?platform=uplay&search=" # URL which outputs JSON data
  31. """
  32. Example to show json data parameters that can be pulled from with current URL get request:
  33. p_id "b3a7f575-6689-40ff-9a88-a752299736b2"
  34. p_name "mechmaster7"
  35. p_level 100
  36. p_platform "uplay"
  37. p_user "b3a7f575-6689-40ff-9a88-a752299736b2"
  38. p_currentmmr 1838
  39. p_currentrank 6
  40. verified 0
  41. kd 67
  42. totalresults 1
  43. """
  44. def handle(self, event):
  45. if len(event.msg.split()) == 3: # Looks for the command and hopefully a valid website (*.com,*.net, etc.)
  46. try:
  47. """Needed to set user agent so request would not be blocked, without this a 503 status code is returned"""
  48. headers = {
  49. 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
  50. }
  51. r = requests.get(self.url + event.msg.split()[2], headers=headers)# Takes our static URL and appends your site to the end to make our get request
  52. j = json.loads(r.text) # Converts our JSON to python object
  53. mmr = str(j["results"][0]["p_currentmmr"])
  54. kd = str(j["results"][0]["kd"])
  55. if event.msg.split()[1] == "mmr":
  56. self.say(event.channel, mmr)
  57. elif event.msg.split()[1] == "kd": # Decimal not added by default for k/d ratio
  58. if len(kd) == 3:
  59. split = list(kd)
  60. split.insert(1, ".")
  61. self.say(event.channel, str("".join(split)))
  62. else:
  63. self.say(event.channel,"." + kd)
  64. except requests.ConnectionError:
  65. self.say(event.channel, "Connection error.")
  66. except KeyError:
  67. self.say(event.channel, "Player not found.")