jenkins-bot has submitted this change and it was merged.
Change subject: Add -unconnectedpages to pagegenerators ......................................................................
Add -unconnectedpages to pagegenerators
Since now Wikibase client does support API wrapper around Special:UnconnectedPages (commits: 6f037b08, ff02f539, bd4d1e07 in mediawiki/extensions/Wikibase) and it's deployed, it would be really good to have such a generator.
Bug: T56738 Change-Id: I6b91bd4cf6ceaf5cd71889a81a639a88a8e8d117 --- M pywikibot/pagegenerators.py M pywikibot/site.py 2 files changed, 42 insertions(+), 1 deletion(-)
Approvals: XZise: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py index 7971750..2205c81 100644 --- a/pywikibot/pagegenerators.py +++ b/pywikibot/pagegenerators.py @@ -156,6 +156,10 @@ given as -recentchanges:x, will work on the x most recently changed pages.
+-unconnectedpages Work on the most recent unconnected pages to the Wikibase + repository. Given as -unconnectedpages:x, will work on the + x most recent unconnected pages. + -ref Work on all pages that link to a certain page. Argument can also be given as "-ref:referredpagetitle".
@@ -690,6 +694,12 @@ gen = NewpagesPageGenerator(namespaces=namespaces, total=total, site=self.site) + elif arg.startswith('-unconnectedpages'): + namespaces = self.namespaces or 0 + total = 60 + if len(arg) >= 18: + total = int(arg[18:]) + gen = UnconnectedPageGenerator(total=total, site=self.site) elif arg.startswith('-imagesused'): imagelinkstitle = arg[len('-imagesused:'):] if not imagelinkstitle: @@ -931,7 +941,7 @@
@param step: Maximum number of pages to retrieve per API query @type step: int - @param total: Maxmum number of pages to retrieve in total + @param total: Maxmium number of pages to retrieve in total @type total: int @param site: Site for generator results. @type site: L{pywikibot.site.BaseSite} @@ -1016,6 +1026,25 @@ return gen
+def UnconnectedPageGenerator(site=None, step=None, total=None): + """ + Iterate Page objects for all unconnected pages to a Wikibase repository. + + @param step: Maximum number of pages to retrieve per API query + @type step: int + @param total: Maximum number of pages to retrieve in total + @type total: int + @param site: Site for generator results. + @type site: L{pywikibot.site.APISite} + """ + if site is None: + site = pywikibot.Site() + if not site.data_repository(): + raise ValueError('The given site does not have Wikibase repository.') + for page in site.unconnected_pages(step=step, total=total): + yield page + + @deprecated_args(referredImagePage='referredFilePage') def FileLinksGenerator(referredFilePage, step=None, total=None, content=False): """Yield Pages on which the file referredFilePage is displayed.""" diff --git a/pywikibot/site.py b/pywikibot/site.py index e77315c..bc90ac2 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -5692,6 +5692,18 @@ step=step, total=total) return lrgen
+ def unconnected_pages(self, step=None, total=None): + """Yield Page objects from Special:UnconnectedPages. + + @param step: request batch size + @param total: number of pages to return + """ + upgen = self._generator(api.PageGenerator, + type_arg='querypage', + gqppage='UnconnectedPages', + step=step, total=total) + return upgen + @deprecated_args(lvl='level') def protectedpages(self, namespace=0, type='edit', level=False, total=None): """