Usuari:Rebot/EEromputs
Aparença
# Elimina enllaços externs (d'aquesta secció) amb la plantilla {{Enllaç no actiu}} import pywikibot import re import time from pywikibot.exceptions import ( ServerError, TimeoutError, SiteDefinitionError, NoPageError, APIError, ) # Configura l'idioma de la Viquipèdia site = pywikibot.Site("ca", "wikipedia") # Defineix l'expressió regular per cercar la plantilla {{Enllaç no actiu}} pattern = r'\n\*((?!ref|Ref).)*{{Enllaç no actiu((?!ref|Ref).)*\n' # Funció per buscar els articles que contenen la plantilla {{Enllaç no actiu}} def buscar_articles(): retries = 5 # Nombre màxim de reintents wait_time = 60 # Temps d'espera entre reintents (en segons) # Obté la pàgina de la plantilla {{Enllaç no actiu}} template_page = pywikibot.Page(site, "Plantilla:Enllaç no actiu") # Obté les pàgines que contenen la plantilla for page in template_page.embeddedin(namespaces=0): for attempt in range(retries): try: # Ignora les pàgines de discussió i altres pàgines especials if page.namespace() != 0: continue # 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: # Si es troba la secció # Troba la pròxima secció després de "== Enllaços externs ==" next_section_match = re.search(r'\n== .+ ==\n', content[index + len("== Enllaços externs =="):]) if next_section_match: next_section_index = next_section_match.start() + index + len("== Enllaços externs ==") else: next_section_index = len(content) # Obté el contingut entre "== Enllaços externs ==" i la següent secció section_content = content[index:next_section_index] # Comprova si la plantilla {{Enllaç no actiu}} està present en aquesta secció if re.search(pattern, section_content): # Realitza la substitució new_content = re.sub(pattern, '\n', section_content) # Actualitza el contingut de la pàgina amb el nou contingut page.text = content[:index] + new_content + content[next_section_index:] page.save(summary="eliminant enllaços externs trencats") print("\t Canvis fets a:", page.title()) else: print("Cap canvi a fer a:", page.title()) else: print("No hi ha 'Enllaços externs' a:", page.title()) break # Surt del bucle de reintents si l'operació ha tingut èxit except (ServerError, TimeoutError, SiteDefinitionError, NoPageError, APIError) as e: print(f"Error: {e}. Reintentant en {wait_time} segons...") time.sleep(wait_time) # Espera abans de reintentar except Exception as e: print(f"Error inesperat: {e}. S'atura l'operació.") break # Surt del bucle de reintents si es troba un error no esperat buscar_articles()