Actually verify whether the login was successful
This commit is contained in:
parent
c0ed667f18
commit
ebcc589841
@ -431,15 +431,16 @@ class FAAPI:
|
||||
self.logged_in = False
|
||||
self.username = None
|
||||
|
||||
def login(self, cookies=None) -> None:
|
||||
def login(self, cookies=None) -> bool:
|
||||
"""
|
||||
Logs this instance into FurAffinity.
|
||||
Beware that a Chrome instance is launched to bypass Cloudflare and log in. Specify valid cookies to bypass this.
|
||||
@param cookies: Cookies to use for this session.
|
||||
:param cookies: Cookies to use for this session.
|
||||
:return: Whether the login attempt was successful.
|
||||
"""
|
||||
if self.logged_in:
|
||||
# No need to do anything if we're already logged in
|
||||
return
|
||||
return True
|
||||
|
||||
if not cookies:
|
||||
# Try sign in to FA
|
||||
@ -450,9 +451,6 @@ class FAAPI:
|
||||
while not self._driver.find_elements_by_id('my-username'):
|
||||
pass
|
||||
|
||||
# Save the username of the account we've logged in as
|
||||
self.username = self._driver.find_elements_by_css_selector('#my-username:not(.hideondesktop)')[0].text.strip()
|
||||
|
||||
# Extract the cookies and stop the driver
|
||||
self._cookies = self._driver.get_cookies()
|
||||
self._driver.close()
|
||||
@ -463,6 +461,19 @@ class FAAPI:
|
||||
self._req = requests.session()
|
||||
[self._req.cookies.set(cookie['name'], cookie['value']) for cookie in self._cookies]
|
||||
|
||||
# Verify login by getting our username
|
||||
soup = self.get_soup(FA_BASE_URL)
|
||||
try:
|
||||
self.username = soup.select('.loggedin_user_avatar')[0].get('alt').strip() # This is more reliable than the user menu heading, don't ask why
|
||||
except IndexError:
|
||||
# Not logged in
|
||||
self.logged_in = False
|
||||
return False
|
||||
|
||||
# Mark this instance as logged in
|
||||
self.logged_in = True
|
||||
return True
|
||||
|
||||
def get_user(self, username: str) -> User:
|
||||
soup = self.get_soup('{}/user/{}/'.format(FA_BASE_URL, username))
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user