[Pywikipedia-l] SVN: [5480] trunk/pywikipedia
btongminh at svn.wikimedia.org
btongminh at svn.wikimedia.org
Sat May 31 10:14:01 UTC 2008
Revision: 5480
Author: btongminh
Date: 2008-05-31 10:14:01 +0000 (Sat, 31 May 2008)
Log Message:
-----------
Add optional API login. Add wpSkipCookieCheck to regular login.
Modified Paths:
--------------
trunk/pywikipedia/config.py
trunk/pywikipedia/login.py
Modified: trunk/pywikipedia/config.py
===================================================================
--- trunk/pywikipedia/config.py 2008-05-31 09:20:52 UTC (rev 5479)
+++ trunk/pywikipedia/config.py 2008-05-31 10:14:01 UTC (rev 5480)
@@ -69,6 +69,9 @@
# By default you are asked for a password on the terminal.
password_file = None
+# Login using the API. This is less likely to break.
+use_api_login = False
+
# Get the names of all known families, and initialize
# with empty dictionaries
import wikipediatools as _wt
Modified: trunk/pywikipedia/login.py
===================================================================
--- trunk/pywikipedia/login.py 2008-05-31 09:20:52 UTC (rev 5479)
+++ trunk/pywikipedia/login.py 2008-05-31 10:14:01 UTC (rev 5480)
@@ -106,17 +106,27 @@
Returns cookie data if succesful, None otherwise.
"""
- predata = {
- "wpName": self.username.encode(self.site.encoding()),
- "wpPassword": self.password,
- "wpDomain": self.site.family.ldapDomain, # VistaPrint fix
- "wpLoginattempt": "Aanmelden & Inschrijven", # dutch button label seems to work for all wikis
- "wpRemember": str(int(bool(remember)))
- }
- if captchaId:
- predata["wpCaptchaId"] = captchaId
- predata["wpCaptchaWord"] = captchaAnswer
- address = self.site.login_address()
+ if config.use_api_login:
+ predata = {
+ 'action': 'login',
+ 'lgname': self.username.encode(self.site.encoding()),
+ 'lgpassword': self.password,
+ 'lgdomain': self.site.family.ldapDomain,
+ }
+ address = self.site.api_address()
+ else:
+ predata = {
+ "wpName": self.username.encode(self.site.encoding()),
+ "wpPassword": self.password,
+ "wpDomain": self.site.family.ldapDomain, # VistaPrint fix
+ "wpLoginattempt": "Aanmelden & Inschrijven", # dutch button label seems to work for all wikis
+ "wpRemember": str(int(bool(remember))),
+ "wpSkipCookieCheck": '1'
+ }
+ if captchaId:
+ predata["wpCaptchaId"] = captchaId
+ predata["wpCaptchaWord"] = captchaAnswer
+ address = self.site.login_address()
if self.site.hostname() in config.authenticate.keys():
headers = {
@@ -140,18 +150,13 @@
n += 1
L.append(m.group(1))
+ got_token = False
log_data = []
for Ldata in L:
- if (re.match('.*_session=.*', Ldata)):
- log_data.append(Ldata)
- elif (re.match('.*UserID=.*', Ldata)):
- log_data.append(Ldata)
- elif (re.match('.*UserName=.*', Ldata)):
- log_data.append(Ldata)
- elif (re.match('.*Token=.*', Ldata)):
- log_data.append(Ldata)
-
- if len(log_data) == 4:
+ if 'Token=' in Ldata:
+ got_token = True
+
+ if got_token:
return "\n".join(L)
elif not captchaAnswer:
captchaR = re.compile('<input type="hidden" name="wpCaptchaId" id="wpCaptchaId" value="(?P<id>\d+)" />')
More information about the Pywikipedia-l
mailing list