Revision: 7423
Author: alexsh
Date: 2009-10-10 16:46:59 +0000 (Sat, 10 Oct 2009)
Log Message:
-----------
Page().loadDeletedRevisions(): add API deletedrevs query
Modified Paths:
--------------
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2009-10-10 16:34:36 UTC (rev 7422)
+++ trunk/pywikipedia/wikipedia.py 2009-10-10 16:46:59 UTC (rev 7423)
@@ -2700,22 +2700,54 @@
#TODO: Handle image file revisions too.
output(u'Loading list of deleted revisions for [[%s]]...' %
self.title())
- address = self.site().undelete_view_address(self.urlname())
- text = self.site().getUrl(address, sysop = True)
- #TODO: Handle non-existent pages etc
-
- rxRevs = re.compile(r'<input
name="(?P<ts>(?:ts|fileid)\d+)".*?title=".*?">(?P<date>.*?)</a>.*?title=".*?">(?P<editor>.*?)</a>.*?<span
class="comment">\((?P<comment>.*?)\)</span>',re.DOTALL)
self._deletedRevs = {}
- for rev in rxRevs.finditer(text):
- self._deletedRevs[rev.group('ts')] = [
- rev.group('date'),
- rev.group('editor'),
- rev.group('comment'),
- None, #Revision text
- False, #Restoration marker
- ]
+
+ if config.use_api and self.site().versionnumber() >= 12:
+ params = {
+ 'action': 'query',
+ 'list': 'deletedrevs',
+ 'drfrom': self.titleWithoutNamespace(),
+ 'drnamespace': self.namespace(),
+ 'drprop': 'revid|user|comment|content',#|minor|len|token
+ 'drlimit': 100,
+ 'drdir': 'older',
+ #'': '',
+ }
+ count = 0
+ while True:
+ data = query.GetData(params, self.site(), sysop=True)
+ for x in data['query']['deletedrevs']:
+ if x['title'] != self.title():
+ continue
+
+ for y in x['revisions']:
+ count += 1
+ ts = time.strftime("%Y%m%d%H%M%S",
time.strptime(y['timestamp'], "%Y-%m-%dT%H:%M:%SZ") )
+ self._deletedRevs[ts] = [y['timestamp'], y['user'],
y['comment'] , y['*'], False]
+
+ if 'query-continue' in data and
data['query-continue']['deletedrevs']['drcontinue'].split('|')[1] ==
self.titleWithoutNamespace():
+ params['drcontinue'] =
data['query-continue']['deletedrevs']['drcontinue']
+ else:
+ break
+ self._deletedRevsModified = False
+
+ else:
+ address = self.site().undelete_view_address(self.urlname())
+ text = self.site().getUrl(address, sysop = True)
+ #TODO: Handle non-existent pages etc
- self._deletedRevsModified = False
+ rxRevs = re.compile(r'<input
name="(?P<ts>(?:ts|fileid)\d+)".*?title=".*?">(?P<date>.*?)</a>.*?title=".*?">(?P<editor>.*?)</a>.*?<span
class="comment">\((?P<comment>.*?)\)</span>',re.DOTALL)
+ for rev in rxRevs.finditer(text):
+ self._deletedRevs[rev.group('ts')] = [
+ rev.group('date'),
+ rev.group('editor'),
+ rev.group('comment'),
+ None, #Revision text
+ False, #Restoration marker
+ ]
+
+ self._deletedRevsModified = False
+
return self._deletedRevs.keys()
def getDeletedRevision(self, timestamp, retrieveText=False):
_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn