From f64fce0286f9bc7e51a23c8acdf1ba1baef4b787 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Sat, 29 Dec 2018 21:00:02 -0600 Subject: [PATCH] AO3: login form changed --- sites/ao3.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/sites/ao3.py b/sites/ao3.py index b3ab51f..3f65fc8 100644 --- a/sites/ao3.py +++ b/sites/ao3.py @@ -23,21 +23,24 @@ class ArchiveOfOurOwn(Site): def login(self, login_details): with requests_cache.disabled(): - login = self.session.get('http://archiveofourown.org/login') + login = self.session.get('https://archiveofourown.org/users/login') soup = BeautifulSoup(login.text, 'html5lib') - form = soup.find(id='new_user_session') + form = soup.find(id='new_user') post = { - 'user_session[login]': login_details[0], - 'user_session[password]': login_details[1], + 'user[login]': login_details[0], + 'user[password]': login_details[1], # standard fields: - 'user_session[remember_me]': '1', + 'user[remember_me]': '1', 'utf8': form.find(attrs={'name': 'utf8'})['value'], 'authenticity_token': form.find(attrs={'name': 'authenticity_token'})['value'], 'commit': 'Log In', } # I feel the session *should* handle this cookies bit for me. But # it doesn't. And I don't know why. - self.session.post('https://archiveofourown.org/user_sessions', data=post, cookies=login.cookies) + self.session.post( + urllib.parse.urljoin(login.url, str(form.get('action'))), + data=post, cookies=login.cookies + ) logger.info("Logged in as %s", login_details[0]) def extract(self, url):