Revision: 8053
Author: russblau
Date: 2010-04-05 16:24:15 +0000 (Mon, 05 Apr 2010)
Log Message:
-----------
Ported to rewrite branch.
Modified Paths:
--------------
branches/rewrite/scripts/template.py
Modified: branches/rewrite/scripts/template.py
===================================================================
--- branches/rewrite/scripts/template.py 2010-04-05 15:45:22 UTC (rev 8052)
+++ branches/rewrite/scripts/template.py 2010-04-05 16:24:15 UTC (rev 8053)
@@ -89,10 +89,10 @@
#
__version__='$Id$'
#
-import wikipedia as pywikibot
-import config
-import replace, pagegenerators
-import re, sys, string, catlib
+import pywikibot
+from pywikibot import config, pagegenerators, catlib
+from scripts import replace
+import re, sys, string
class XmlDumpTemplatePageGenerator:
"""
@@ -107,7 +107,7 @@
templates
* xmlfilename - The dump's path, either absolute or relative
"""
-
+ raise NotImplementedError("Sorry, no XML reader in rewrite yet.")
self.templates = templates
self.xmlfilename = xmlfilename
@@ -285,8 +285,8 @@
'zh':u'機器人: 更換模板 %s',
}
- def __init__(self, generator, templates, subst = False, remove = False, editSummary =
'',
- acceptAll = False, addedCat = None):
+ def __init__(self, generator, templates, subst = False, remove = False,
+ editSummary = '', acceptAll = False, addedCat = None):
"""
Arguments:
* generator - A page generator.
@@ -304,28 +304,35 @@
self.editSummary = editSummary
self.acceptAll = acceptAll
self.addedCat = addedCat
+ s = pywikibot.Site()
if self.addedCat:
- self.addedCat = catlib.Category(pywikibot.getSite(), 'Category:' +
self.addedCat)
+ self.addedCat = pywikibot.Category(s,
+ s.namespace(14) + ':' + self.addedCat)
# get edit summary message if it's empty
if (self.editSummary==''):
oldTemplateNames = (', ').join(self.templates.keys())
- mysite = pywikibot.getSite()
if self.remove:
if len(self.templates) > 1:
- self.editSummary = pywikibot.translate(mysite, self.msgs_remove) %
oldTemplateNames
+ self.editSummary = pywikibot.translate(s, self.msgs_remove) \
+ % oldTemplateNames
else:
- self.editSummary = pywikibot.translate(mysite, self.msg_remove) %
oldTemplateNames
+ self.editSummary = pywikibot.translate(s, self.msg_remove) \
+ % oldTemplateNames
elif self.subst:
if len(self.templates) > 1:
- self.editSummary = pywikibot.translate(mysite, self.msgs_subst) %
oldTemplateNames
+ self.editSummary = pywikibot.translate(s, self.msgs_subst) \
+ % oldTemplateNames
else:
- self.editSummary = pywikibot.translate(mysite, self.msg_subst) %
oldTemplateNames
+ self.editSummary = pywikibot.translate(s, self.msg_subst) \
+ % oldTemplateNames
else:
if len(self.templates) > 1:
- self.editSummary = pywikibot.translate(mysite, self.msgs_change) %
oldTemplateNames
+ self.editSummary = pywikibot.translate(s, self.msgs_change) \
+ % oldTemplateNames
else:
- self.editSummary = pywikibot.translate(mysite, self.msg_change) %
oldTemplateNames
+ self.editSummary = pywikibot.translate(s, self.msg_change) \
+ % oldTemplateNames
def run(self):
"""
@@ -339,27 +346,38 @@
replacements = []
exceptions = {}
+ s = pywikibot.Site()
for old, new in self.templates.iteritems():
- if not pywikibot.getSite().nocapitalize:
- pattern = '[' + re.escape(old[0].upper()) +
re.escape(old[0].lower()) + ']' + re.escape(old[1:])
+ if not s.nocapitalize:
+ pattern = '[' + re.escape(old[0].upper()) \
+ + re.escape(old[0].lower()) + ']' \
+ + re.escape(old[1:])
else:
pattern = re.escape(old)
pattern = re.sub(r'_|\\ ', r'[_ ]', pattern)
- templateRegex = re.compile(r'\{\{ *([Tt]emplate:|[mM][sS][gG]:)?' +
pattern + r'(?P<parameters>\s*\|.+?|) *}}', re.DOTALL)
+ templateRegex = re.compile(r'\{\{ *([Tt]emplate:|[mM][sS][gG]:)?'
+ + pattern
+ + r'(?P<parameters>\s*\|.+?|)
*}}',
+ re.DOTALL)
if self.remove:
replacements.append((templateRegex, ''))
elif self.subst:
- replacements.append((templateRegex, '{{subst:' + old +
'\g<parameters>}}'))
+ replacements.append((templateRegex,
+ '{{subst:' + old +
'\g<parameters>}}'))
exceptions['inside-tags']=['ref']
else:
- replacements.append((templateRegex, '{{' + new +
'\g<parameters>}}'))
+ replacements.append((templateRegex,
+ '{{' + new +
'\g<parameters>}}'))
- replaceBot = replace.ReplaceRobot(self.generator, replacements, exceptions,
acceptall = self.acceptAll, addedCat=self.addedCat, editSummary=self.editSummary)
+ replaceBot = replace.ReplaceRobot(self.generator, replacements,
+ exceptions, acceptall=self.acceptAll,
+ addedCat=self.addedCat,
+ summary=self.editSummary)
replaceBot.run()
-def main():
+def main(*args):
templateNames = []
templates = {}
subst = False
@@ -372,7 +390,7 @@
# If xmlfilename is None, references will be loaded from the live wiki.
xmlfilename = None
# read command line parameters
- for arg in pywikibot.handleArgs():
+ for arg in pywikibot.handleArgs(*args):
if arg == '-remove':
remove = True
elif arg == '-subst':
@@ -395,7 +413,9 @@
acceptAll = True
else:
if not genFactory.handleArg(arg):
- templateNames.append(pywikibot.Page(pywikibot.getSite(), arg,
defaultNamespace=10).titleWithoutNamespace())
+ templateNames.append(
+ pywikibot.Page(pywikibot.Site(), arg, ns=10
+ ).title(withNamespace=False))
if subst or remove:
for templateName in templateNames:
@@ -405,13 +425,14 @@
for i in range(0, len(templateNames), 2):
templates[templateNames[i]] = templateNames[i + 1]
except IndexError:
- pywikibot.output(u'Unless using -subst or -remove, you must give an even
number of template names.')
+ pywikibot.output(
+u'Unless using -subst or -remove, you must give an even number of template
names.')
return
oldTemplates = []
- ns = pywikibot.getSite().template_namespace()
+ ns = pywikibot.Site().template_namespace()
for templateName in templates.keys():
- oldTemplate = pywikibot.Page(pywikibot.getSite(), templateName,
defaultNamespace=10)
+ oldTemplate = pywikibot.Page(pywikibot.Site(), templateName, ns=10)
oldTemplates.append(oldTemplate)
if xmlfilename:
@@ -420,7 +441,8 @@
gen = genFactory.getCombinedGenerator()
if not gen:
gens = []
- gens = [pagegenerators.ReferringPageGenerator(t, onlyTemplateInclusion = True)
for t in oldTemplates]
+ gens = [pagegenerators.ReferringPageGenerator(t,
+ onlyTemplateInclusion = True) for t in oldTemplates]
gen = pagegenerators.CombinedPageGenerator(gens)
gen = pagegenerators.DuplicateFilterPageGenerator(gen)
@@ -429,11 +451,14 @@
preloadingGen = pagegenerators.PreloadingGenerator(gen)
- bot = TemplateRobot(preloadingGen, templates, subst, remove, editSummary, acceptAll,
addedCat)
+ bot = TemplateRobot(preloadingGen, templates, subst, remove, editSummary,
+ acceptAll, addedCat)
bot.run()
if __name__ == "__main__":
try:
main()
+ except Exception:
+ pywikibot.error("Fatal error:", exc_info=True)
finally:
pywikibot.stopme()