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 mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn