| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import asyncio
- from webbot.webbot import Browser
- import time
- import requests
- from requests_futures import sessions
- import re
- class RRBotException(Exception):
- pass
- class Client:
- def __init__(self, login_method, username, password, expires=None):
- self.login_method = login_method
- self.username = username
- self.password = password
- self.expires = expires
- self.session_id = None
- if login_method in ["g", "google", "v", "vk", "f", "facebook"]:
- self.login()
- else:
- raise RRBotException("Not a valid login method.")
- def login(self):
- login_method = self.login_method
- self.s = sessions.FuturesSession()
- auth_text = requests.get("http://rivalregions.com").text
- web = Browser(showWindow=False)
- if login_method == ("g" or "google"):
- auth_text1 = auth_text.split('\t<a href="')
- auth_text2 = auth_text1[1].split('" class="sa')
- web.go_to(auth_text2[0])
- web.type(self.username, into='Email')
- web.click('Next')
- time.sleep(5)
- web.type(self.password, into='Password')
- web.click('Next')
- time.sleep(5)
- web.click(css_selector=".sa_sn.float_left.imp.gogo")
- time.sleep(5)
- elif login_method == ("v" or "vk"):
- auth_text1 = auth_text.split("(\'.vkvk\').attr(\'url\', \'")
- auth_text2 = auth_text1[1].split('&response')
- web = Browser(showWindow=False)
- web.go_to(auth_text2[0])
- web.type(self.username, into='email')
- web.type(self.password, xpath="/html/body/div/div/div/div[2]/form/div/div/input[7]")
- web.click('Log in')
- time.sleep(5)
- elif login_method == ("f" or "facebook"):
- auth_text1 = auth_text.split('">\r\n\t\t\t\t<div class="sa_sn imp float_left" ')
- auth_text2 = auth_text1[0].split('200px;"><a class="sa_link" href="')
- url = auth_text2[1]
- web.go_to(url)
- web.type(self.username, into='Email')
- web.type(self.password, into='Password')
- web.click('Log In')
- time.sleep(5)
- web.click(css_selector='.sa_sn.imp.float_left')
- time.sleep(5)
- sessid = web.get_cookie('PHPSESSID')
- expires = sessid.get('expiry', None)
- sessid.pop('expiry', None)
- sessid.pop('httpOnly', None)
- sessid['expires'] = expires
- web.close_current_tab()
- self.expires = expires
- self.session_id = sessid
- self.s.cookies.set(**sessid)
- self.set_c()
- def set_c(self):
- r = self.s.get('http://rivalregions.com/#overview')
- response = r.result()
- lines = response.text.split("\n")
- for line in lines:
- if re.match("(.*)var c_html(.*)", line):
- self.c = line.split("'")[-2]
- return
- async def do_something(self):
- #TODO Get some request done
- pass
|