Aller au contenu

Utilisateur:Àncilu bot/script/2

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
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)