From 1a2e5df539c42372d83540452d62ea4a62d543ea Mon Sep 17 00:00:00 2001 From: Brian Keegan Date: Mon, 23 May 2016 14:01:55 -0400 Subject: [PATCH 1/2] Revise to use queryGen --- wikitools/category.py | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/wikitools/category.py b/wikitools/category.py index f46a987..01130d9 100644 --- a/wikitools/category.py +++ b/wikitools/category.py @@ -58,15 +58,16 @@ def getAllMembers(self, titleonly=False, reload=False, namespaces=False): else: ret = [] members = [] - for member in self.__getMembersInternal(namespaces): - members.append(member) - if titleonly: - ret.append(member.title) - if titleonly: - return ret - if namespaces is False: - self.members = members - return members + return self.__getMembersInternal(namespaces) + #for member in self.__getMembersInternal(namespaces): + # members.append(member) + # if titleonly: + # ret.append(member.title) + #if titleonly: + # return ret + #if namespaces is False: + # self.members = members + #return members def getAllMembersGen(self, titleonly=False, reload=False, namespaces=False): """Generator function for pages in the category @@ -106,10 +107,14 @@ def __getMembersInternal(self, namespaces=False): params['cmnamespace'] = '|'.join([str(ns) for ns in namespaces]) while True: req = api.APIRequest(self.site, params) - data = req.query(False) - for item in data['query']['categorymembers']: - yield page.Page(self.site, item['title'], check=False, followRedir=False) - try: - params['cmcontinue'] = data['query-continue']['categorymembers']['cmcontinue'] - except: - break + self.categories = [] + for data in req.queryGen(): + self.categories.extend(self.__extractCategoryMembersToList(data)) + return self.categories + + def __extractCategoryMembersToList(self, json): + list = [] + if 'categorymembers' in json['query'].keys(): + for item in json['query']['categorymembers']: + list.append(item['title']) + return list From c67b9dab2c0141e9f2233751281c24a69219c9c4 Mon Sep 17 00:00:00 2001 From: Brian Keegan Date: Mon, 23 May 2016 14:15:32 -0400 Subject: [PATCH 2/2] Preserve more of the original code --- wikitools/category.py | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/wikitools/category.py b/wikitools/category.py index 01130d9..b67c8f4 100644 --- a/wikitools/category.py +++ b/wikitools/category.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- # Copyright 2008-2013 Alex Zaddach (mrzmanwiki@gmail.com) # This file is part of wikitools. @@ -58,16 +58,15 @@ def getAllMembers(self, titleonly=False, reload=False, namespaces=False): else: ret = [] members = [] - return self.__getMembersInternal(namespaces) - #for member in self.__getMembersInternal(namespaces): - # members.append(member) - # if titleonly: - # ret.append(member.title) - #if titleonly: - # return ret - #if namespaces is False: - # self.members = members - #return members + for member in self.__getMembersInternal(namespaces): + members.append(member) + if titleonly: + ret.append(member['title']) + if titleonly: + return ret + if namespaces is False: + self.members = members + return members def getAllMembersGen(self, titleonly=False, reload=False, namespaces=False): """Generator function for pages in the category @@ -92,7 +91,7 @@ def getAllMembersGen(self, titleonly=False, reload=False, namespaces=False): if namespaces is False: self.members.append(member) if titleonly: - yield member.title + yield member['title'] else: yield member @@ -109,12 +108,5 @@ def __getMembersInternal(self, namespaces=False): req = api.APIRequest(self.site, params) self.categories = [] for data in req.queryGen(): - self.categories.extend(self.__extractCategoryMembersToList(data)) - return self.categories - - def __extractCategoryMembersToList(self, json): - list = [] - if 'categorymembers' in json['query'].keys(): - for item in json['query']['categorymembers']: - list.append(item['title']) - return list + self.categories.extend(data['query']['categorymembers']) + return self.categories