Ovvero tutto quello che avete sempre voluto sapere sui bot, avete osato chiedere, ma non avete capito lo stesso...
Questa pagina è di per sè un continuo work in progress: tutto quello che metto qui è perchè GiacoBot ha imparato a farlo...
Se ritieni che qualche cosa qui presente possa essere una tua creazione, è quasi certamente così... Se non vuoi vederla qui, segnalamelo pure...
Grazie un po' per tutto a BomBot, FilBot, AlfioBot, X-Bot. Grazie ancora di più, ovviamente, ai loro creatori...
Riguardo alla creazione da zero di un botolo, ti rimando all'ottima guida in cinque passi a cura di Filnik...
Per iniziare a fare i primi lavoretti, occorre anzitutto aprire il prompt del DOS (Windows) e digitare cd C:\\pywikipedia (se hai salvato il pacchetto in un luogo diverso, sostituiscine il percorso esatto). Devi quindi fare il login, digitando login.py (va fatto solo all'inizio, ovviamente)... La prima volta devi settare il login.py con le info specifiche del tuo botolo (come? clicca qui)...
A questo punto sei pronto per inserire un comando (non ridete, io c'ho messo un po'...) che può (deve?) contenere i seguenti pezzi:
Un parametro che si può aggiungere alla riga di comando è -always: il suo inserimento genera sostituzione automatica, senza richiesta volta per volta (da usare solo se si è certi della bontà del comando impartito). Altri parametri utili per restringere e specificare l'analisi:
Alcune regex relative al replace.py, che fa sostituzioni (l'oggetto della modifica va riportato come "termine da sostituire" "termine sostituito").
Alcuni esempi (grazie a Filbot):
replace.py -start:! -regex "([Pp])erch(è|[e'])" "\1erché"
replace.py -regex -start:! "([Cc]hec|[Pp]er|[Aa]ffin|[Aa]lcun|[Gg]iac|[Ss]ic|[Ff]in|[Pp]oi|[Bb]en|[Aa]ccioc|[Ff]uor|[Mm]ac)ch(è|e['])([^'.])" "\1ché\3"
replace.py -regex -start:! "([^D])E'([^'.])" "\1È\2"
replace.py -start:! -regex "== ?[Vv]edi [Aa]nche ?==" "== Voci correlate =="
replace.py -regex -start:! " n(è|e['`´‛’]) " " né "
replace.py -regex -start:! " pò" " po'"
Se l'oggetto di sostituzione è troppo lungo, l'estetica della cronologia ne soffre (ed anche la pazienza dei patrollatori): può dunque essere utile modificare il file replace.py aggiungendo uno specifico -fix. Ad esempio, se inserite direttamente nella riga di comando la seguente regex
replace.py -regex -start:! "([Cc]hec|[Pp]er|[Aa]ffin|[Aa]lcun|[Gg]iac|[Ss]ic|[Ff]in|[Pp]oi|[Bb]en|[Aa]ccioc|[Ff]uor|[Mm]ac)ch(è|e['])([^'.])" "\1ché\3"
vi troverete a che fare con oggetti di modifica mostruosi come questo... Un modo per risolvere il problema può essere quello di fare anzitutto una copia di sicurezza del file replace.py e di provare a modificarlo inserendo una sintassi del genere
'nomefix': { 'regex': True, 'msg': { 'it':u' Bot: inversione accenti' }, 'replacements': [ (u"(?m)([Cc]hec|[Pp]er|[Aa]ffin|[Aa]lcun|[Gg]iac|[Ss]ic|[Ff]in|[Pp]oi|[Bb]en|[Aa]ccioc|[Ff]uor|[Mm]ac)ch(è|e['])([^'.])", ur"\1ché\3"), ] },
subito prima di
} class XmlDumpReplacePageGenerator:
Nella riga di comando adesso si dovrà usare il parametro -fix, che richiami la modifica specifica (nomefix ovviamente può essere modificata a piacimento) all'interno del file. Dunque (ad esempio):
replace.py -start:! -fix:nomefix
Il risultato è una cosa del genere, evidentemente più fine (e umana)... Lo script completo di questo esempio specifico lo trovi anche qui...
Ovviamente, prima di utilizzare in automatico la funzionalità di questi pasticcetti, occorre un congruo numero di prove manuali...
Quando ti senti più sicuro (ed il tuo bot ha avuto la fiducia della comunità), puoi iniziare a pensare di scrivere tu stesso delle regex (senza rubarle per forza ad altri...): puoi trovare un sito utile per imparare qui.
Non dimenticare, in ogni caso, che puoi dare un'occhio anche al manuale presente su meta: le prime cose ormai le saprai fare bene, ma esso contiene una dettagliata descrizione di molti script presenti nel pacchetto (se poi vuoi tradurne qualcuno dall'inglese...)...