Revision: 6511
Author: jayvdb
Date: 2009-03-17 04:29:10 +0000 (Tue, 17 Mar 2009)
Log Message:
-----------
Allow log to be filtered by username
Add method userlib.uploadedImages
Modified Paths:
--------------
trunk/pywikipedia/family.py
trunk/pywikipedia/userlib.py
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/family.py
===================================================================
--- trunk/pywikipedia/family.py 2009-03-17 03:22:53 UTC (rev 6510)
+++ trunk/pywikipedia/family.py 2009-03-17 04:29:10 UTC (rev 6511)
@@ -3521,8 +3521,8 @@
return
'%s?useskin=monobook&title=%s:Allpages&from=%s&namespace=%s' % (
self.path(code), self.special_namespace_url(code), start, namespace)
- def log_address(self, code, limit=50, mode = ''):
- return
"%s?useskin=monobook&title=Special:Log&type=%s&user=&page=&limit=%d"
% (self.path(code), mode, limit)
+ def log_address(self, code, limit=50, mode = '', user = ''):
+ return
"%s?useskin=monobook&title=Special:Log&type=%s&user=%s&page=&limit=%d"
% (self.path(code), mode, user, limit)
def newpages_address(self, code, limit=50, namespace=0):
return
"%s?useskin=monobook&title=%s:Newpages&limit=%d&namespace=%s" %
(self.path(code), self.special_namespace_url(code), limit, namespace)
Modified: trunk/pywikipedia/userlib.py
===================================================================
--- trunk/pywikipedia/userlib.py 2009-03-17 03:22:53 UTC (rev 6510)
+++ trunk/pywikipedia/userlib.py 2009-03-17 04:29:10 UTC (rev 6511)
@@ -107,6 +107,32 @@
else:
break
+ def uploadedImages(self, number = 10):
+ """Yield ImagePages from
Special:Log&type=upload"""
+
+ regexp = re.compile('<li[^>]*>(?P<date>.+?)\s+<a
href=.*?>(?P<user>.+?)</a> .* uploaded "<a
href=".*?"(?P<new> class="new")?
title="(Image|File):(?P<image>.+?)"\s*>(?:.*?<span
class="comment">(?P<comment>.*?)</span>)?', re.UNICODE)
+
+ path = self.site.log_address(number, mode = 'upload', user = self.name)
+ html = self.site.getUrl(path)
+
+ redlink_key = self.site.mediawiki_message('red-link-title')
+ redlink_tail_len = None
+ if redlink_key.startswith('$1 '):
+ redlink_tail_len = len(redlink_key[3:])
+
+ for m in regexp.finditer(html):
+ image = m.group('image')
+ deleted = False
+ if m.group('new'):
+ deleted = True
+ if redlink_tail_len:
+ image = image[0:0-redlink_tail_len]
+
+ date = m.group('date')
+ comment = m.group('comment') or ''
+
+ yield wikipedia.ImagePage(self.site, image), date, comment, deleted
+
def block(self, expiry=None, reason=None, anonOnly=True, noSignup=False,
enableAutoblock=False, emailBan=False, watchUser=False, allowUsertalk=True):
"""
Block the user.
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2009-03-17 03:22:53 UTC (rev 6510)
+++ trunk/pywikipedia/wikipedia.py 2009-03-17 04:29:10 UTC (rev 6511)
@@ -5934,9 +5934,9 @@
"""Return path to Special:Allpages."""
return self.family.allpages_address(self.lang, start=s, namespace = ns)
- def log_address(self, n=50, mode = ''):
+ def log_address(self, n=50, mode = '', user = ''):
"""Return path to Special:Log."""
- return self.family.log_address(self.lang, n, mode)
+ return self.family.log_address(self.lang, n, mode, user)
def newpages_address(self, n=50, namespace=0):
"""Return path to Special:Newpages."""