import pywikibot
from pywikibot import pagegenerators as pg
import datetime
from multiprocessing.pool import ThreadPool
from multiprocessing import Lock


site = pywikibot.Site('ca', 'wikipedia')
site.login()
disambig_cat = pywikibot.Category(site, u'Categoria:Pàgines de desambiguació')
disambig_pages = pg.CategorizedPageGenerator(disambig_cat, recurse=True)
disambig_list = []

total_links = 0
counted_links = 0

lock = Lock()


def list_links(pag):
    num_links = len(list(site.pagebacklinks(pag, namespaces=0)))
    if num_links > 4:
        disambig_list.append((pag.title(), num_links))
    global total_links, counted_links
    with lock:
        total_links += num_links
        if total_links - counted_links >= 1000:
            counted_links += 1000
            print(total_links)


pool = ThreadPool(20)
pool.map(list_links, disambig_pages)

disambig_list.sort(key=lambda x: x[0], reverse=False) # afegit 21-12-2023
disambig_list.sort(key=lambda x: x[1], reverse=True)

# Obtenir la pàgina wiki
page = pywikibot.Page(site, 'Viquipèdia:Enllaços incorrectes a pàgines de desambiguació')

# Actualitzar la pàgina amb la llista de pàgines de desambiguació
page.text = 'Actualització de {{data|' + str(datetime.date.today()) + '}}: ' + str(total_links) + ' → Vegeu una [[#Eina per desambiguar]].\n\n'
for title, n_links in disambig_list:
    page.text += '# [[' + title + ']]: ' + str(n_links) + ' [[Special:Whatlinkshere/' + title + '|enllaços]]\n'

# Guardar els canvis a la pàgina wiki
page.save(summary='Actualització automàtica de la llista de pàgines de desambiguació')

Adaptat de Usuari:Ssola/disambig.py. Pau Cabot · Discussió 17:35, 8 abr 2023 (CEST)