[Pywikipedia-l] SVN: [4932] trunk/pywikipedia/wikipedia.py

rotem at svn.wikimedia.org rotem at svn.wikimedia.org
Thu Jan 24 17:28:11 UTC 2008


Revision: 4932
Author:   rotem
Date:     2008-01-24 17:28:11 +0000 (Thu, 24 Jan 2008)

Log Message:
-----------
(feature request 1876121) Page.fullVersionHistory now returns the revision ID, too. Also, using named groups.

Modified Paths:
--------------
    trunk/pywikipedia/wikipedia.py

Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py	2008-01-24 17:02:03 UTC (rev 4931)
+++ trunk/pywikipedia/wikipedia.py	2008-01-24 17:28:11 UTC (rev 4932)
@@ -1840,10 +1840,9 @@
         """
         Return all previous versions including wikitext.
 
-        Gives a list of tuples consisting of edit date/time, user name and
+        Gives a list of tuples consisting of revision ID, edit date/time, user name and
         content
         """
-        # TODO: probably should return revision id, as well.
         address = self.site().export_address()
         predata = {
             'action': 'submit',
@@ -1863,11 +1862,12 @@
         get_throttle.setDelay(time.time() - now)
         output = []
         # TODO: parse XML using an actual XML parser instead of regex!
-        r = re.compile("\<revision\>.*?\<timestamp\>(.*?)\<\/timestamp\>.*?\<(?:ip|username)\>(.*?)\</(?:ip|username)\>.*?\<text.*?\>(.*?)\<\/text\>",re.DOTALL)
+        r = re.compile("\<revision\>.*?\<id\>(?P<id>.*?)\<\/id\>.*?\<timestamp\>(?P<timestamp>.*?)\<\/timestamp\>.*?\<(?:ip|username)\>(?P<user>.*?)\</(?:ip|username)\>.*?\<text.*?\>(?P<content>.*?)\<\/text\>",re.DOTALL)
         #r = re.compile("\<revision\>.*?\<timestamp\>(.*?)\<\/timestamp\>.*?\<(?:ip|username)\>(.*?)\<",re.DOTALL)
-        return [  (match.group(1),
-                   unescape(match.group(2)),
-                   unescape(match.group(3)))
+        return [  (match.group('id'),
+                   match.group('timestamp'),
+                   unescape(match.group('user')),
+                   unescape(match.group('content')))
                 for match in r.finditer(data)  ]
 
     def contributingUsers(self):





More information about the Pywikipedia-l mailing list