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@lists.wikimedia.org