From ef76b5de84276bc9ff9a3607166006f03859cd01 Mon Sep 17 00:00:00 2001 From: Vlad Pronsky Date: Tue, 26 Dec 2023 23:16:56 +0200 Subject: [PATCH] login flow improvements --- twscrape/imap.py | 3 +-- twscrape/login.py | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/twscrape/imap.py b/twscrape/imap.py index e124363..1ba0ab9 100644 --- a/twscrape/imap.py +++ b/twscrape/imap.py @@ -98,10 +98,9 @@ async def imap_login(email: str, password: str): try: imap.login(email, password) + imap.select("INBOX", readonly=True) except imaplib.IMAP4.error as e: logger.error(f"Error logging into {email} on {domain}: {e}") - imap.select("INBOX") - imap.close() raise EmailLoginError() from e return imap diff --git a/twscrape/login.py b/twscrape/login.py index a83142d..4a37fc9 100644 --- a/twscrape/login.py +++ b/twscrape/login.py @@ -11,7 +11,7 @@ from .utils import raise_for_status, utc async def get_guest_token(client: AsyncClient): rep = await client.post("https://api.twitter.com/1.1/guest/activate.json") - raise_for_status(rep, "guest_token") + raise_for_status(rep, "guest_token (most likely ip ban)") return rep.json()["guest_token"] @@ -189,10 +189,9 @@ async def login(acc: Account, email_first=False) -> Account: logger.info(f"account already active {log_id}") return acc + imap = None if email_first: imap = await imap_login(acc.email, acc.email_password) - else: - imap = None client = acc.make_client() guest_token = await get_guest_token(client)