Szerkesztő:Tgr/insert egyert-redir.py

A Wikipédiából, a szabad enciklopédiából
#!/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()