Revision: 7370
Author:   alexsh
Date:     2009-10-04 19:29:51 +0000 (Sun, 04 Oct 2009)

Log Message:
-----------
fix: all possible queryLimit override 

Modified Paths:
--------------
    trunk/pywikipedia/wikipedia.py

Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py      2009-10-04 19:23:38 UTC (rev 7369)
+++ trunk/pywikipedia/wikipedia.py      2009-10-04 19:29:51 UTC (rev 7370)
@@ -952,14 +952,21 @@
                 params['tllimit'] = 5000
 
         tmpsFound = []
+        count = 0
         while True:
             data = query.GetData(params, self.site(), encodeTitle = False)
             pageid = data[u'query'][u'pages'].keys()[0]
-            try:
-                tmpsFound.extend([Page(self.site(), tmp['title'], 
defaultNamespace=tmp['ns'])
-                                    for tmp in 
data['query']['pages'][pageid].values()[0] ])
-            except TypeError:
-                pass
+            
+                for tmp in data['query']['pages'][pageid].values()[0]:
+                    count += 1
+                    try:
+                        tmpsFound.append(Page(self.site(), tmp['title'], 
defaultNamespace=tmp['ns']) )
+                    except TypeError:
+                        pass
+                    
+                    if count >= tllimit:
+                        break
+            
             if 'query-continue' in data:
                 params["tlcontinue"] = 
data["query-continue"]["templates"]["tlcontinue"]
             else:
@@ -6302,11 +6309,13 @@
                     'eulimit': limit,
                     'euquery': url,
                 }
+                count = 0
                 while True:
                     data = query.GetData(params, self)
                     if data['query']['exturlusage'] == []:
                         break
                     for pages in data['query']['exturlusage']:
+                        count += 1
                         if not siteurl in pages['title']:
                             # the links themselves have similar form
                             if pages['title'] in cache:
@@ -6314,6 +6323,8 @@
                             else:
                                 cache.append(pages['title'])
                                 yield Page(self, pages['title'])
+                        if count >= limit:
+                            break
                     if 'query-continue' in data:
                             params['euoffset'] = 
data[u'query-continue'][u'exturlusage'][u'euoffset']
                     else:



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

Reply via email to