Revision: 8019 Author: xqt Date: 2010-03-17 11:46:25 +0000 (Wed, 17 Mar 2010)
Log Message: ----------- bugfix for -log/-nolog option, bugfix for site.isAllowed('apihighlimits') reading from log
Modified Paths: -------------- trunk/pywikipedia/pagegenerators.py trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/pagegenerators.py =================================================================== --- trunk/pywikipedia/pagegenerators.py 2010-03-17 07:00:43 UTC (rev 8018) +++ trunk/pywikipedia/pagegenerators.py 2010-03-17 11:46:25 UTC (rev 8019) @@ -1195,7 +1195,7 @@ gen = YahooSearchPageGenerator(arg[7:]) elif arg.startswith('-'): mode, log, user = arg.partition('log') - if log == 'log': + if log == 'log' and mode not in ['-', '-no']: #exclude -log, -nolog number = 500 if not user: user = None
Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2010-03-17 07:00:43 UTC (rev 8018) +++ trunk/pywikipedia/wikipedia.py 2010-03-17 11:46:25 UTC (rev 8019) @@ -3663,12 +3663,8 @@
def run(self): if self.pages: - doAPI = None - # API Implemented Check - # doAPI = self.site.has_api() # Sometimes query does not contains revisions - - if doAPI: + if self.site.has_api() and debug: while True: try: data = self.getDataApi() @@ -3874,21 +3870,25 @@
def oneDoneApi(self, data): title = data['title'] - editRestriction = '' - moveRestriction = '' - try: - username = data['revisions'][0]['user'] - ipedit = 'anon' in data['revisions'][0] - timestamp = data['revisions'][0]['timestamp'] - text = data['revisions'][0]['*'] + if not ('missing' in data or 'invalid' in data): + revisionId = data['lastrevid'] + rev = None + try: + rev = data['revisions'] + except KeyError: + raise u'NOTE: Last revision of [[%s]] not found' % title + else: + username = rev[0]['user'] + ipedit = 'anon' in rev[0] + timestamp = rev[0]['timestamp'] + text = rev[0]['*'] + editRestriction = '' + moveRestriction = '' for revs in data['protection']: if revs['type'] == 'edit': editRestriction = revs['level'] elif revs['type'] == 'move': moveRestriction = revs['level'] - revisionId = data['lastrevid'] - except KeyError: - pass
page = Page(self.site, title) successful = False @@ -3913,13 +3913,15 @@ if editRestriction == 'autoconfirmed': page2._editrestriction = True page2._permalink = revisionId - page2._userName = username - page2._ipedit = ipedit + if rev: + page2._userName = username + page2._ipedit = ipedit + page2._editTime = timestamp + page2._contents = text + else: + raise u'BUG?>>: Last revision of [[%s]] not found' % title page2._revisionId = revisionId - page2._editTime = timestamp section = page2.section() - # Store the content - page2._contents = text if 'redirect' in data: ## output(u"%s is a redirect" % page2.aslink()) m = self.site.redirectRegex().match(text) @@ -4029,7 +4031,6 @@ # output(u' via API', newline=False) output(u'...') limit = config.special_page_limit / 4 # default is 500/4, but It might have good point for server. - if len(pages) > limit: # separate export pages for bulk-retrieve
@@ -5681,7 +5682,7 @@ 'move', 'import', 'patrol', 'merge', 'suppress', 'review', 'stable', 'gblblock', 'renameuser', 'globalauth', 'gblrights', 'abusefilter', 'newusers'): - raise NotImplementedError + raise NotImplementedError, mode params = { 'action' : 'query', 'list' : 'logevents', @@ -5691,7 +5692,7 @@
if number > config.special_page_limit: params['lelimit'] = config.special_page_limit - if number > 5000 and self.site().isAllowed('apihighlimits'): + if number > 5000 and self.isAllowed('apihighlimits'): params['lelimit'] = 5000 if user: params['leuser'] = user