import pywikibot
from pywikibot import pagegenerators
import mwparserfromhell
import time

site = pywikibot.Site()
cat = pywikibot.Category(site, 'Категорія:Перенаправлення з помилок')

for r in pagegenerators.PreloadingGenerator(cat.articles(), 100):
    pages2fix = list(r.getReferences()) # skip not referenced redirects
    if not pages2fix:
        continue

    r_from = r.title()
    r_to = r.getRedirectTarget().title()
    print('Виправляю %s -> %s' % (r_from, r_to))
    time.sleep(1)

    for p in pages2fix:

        if p.namespace().canonical_name in ['User']: # ingore some namespaces
            continue

        print('\tНа сторінці', p.title())
        time.sleep(1)
        
        wikicode = mwparserfromhell.parse(p.text)

        for link in wikicode.filter_wikilinks():
            if link.title == r_from:
                link.title = r_to
        new_text = str(wikicode)
        if p.text == new_text:
            print('\tВсе ок, нічого не треба виправляти')
            continue
        pywikibot.showDiff(p.text, new_text)
        p.text = new_text
        p.save('Виправлено помилки')