Revision: 7516 Author: alexsh Date: 2009-10-20 06:23:57 +0000 (Tue, 20 Oct 2009)
Log Message: ----------- Category()._parseCategory(): change member detection to API base
Modified Paths: -------------- trunk/pywikipedia/catlib.py
Modified: trunk/pywikipedia/catlib.py =================================================================== --- trunk/pywikipedia/catlib.py 2009-10-20 05:43:21 UTC (rev 7515) +++ trunk/pywikipedia/catlib.py 2009-10-20 06:23:57 UTC (rev 7516) @@ -191,19 +191,18 @@ return
currentPageOffset = None + params = { + 'action': 'query', + 'list': 'categorymembers', + 'cmtitle': self.title(), + 'cmprop': ['title', 'ids', 'sortkey', 'timestamp'], + #'': '', + } while True: - params = { - 'action': 'query', - 'list': 'categorymembers', - 'cmtitle': self.title(), - 'cmprop': 'title',#|ids|sortkey|timestamp', - #'': '', - } if wikipedia.config.special_page_limit > 500: params['cmlimit'] = 500 else: params['cmlimit'] = wikipedia.config.special_page_limit -
if currentPageOffset: params['cmcontinue'] = currentPageOffset @@ -218,17 +217,19 @@
wikipedia.get_throttle() data = query.GetData(params, self.site()) + if 'error' in data: + raise RuntimeError("%s" % data['error']) count = 0
for memb in data['query']['categorymembers']: count += 1 # For MediaWiki versions where subcats look like articles - if isCatTitle(memb['title'], self.site()): - yield SUBCATEGORY, Category(self.site(), memb['title']) - elif memb['ns'] == 6 and self.site().image_namespace() in memb['title']: + if memb['ns'] == 14: + yield SUBCATEGORY, Category.(self.site(), memb['title'], sortKey=memb['sortkey']) + elif memb['ns'] == 6: yield ARTICLE, wikipedia.ImagePage(self.site(), memb['title']) else: - yield ARTICLE, wikipedia.Page(self.site(), memb['title']) + yield ARTICLE, wikipedia.Page(self.site(), memb['title'], defaultNamespace=memb['ns']) if count >= params['cmlimit']: break # try to find a link to the next list page
pywikipedia-svn@lists.wikimedia.org