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 <legoktm.wikipedia(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: jenkins-bot