import pywikibot
import time
from pywikibot.exceptions import ServerError, TimeoutError
# Configura l'idioma de la Viquipèdia
site = pywikibot.Site("ca", "wikipedia")
# Pàgina de l'usuari on s'afegiran els resultats
user_page = pywikibot.Page(site, "Usuari:Rebot/Enllaços externs")
# Funció per buscar els articles que compleixen les condicions
def buscar_articles():
for page in site.allpages(start="!"):
# Ignora les pàgines de discussió i altres pàgines especials
if page.namespace() != 0:
continue
retries = 5 # Nombre de reintents si hi ha un error
success = False
while retries > 0 and not success:
try:
# Obtenir el contingut de la pàgina
content = page.text
# Troba la secció "== Enllaços externs =="
index = content.find("== Enllaços externs ==")
if index != -1:
# Compta els asteriscs després de la secció
asterisk_count = content[index:].count('*')
print(f'Analitzant l\'article "{page.title()}" -> {asterisk_count}')
# Comprova si hi ha més de 5 asteriscs o cap
if asterisk_count > 5 or asterisk_count == 0:
# Afegeix l'article i el nombre d'asteriscs a la pàgina de l'usuari
user_page.text += f'* [[{page.title()}]] ({asterisk_count})<br />'
user_page.save("Afegint article")
success = True # Si tot ha anat bé, surt del bucle de reintents
except (ServerError, TimeoutError) as e:
print(f"Error amb la pàgina {page.title()}: {e}. Reintentant...")
retries -= 1
time.sleep(10) # Espera 10 segons abans de reintentar
except Exception as e:
print(f"Error inesperat amb la pàgina {page.title()}: {e}")
break # Si hi ha altres tipus d'errors, surt del bucle
# Crida la funció per buscar els articles
buscar_articles()