Revision: 5342 Author: nicdumz Date: 2008-05-09 11:35:15 +0000 (Fri, 09 May 2008)
Log Message: ----------- * Adding a batch parameter to categorymembers to set the numbers of pages retrieved at once * Trying to address NoPage issues
Modified Paths: -------------- branches/rewrite/pywikibot/site.py
Modified: branches/rewrite/pywikibot/site.py =================================================================== --- branches/rewrite/pywikibot/site.py 2008-05-09 10:56:35 UTC (rev 5341) +++ branches/rewrite/pywikibot/site.py 2008-05-09 11:35:15 UTC (rev 5342) @@ -744,7 +744,7 @@ for ns in namespaces) return tlgen
- def categorymembers(self, category, namespaces=None): + def categorymembers(self, category, namespaces=None, batch=None): """Iterate members of specified category.
@param category: The Category to iterate. @@ -754,6 +754,8 @@ however, that the iterated values are always Page objects, even if in the Category or Image namespace. @type namespaces: list of ints + @param batch: the number of pages to fetch each time. + @type batch: int
""" if category.namespace() != 14: @@ -766,6 +768,11 @@ if namespaces is not None: cmgen.request[u"gcmnamespace"] = u"|".join(unicode(ns) for ns in namespaces) + if batch is not None: + if batch > 5000: + logging.debug("No more than 5000 rows can be fetched at once.") + batch=5000 + cmgen.request[u'cmlimit'] = str(batch) return cmgen
def loadrevisions(self, page=None, getText=False, revids=None, @@ -881,6 +888,8 @@ raise Error( u"loadrevisions: Query on %s returned data on '%s'" % (page, pagedata['title'])) + if pagedata.has_key('missing'): + raise NoPage(u'Page %s does not exist' % page.title(asLink=True)) else: page = Page(self, pagedata['title']) api.update_page(page, pagedata)
pywikipedia-l@lists.wikimedia.org