Client.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import asyncio
  2. from webbot.webbot import Browser
  3. import time
  4. import requests
  5. from requests_futures import sessions
  6. import re
  7. class RRBotException(Exception):
  8. pass
  9. class Client:
  10. def __init__(self, login_method, username, password, expires=None):
  11. self.login_method = login_method
  12. self.username = username
  13. self.password = password
  14. self.expires = expires
  15. self.session_id = None
  16. if login_method in ["g", "google", "v", "vk", "f", "facebook"]:
  17. self.login()
  18. else:
  19. raise RRBotException("Not a valid login method.")
  20. def login(self):
  21. login_method = self.login_method
  22. self.s = sessions.FuturesSession()
  23. auth_text = requests.get("http://rivalregions.com").text
  24. web = Browser(showWindow=False)
  25. if login_method == ("g" or "google"):
  26. auth_text1 = auth_text.split('\t<a href="')
  27. auth_text2 = auth_text1[1].split('" class="sa')
  28. web.go_to(auth_text2[0])
  29. web.type(self.username, into='Email')
  30. web.click('Next')
  31. time.sleep(5)
  32. web.type(self.password, into='Password')
  33. web.click('Next')
  34. time.sleep(5)
  35. web.click(css_selector=".sa_sn.float_left.imp.gogo")
  36. time.sleep(5)
  37. elif login_method == ("v" or "vk"):
  38. auth_text1 = auth_text.split("(\'.vkvk\').attr(\'url\', \'")
  39. auth_text2 = auth_text1[1].split('&response')
  40. web = Browser(showWindow=False)
  41. web.go_to(auth_text2[0])
  42. web.type(self.username, into='email')
  43. web.type(self.password, xpath="/html/body/div/div/div/div[2]/form/div/div/input[7]")
  44. web.click('Log in')
  45. time.sleep(5)
  46. elif login_method == ("f" or "facebook"):
  47. auth_text1 = auth_text.split('">\r\n\t\t\t\t<div class="sa_sn imp float_left" ')
  48. auth_text2 = auth_text1[0].split('200px;"><a class="sa_link" href="')
  49. url = auth_text2[1]
  50. web.go_to(url)
  51. web.type(self.username, into='Email')
  52. web.type(self.password, into='Password')
  53. web.click('Log In')
  54. time.sleep(5)
  55. web.click(css_selector='.sa_sn.imp.float_left')
  56. time.sleep(5)
  57. sessid = web.get_cookie('PHPSESSID')
  58. expires = sessid.get('expiry', None)
  59. sessid.pop('expiry', None)
  60. sessid.pop('httpOnly', None)
  61. sessid['expires'] = expires
  62. web.close_current_tab()
  63. self.expires = expires
  64. self.session_id = sessid
  65. self.s.cookies.set(**sessid)
  66. self.set_c()
  67. def set_c(self):
  68. r = self.s.get('http://rivalregions.com/#overview')
  69. response = r.result()
  70. lines = response.text.split("\n")
  71. for line in lines:
  72. if re.match("(.*)var c_html(.*)", line):
  73. self.c = line.split("'")[-2]
  74. return
  75. async def do_something(self):
  76. #TODO Get some request done
  77. pass