Revision: 7360
Author:   alexsh
Date:     2009-10-03 08:54:22 +0000 (Sat, 03 Oct 2009)

Log Message:
-----------
use large data post array to query redirects

Modified Paths:
--------------
    trunk/pywikipedia/query.py
    trunk/pywikipedia/redirect.py

Modified: trunk/pywikipedia/query.py
===================================================================
--- trunk/pywikipedia/query.py  2009-10-03 04:52:39 UTC (rev 7359)
+++ trunk/pywikipedia/query.py  2009-10-03 08:54:22 UTC (rev 7360)
@@ -59,18 +59,19 @@
     # Titles param might be long, case convert it to post request
     data = None
     titlecount = 0
-    if 'titles' in params:
-        titlecount = params['titles'].count('|')
-        if encodeTitle:
-            data = {'titles' : params['titles']}
-            del params['titles']
+    for pLongKey in ['titles', 'pageids', 'ucusers']: #
+        if pLongKey in params:
+            titlecount = params[pLongKey].count('|')
+            if encodeTitle:
+                data = {pLongKey : params[pLongKey]}
+                del params[pLongKey]
 
     postAC = [
         'edit', 'login', 'purge', 'rollback', 'delete', 'undelete', 'protect',
         'block', 'unblock', 'move', 'emailuser','import', 'userrights',
     ]
     if useAPI:
-        if params['action'] in postAC or data:
+        if params['action'] in postAC:
             path = site.api_address()
         else:
             path = site.api_address() + urllib.urlencode(params.items())
@@ -80,7 +81,7 @@
 
     if wikipedia.verbose:
         if titlecount > 0:
-            wikipedia.output(u"Requesting %d titles from %s:%s" % (titlecount, 
site.lang, path))
+            wikipedia.output(u"Requesting %d %s from %s:%s" % (titlecount, 
data.keys()[0], site.lang, path))
         else:
             wikipedia.output(u"Request %s:%s" % (site.lang, path))
 
@@ -95,7 +96,7 @@
                 params["User-agent"] = useragent
                 res = urllib2.urlopen(urllib2.Request(site.protocol() + '://' 
+ site.hostname() + address, site.urlEncode(params)))
                 jsontext = res.read()
-            elif params['action'] in postAC or data:
+            elif params['action'] in postAC:
                 res, jsontext = site.postForm(path, params, sysop, 
site.cookies(sysop = sysop) )
             else:
                 if back_response:

Modified: trunk/pywikipedia/redirect.py
===================================================================
--- trunk/pywikipedia/redirect.py       2009-10-03 04:52:39 UTC (rev 7359)
+++ trunk/pywikipedia/redirect.py       2009-10-03 08:54:22 UTC (rev 7360)
@@ -310,15 +310,11 @@
             namespaces = [ 0 ]
         #maxurllen = 1018    # accomodate "GET " + apiQ + CR + LF in 1024 
bytes.
         apiQ = []
-        maxurllen = 900 - len(self.site.hostname() + self.site.api_address() )
-        clen = 0
         for pageid in self.get_redirect_pageids_via_api(number, namespaces, 
start, until):
             apiQ.append(pageid)
-            clen += len(str(pageid)) + 1
-            if clen > maxurllen and apiQ:
+            if len(apiQ) > 500:
                 yield apiQ
                 apiQ = []
-                clen = 0
         if apiQ:
             yield apiQ
 



_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to