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.logged_in = False
|
||||||
self.username = None
|
self.username = None
|
||||||
|
|
||||||
def login(self, cookies=None) -> None:
|
def login(self, cookies=None) -> bool:
|
||||||
"""
|
"""
|
||||||
Logs this instance into FurAffinity.
|
Logs this instance into FurAffinity.
|
||||||
Beware that a Chrome instance is launched to bypass Cloudflare and log in. Specify valid cookies to bypass this.
|
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:
|
if self.logged_in:
|
||||||
# No need to do anything if we're already logged in
|
# No need to do anything if we're already logged in
|
||||||
return
|
return True
|
||||||
|
|
||||||
if not cookies:
|
if not cookies:
|
||||||
# Try sign in to FA
|
# Try sign in to FA
|
||||||
@ -450,9 +451,6 @@ class FAAPI:
|
|||||||
while not self._driver.find_elements_by_id('my-username'):
|
while not self._driver.find_elements_by_id('my-username'):
|
||||||
pass
|
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
|
# Extract the cookies and stop the driver
|
||||||
self._cookies = self._driver.get_cookies()
|
self._cookies = self._driver.get_cookies()
|
||||||
self._driver.close()
|
self._driver.close()
|
||||||
@ -463,6 +461,19 @@ class FAAPI:
|
|||||||
self._req = requests.session()
|
self._req = requests.session()
|
||||||
[self._req.cookies.set(cookie['name'], cookie['value']) for cookie in self._cookies]
|
[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:
|
def get_user(self, username: str) -> User:
|
||||||
soup = self.get_soup('{}/user/{}/'.format(FA_BASE_URL, username))
|
soup = self.get_soup('{}/user/{}/'.format(FA_BASE_URL, username))
|
||||||
|
|
||||||
|
|||||||
2
setup.py
2
setup.py
@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='FAAPI',
|
name='FAAPI',
|
||||||
version='0.2.1',
|
version='0.3.1',
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
url='https://tem.party/gitea/tom/FAAPI',
|
url='https://tem.party/gitea/tom/FAAPI',
|
||||||
license='WTFPL',
|
license='WTFPL',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user