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)