jenkins-bot has submitted this change and it was merged.

Change subject: Implement RandomPageGenerator and RandomRedirectPageGenerator
......................................................................


Implement RandomPageGenerator and RandomRedirectPageGenerator

Also implemented deprecated methods from compat in the Site class.

Bug: https://sourceforge.net/p/pywikipediabot/feature-requests/339/
Change-Id: Ie1ae30578fd3bf415bf38a19f7caf00a822f96c1
---
M pywikibot/pagegenerators.py
M pywikibot/site.py
2 files changed, 44 insertions(+), 1 deletion(-)

Approvals:
  Merlijn van Deen: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index c6e8c7d..d04b2f9 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -94,6 +94,14 @@
 -newpages         Work on the most recent new pages. If given as -newpages:x,
                   will work on the x newest pages.
 
+-random           Work on random pages returned by [[Special:Random]]
+                  Can also be given as "-random:n" where n is the number
+                  of pages to be returned, otherwise the default is 10 pages.
+
+-randomredirect   Work on random redirect pages returned by 
[[Special:RandomRedirect]].
+                  Can also be given as "-randomredirect:n" where n is the 
number
+                  of pages to be returned, else 10 pages are returned.
+
 -recentchanges    Work on the pages with the most recent changes. If
                   given as -recentchanges:x, will work on the x most recently
                   changed pages.
@@ -285,6 +293,16 @@
             page = pywikibot.Page(pywikibot.Link(title,
                                                  pywikibot.Site()))
             gen = InterwikiPageGenerator(page)
+        elif arg.startswith('-random'):
+            if len(arg) == 7:
+                gen = RandomPageGenerator()
+            else:
+                gen = RandomPageGenerator(number=int(arg[8:]))
+        elif arg.startswith('-randomredirect'):
+            if len(arg) == 15:
+                gen = RandomRedirectPageGenerator()
+            else:
+                gen = RandomRedirectPageGenerator(number=int(arg[16:]))
         elif arg.startswith('-recentchanges'):
             if len(arg) >= 15:
                 gen = RecentChangesPageGenerator(total=int(arg[15:]))
@@ -912,6 +930,19 @@
         yield page
 
 
+def RandomPageGenerator(number=10, site=None):
+    if site is None:
+        site = pywikibot.Site()
+    for page in site.randompages(total=number):
+        yield page
+
+def RandomRedirectPageGenerator(number=10, site=None):
+    if site is None:
+        site = pywikibot.Site()
+    for page in site.randompages(total=number, redirects=True):
+        yield page
+
+
 def LinksearchPageGenerator(link, namespaces=None, step=None, total=None,
                             site=None):
     """Yields all pages that include a specified link, according to
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 8f8c217..822573b 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -2527,7 +2527,19 @@
         )
         return usgen
 
-    def randompages(self, step=None, total=1, namespaces=None,
+    @deprecated("Site.randompages()")
+    def randompage(self, redirect=False):
+        """
+        @param redirect: Return a random redirect page
+        @return: pywikibot.Page
+        """
+        return self.randompages(total=1, redirects=redirect)
+
+    @deprecated("Site.randompages()")
+    def randomredirectpage(self):
+        return self.randompages(total=1, redirects=True)
+
+    def randompages(self, step=None, total=10, namespaces=None,
                     redirects=False, content=False):
         """Iterate a number of random pages.
 

-- 
To view, visit https://gerrit.wikimedia.org/r/81508
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie1ae30578fd3bf415bf38a19f7caf00a822f96c1
Gerrit-PatchSet: 2
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits

Reply via email to