Utilisateur:Àncilu bot/script/2
Apparence
import pywikibot
import re
# Connessione al sito
site = pywikibot.Site("fr", "wiktionary")
# Categoria target
category = pywikibot.Category(site, "Catégorie:Enclises en italien")
# Funzione per ottenere il parametro 'infinito' da un testo
def get_infinito(text):
match = re.search(r"{{lien\|([^}]+)\|it}}", text)
if match:
return match.group(1)
return ""
# Funzione per calcolare il parametro 'gerundio' da un titolo
def get_gerundio_from_title(title):
exceptions = {
"urre": "ucendo",
"mpiere": "mpiendo",
"mpire": "mpiendo",
"bere": "evendo",
"fare": "acendo",
"orre": "onendo",
"arre": "aendo",
"dire": "dicendo",
}
for exception, replacement in exceptions.items():
if title.endswith(exception):
return title.replace(exception, replacement)
if title.endswith("arlo"):
return title.replace("arlo", "ando")
elif title.endswith("erlo"):
return title.replace("erlo", "endo")
elif title.endswith("irlo"):
return title.replace("irlo", "endo")
# Se non ci sono corrispondenze nelle eccezioni, restituisci una stringa vuota
return ""
# Funzione per rimpiazzare il testo nella pagina
def replace_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)
if match:
# Trova la posizione del match
start = match.start()
end = match.end()
# Estrai il testo prima e dopo il match
text_before = text[:start]
text_after = text[end:]
# Estrai il parametro 'infinito' dal testo dopo il match
infinito = get_infinito(text_after)
if infinito:
# Estrai la radice dal titolo della pagina
radice = page.title()[:-2]
# Calcola il parametro 'gerundio' dalla radice
gerundio = get_gerundio_from_title(page.title())
# Sostituisci il modello con i valori calcolati
new_template = "=== {{{{S|verbe|it|flexion}}}} ===\n{{{{it-enclise|{}|{}|{}}}}}".format(
infinito, radice, gerundio)
# Combina il testo prima e dopo il match con il nuovo modello
new_text = text_before + new_template + text_after
# Sostituisci il testo nella pagina
if new_text != text:
page.text = new_text
page.save(summary="+ modèle {{it-enclise}}", botflag=True)
# Nomi delle pagine da escludere
pagine_da_escludere = []
# Ciclo attraverso le pagine della categoria
for page in category.articles():
if page.title() not in pagine_da_escludere:
replace_text_in_page(page)