Usuari:Ssola/disambig.py

Programa de Pywikibot (en Python 3) per a generar la llista de Viquipèdia:Enllaços incorrectes a pàgines de desambiguació‎. Guarda el resultat en un fitxer local llista_desambiguacions.txt. S'executa en pocs minuts.

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[1], reverse=True)

with open('llista_desambiguacions.txt', 'w') as f:
    print('Actualització de {{data|', datetime.date.today(), '}}:', total_links,
          '→Vegeu una [[#Eina per desambiguar]] ', file=f)
    for title, n_links in disambig_list:
        print('# [[' + title + ']]:', n_links,
              '[[Special:Whatlinkshere/' + title + '|enllaços]]', file=f)