Revision: 8335 Author: xqt Date: 2010-06-26 10:07:01 +0000 (Sat, 26 Jun 2010)
Log Message: ----------- Omplementation of uncategorized templates pagegenerator (feature request bug #3021531)
Modified Paths: -------------- trunk/pywikipedia/family.py trunk/pywikipedia/pagegenerators.py trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/family.py =================================================================== --- trunk/pywikipedia/family.py 2010-06-25 17:45:36 UTC (rev 8334) +++ trunk/pywikipedia/family.py 2010-06-26 10:07:01 UTC (rev 8335) @@ -3754,6 +3754,9 @@ def uncategorizedpages_address(self, code, limit=500): return "%s?title=%s:Uncategorizedpages&limit=%d&useskin=monobook" % (self.path(code), self.special_namespace_url(code), limit)
+ def uncategorizedtemplates_address(self, code, limit=500): + return "%s?title=%s:UncategorizedTemplates&limit=%d&useskin=monobook" % (self.path(code), self.special_namespace_url(code), limit) + def unusedcategories_address(self, code, limit=500): return "%s?title=%s:Unusedcategories&limit=%d&useskin=monobook" % (self.path(code), self.special_namespace_url(code), limit)
Modified: trunk/pywikipedia/pagegenerators.py =================================================================== --- trunk/pywikipedia/pagegenerators.py 2010-06-25 17:45:36 UTC (rev 8334) +++ trunk/pywikipedia/pagegenerators.py 2010-06-26 10:07:01 UTC (rev 8335) @@ -60,6 +60,8 @@
-uncatfiles Work on all files which are not categorised.
+-uncattemplates Work on all templates which are not categorised. + -file Read a list of pages to treat from the named text file. Page titles in the file must be enclosed with [[brackets]] or separated by newlines. Argument can also be given as @@ -465,6 +467,8 @@ gen = UnCategorizedImageGenerator() elif arg.startswith('-uncatcat'): gen = UnCategorizedCategoryGenerator() + elif arg.startswith('-uncattemplates'): + gen = UnCategorizedTemplatesGenerator() elif arg.startswith('-uncat'): gen = UnCategorizedPageGenerator() elif arg.startswith('-ref'): @@ -772,7 +776,7 @@ for page in site.uncategorizedcategories(number=number, repeat=repeat): yield page
-def UnCategorizedImageGenerator(number = 100, repeat = False, site = None): +def UnCategorizedImageGenerator(number=100, repeat=False, site=None): if site is None: site = pywikibot.getSite() for page in site.uncategorizedimages(number=number, repeat=repeat): @@ -784,19 +788,25 @@ for page in site.uncategorizedpages(number=number, repeat=repeat): yield page
-def LonelyPagesPageGenerator(number = 100, repeat = False, site = None): +def UnCategorizedTemplatesGenerator(number=100, repeat=False, site=None): if site is None: site = pywikibot.getSite() + for page in site.uncategorizedtemplates(number=number, repeat=repeat): + yield page + +def LonelyPagesPageGenerator(number=100, repeat=False, site=None): + if site is None: + site = pywikibot.getSite() for page in site.lonelypages(number=number, repeat=repeat): yield page
-def UnwatchedPagesPageGenerator(number = 100, repeat = False, site = None): +def UnwatchedPagesPageGenerator(number=100, repeat=False, site=None): if site is None: site = pywikibot.getSite() for page in site.unwatchedpages(number=number, repeat=repeat): yield page
-def AncientPagesPageGenerator(number = 100, repeat = False, site = None): +def AncientPagesPageGenerator(number=100, repeat=False, site=None): if site is None: site = pywikibot.getSite() for page in site.ancientpages(number=number, repeat=repeat):
Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2010-06-25 17:45:36 UTC (rev 8334) +++ trunk/pywikipedia/wikipedia.py 2010-06-26 10:07:01 UTC (rev 8335) @@ -4510,6 +4510,7 @@ uncategorizedpages(): Special:Uncategorizedpages uncategorizedimages(): Special:Uncategorizedimages (yields ImagePage objects) + uncategorizedtemplates(): Special:UncategorizedTemplates unusedcategories(): Special:Unusuedcategories (yields Category) unusedfiles(): Special:Unusedimages (yields ImagePage) randompage: Special:Random @@ -4573,6 +4574,7 @@ uncategorizedcategories_address: Special:Uncategorizedcategories. uncategorizedimages_address: Special:Uncategorizedimages. uncategorizedpages_address: Special:Uncategorizedpages. + uncategorizedtemplates_address: Special:UncategorizedTemplates. unusedcategories_address: Special:Unusedcategories. withoutinterwiki_address: Special:Withoutinterwiki. references_address(s): Special:Whatlinksere for page 's'. @@ -6205,6 +6207,25 @@ if not repeat: break
+ def uncategorizedtemplates(self, number = 10, repeat = False): + """Yield Pages from Special:UncategorizedTemplates.""" + seen = set() + while True: + path = self.uncategorizedtemplates_address(n=number) + get_throttle() + html = self.getUrl(path) + entryR = re.compile( + '<li><a href=".+?" title="(?P<title>.+?)">.+?</a></li>') + for m in entryR.finditer(html): + title = m.group('title') + + if title not in seen: + seen.add(title) + page = Page(self, title) + yield page + if not repeat: + break + def unusedcategories(self, number = 10, repeat = False): """Yield Category objects from Special:Unusedcategories.""" import catlib @@ -6903,6 +6924,10 @@ """Return path to Special:Uncategorizedpages.""" return self.family.uncategorizedpages_address(self.lang, n)
+ def uncategorizedtemplates_address(self, n=500): + """Return path to Special:Uncategorizedpages.""" + return self.family.uncategorizedtemplates_address(self.lang, n) + def unusedcategories_address(self, n=500): """Return path to Special:Unusedcategories.""" return self.family.unusedcategories_address(self.lang, n)