import pywikibot
def update_redirects_page(output_page, new_redirects):
# Llegeix el contingut actual de la pàgina
current_content = output_page.text
# Afegeix les noves redireccions al contingut actual en format de llista puntejada
for key, value in new_redirects.items():
# Verifica si la pàgina és una categoria
is_category = "Categoria:" in key
# Utilitza el format d'enllaç corresponent
if is_category:
current_content += f"\n* [[:{key}]] => [[:{value}]]"
else:
current_content += f"\n* [[{key}]] => [[{value}]]"
# Actualitza la pàgina amb el contingut actualitzat
output_page.text = current_content
output_page.save("Actualització automàtica de la llista de redireccions")
def main(start_page_title):
# Configuració de Pywikibot
site = pywikibot.Site("ca", "wikipedia")
pywikibot.config.put_throttle = 0
# Pàgina on es guardarà la llista de redireccions
output_page_title = "Usuari:Paucabot/Red"
output_page = pywikibot.Page(site, output_page_title)
# Llista dels noms d'espais de noms que vols considerar
namespaces_to_check = ["Categoria"]
# Diccionari per emmagatzemar les redireccions trobades
redirects_dict = {}
# Bandera per indicar quan començar a recopilar redireccions
start_processing = True
# Itera sobre les pàgines de cada espai de noms
for namespace in namespaces_to_check:
for page in site.allpages(namespace=namespace):
if page.title() == start_page_title:
# Activa la bandera quan es troba la pàgina d'inici
start_processing = True
if start_processing:
try:
if page.isRedirectPage():
target_page = page.getRedirectTarget()
redirects_dict[page.title()] = target_page.title()
# Actualitza la pàgina amb les noves redireccions
update_redirects_page(output_page, {page.title(): target_page.title()})
except pywikibot.exceptions.InterwikiRedirectPageError as e:
# Gestiona l'excepció InterwikiRedirectPageError
print(f"Excepció: {e}")
print(f"Ignorant redirecció interwiki per la pàgina: {page.title()}")
continue
except Exception as e:
# Gestiona altres excepcions (opcional, depenent del que vulguis fer)
print(f"Excepció no gestionada: {e}")
continue
if __name__ == "__main__":
# Especifica la pàgina des de la qual vols començar
start_page_title = "Categoria:!"
main(start_page_title)