importpywikibotimportre# Connessione al sitosite=pywikibot.Site("fr","wiktionary")# Categoria targetcategory=pywikibot.Category(site,"Catégorie:Enclises en italien")# Funzione per ottenere il parametro 'infinito' da un testodefget_infinito(text):match=re.search(r"{{lien\|([^}]+)\|it}}",text)ifmatch:returnmatch.group(1)return""# Funzione per calcolare il parametro 'gerundio' da un titolodefget_gerundio_from_title(title):exceptions={"urre":"ucendo","mpiere":"mpiendo","mpire":"mpiendo","bere":"evendo","fare":"acendo","orre":"onendo","arre":"aendo","dire":"dicendo",}forexception,replacementinexceptions.items():iftitle.endswith(exception):returntitle.replace(exception,replacement)iftitle.endswith("arlo"):returntitle.replace("arlo","ando")eliftitle.endswith("erlo"):returntitle.replace("erlo","endo")eliftitle.endswith("irlo"):returntitle.replace("irlo","endo")# Se non ci sono corrispondenze nelle eccezioni, restituisci una stringa vuotareturn""# Funzione per rimpiazzare il testo nella paginadefreplace_text_in_page(page):text=page.text# Cerca la prima occorrenza di '=== {{S|verbe|it|flexion}} ==='match=re.search(r'=== {{S\|verbe\|it\|flexion}} ===',text)ifmatch:# Trova la posizione del matchstart=match.start()end=match.end()# Estrai il testo prima e dopo il matchtext_before=text[:start]text_after=text[end:]# Estrai il parametro 'infinito' dal testo dopo il matchinfinito=get_infinito(text_after)ifinfinito:# Estrai la radice dal titolo della paginaradice=page.title()[:-2]# Calcola il parametro 'gerundio' dalla radicegerundio=get_gerundio_from_title(page.title())# Sostituisci il modello con i valori calcolatinew_template="=== {{{{S|verbe|it|flexion}}}} ===\n{{{{it-enclise|{}|{}|{}}}}}".format(infinito,radice,gerundio)# Combina il testo prima e dopo il match con il nuovo modellonew_text=text_before+new_template+text_after# Sostituisci il testo nella paginaifnew_text!=text:page.text=new_textpage.save(summary="+ modèle {{it-enclise}}",botflag=True)# Nomi delle pagine da escluderepagine_da_escludere=[]# Ciclo attraverso le pagine della categoriaforpageincategory.articles():ifpage.title()notinpagine_da_escludere:replace_text_in_page(page)