Szerkesztő:Tgr/insert egyert-redir.py
Megjelenés
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Insert {{egyért-redir}} template into redirects which have the same name as a disambiguation page but do not point there
"""
import re, codecs
import wikipedia as pywikibot
import pagegenerators
class InsertEgyertRedirBot:
re_disambig_pagename = re.compile(ur'(.*)[ _]\(egyértelműsítő[ _]lap\)')
verbose = False
save = True
def log(self, type, text, page, logfiles={}):
if self.verbose:
pywikibot.output(text % page.title())
if self.save:
filename = 'insert_egyert-redir.%s.txt' % type
if filename not in logfiles:
logfiles[filename] = codecs.open(filename, 'wt', 'utf-8')
logfiles[filename].write(page.title() + '\n')
def run(self):
site = pywikibot.getSite()
gen = pagegenerators.CategorizedPageGenerator(site.disambcategory())
for disambig in gen:
target = None
m = self.re_disambig_pagename.match(disambig.title())
if not m and not disambig.isRedirectPage():
self.log('strangename', u'Disambig page with strange name: %s', disambig)
continue
redir = pywikibot.Page(site, m.group(1))
try:
target = redir.getRedirectTarget()
except pywikibot.NoPage:
self.log('nopage', u'Disambig page without base page: %s', disambig)
continue
except pywikibot.IsNotRedirectPage:
self.log('noredirect', u'Disambig page without base page: %s', disambig)
continue
if target.title() == disambig.title():
continue
if u'Egyért-redir' in redir.templates(get_redirect = True):
continue
self.log('needtemplate', u'Page needing {{egyért-redir}}: %s', redir)
text = redir.get(get_redirect = True)
redir.put(text + u'\n{{egyért-redir}}', u'hiányzó {{egyért-redir}} sablon pótlása')
def main(*args):
bot = InsertEgyertRedirBot()
bot.run()
if __name__ == "__main__":
try:
main()
finally:
pywikibot.stopme()