Revision: 7789 Author: xqt Date: 2009-12-17 19:20:12 +0000 (Thu, 17 Dec 2009)
Log Message: ----------- * change comparison that title not have to exist; * break outer loop in get_redirect_pageids_via_api() if title >= api_until * raise API error and empty results * put move_regex into the function
Modified Paths: -------------- trunk/pywikipedia/redirect.py
Modified: trunk/pywikipedia/redirect.py =================================================================== --- trunk/pywikipedia/redirect.py 2009-12-17 18:13:05 UTC (rev 7788) +++ trunk/pywikipedia/redirect.py 2009-12-17 19:20:12 UTC (rev 7789) @@ -283,16 +283,16 @@ params['apnamespace'] = ns if self.api_start: params['apfrom'] = self.api_start - while True: + done = False + while not done: data = query.GetData(params, self.site) if "limits" in data: # process aplimit = max params['aplimit'] = int(data['limits']['allpages']) for x in data['query']['allpages']: - if self.api_until and x['title'] == self.api_until: - break + done = self.api_until and x['title'] >= self.api_until + if done: break yield x['pageid'] - - if 'query-continue' in data: + if not done and 'query-continue' in data: params['apfrom'] = data['query-continue']['allpages']['apfrom'] else: break @@ -341,6 +341,10 @@ for apiQ in self._next_redirects_via_api_commandline(): params['pageids'] = apiQ data = query.GetData(params, self.site) + if 'error' in data: + raise RuntimeError("API query error: %s" % data) + if data == []: + raise RuntimeError("No results given.") redirects = {} pages = {} redirects = dict((x['from'], x['to']) @@ -452,14 +456,14 @@ wikipedia.output(u'\nChecking redirect %i of %i...' % (num + 1, len(redict)))
- move_regex = re.compile( - r'moved <a href.*?>(.*?)</a> to <a href=.*?>.*?</a>.*?</li>') - def get_moved_pages_redirects(self): '''generate redirects to recently-moved pages''' # this will run forever, until user interrupts it import datetime
+ move_regex = re.compile( + r'moved <a href.*?>(.*?)</a> to <a href=.*?>.*?</a>.*?</li>') + if self.offset <= 0: self.offset = 1 offsetpattern = re.compile( @@ -482,7 +486,7 @@ import traceback wikipedia.output(unicode(traceback.format_exc())) return - g = self.move_regex.findall(move_list) + g = move_regex.findall(move_list) if wikipedia.verbose: wikipedia.output(u"%s moved pages" % len(g)) for moved_title in g: @@ -684,8 +688,7 @@ sd_tagging_sum) targetPage.put(content, summ) redir.put(content, summ) - else: - break # TODO Better implement loop redirect + break # TODO Better implement loop redirect else: newRedir = targetPage continue #
pywikipedia-svn@lists.wikimedia.org