Cellistbot | |
Cellistbot (Talk · Contribs) | |
Cellistbot al lavoro | |
Operatore: | Nickanc ♪♫@ |
---|---|
Approvato: | Si |
Flag: | 22:33, 9 apr 2011 (CEST) da Roberto Segnali all'Indiano |
Compito/i: | Richieste |
Edit rate: | Non definito, tendente a zero |
Edit period/s: | Periodico |
Automatico o manuale? | Automatico |
Linguaggio di programmazione/i: | framework pywikipediabot |
{{bots}} e {{nobots}} compatibile? | Si |
Codice sorgente pubblicato? | Si (usa pywikipediabot e tanta fantasia!) |
Gira su toolserver? | Sì |
Sono un bot controllato da Nickanc (discussioni · contributi). Ho mosso i primi passi col mio papà con l'aiuto di Gnumarcoo (discussioni · contributi). :)
Questo bot partecipa alla operazione Cycadales. Il suo lavoro a Utente:Cellistbot/cycadeles. |
Alcuni comandi per eseguire richieste
[modifica | modifica wikitesto]- Spostamento Wikilink : Sostituisci XXXX con il nome della pagina da cambiare, YYYY quella che la sostituisce, ZZZ il nome sezione di Wp:BOT/R:
- Quando il nome precedente della voce deve rimanere nel testo (es. spostare da scarpe a scarpa)
python replace.py -regex '\[\[XXXX\|([^\|\]]*)\]\]' '[[YYYY|\1]]' '\[\[(XXXX)\]\]' '[[YYYY|\1]]' '\[\[YYYY\|([Yy]YYY)\]\]' '[[\1]]' -nocase -summary:"[[Wp:Bot|Bot]]: spostamento wikilink come [[Teknopedia:Bot/Richieste#ZZZ|richiesto]]" -ref:"XXXX" -pt:00
- quando il nome precedente della voce non deve rimanere nel testo
python replace.py -regex "\[\[XXXX(\||\]\])" "[[YYYY\1" -nocase -summary:"[[Wp:Bot|Bot]]: spostamento wikilink - [[Teknopedia:Bot/Richieste#ZZZ|richiesta]]" -ref:"XXXX"
- PosteBot (termine coniato da Gnumarcoo (discussioni · contributi)): aggiunge un certo tmp substato in fondo alle pagine in un certo elenco: XXXX pagina elenco link YYYY pagina testo, ZZZ parte significativa del testo che lo qualifica inequivocabilmente
python add_text.py -links:"XXXX" -ns: -text:"{{subst:YYYY}}" -summary:"[[Wp:Bot|PosteBot]]: avviso" -except:"ZZZ" -noreorder -pt:00
Archiviazione semiautomatica
[modifica | modifica wikitesto]L'archiviazione semiautomatica consiste in:
- Un bot cancella dalla prima voce le sezioni da archiviare
- Un umano (di solito il botolatore) guarda il diff e copia le sezioni nell'archivio
Si tratta di insegnare al bot come riconoscere correttamente le sezioni da archiviare. Qui alcuni esempi per pagine molto specifiche:
python replace.py -regex '==[^=\n]+==\s*\{\{\s*RichiestaBot([^{}]*\{\{[^{}]*([^{}]*\{\{[^{}]*([^{}]*\{\{[^{}]*([^{}]*\{\{[^{}]*([^{}]*\{\{[^{}]*\}\})*\}\})*\}\})*\}\})*\}\})*[^{}]*\|\s*stato\s*=\s*(\[\[[^\]]*\]\] \S{0,3}(Non )?Fatto\S{0,3}|(\{\{\s*)*(non )?fatto(\s*\}\})*).*?\r\n==' '==' -dotall -recursive -nocase -summary:"[[Wp:Bot|Bot]]: [[Utente:Cellistbot#Archiviazione semiautomatica|archiviazione semiautomatica]]" -page:"Teknopedia:Bot/Richieste" -pt:00
L'immensa struttura ([^{}]*\{\{[^{}]*([^{}]*\{\{[^{}]*([^{}]*\{\{[^{}]*([^{}]*\{\{[^{}]*([^{}]*\{\{[^{}]*\}\})*\}\})*\}\})*\}\})*\}\})*
serve a prevenire che il bot vada in errore incontrando template annidati e template annidati negli annidati (e così via fino a 5 tmp annidati l'uno dentro l'altro).
python replace.py -regex '♠' '' '==([^=\n]+)==' '♠==\1==' '♠[^♠]*(\[\[[^\]]*\]\] \S{0,3}(Non )?Fatto\S{0,3}|\{\{\s*(non )?fatto\s*\}\})[^♠]*' '' '♠' '' -dotall -nocase -summary:"[[Wp:Bot|Bot]]: [[Utente:Cellistbot#Archiviazione semiautomatica|archiviazione semiautomatica]]" -page:"Progetto:Coordinamento/Accoglienza/Richieste" -pt:00
spiego brevemente la regex:
- siccome la struttura che determina l'archiviazione (il tmp fatto/non fatto) non si trova in una struttura fissa (come il template dell'esempio precedente), devo trovare un modo di delimitare le parti di testo entro cui cercare il template, per evitare che il bot peschi parti di testo troppo larghe o troppo piccole, archiviando così a metà. Uso un carattere inutilizzato (♠) come marcatore (si chiama \x{2406}), quindi per primo ripulisco da esso:
'♠' ''
- marco con esso le fine di sezione:
'==([^=\n]+)==' '♠==\1=='
- Ora posso usarlo con strutture del tipo [^....]* per trovare effettivamente le sezioni da abolire:
'♠[^♠]*(\[\[[^\]]*\]\] \S{0,3}(Non )?Fatto\S{0,3}|\{\{\s*(non )?fatto\s*\}\})[^♠]*'
- di nuovo ripulisco dal marcatore utilizzato
'♠' ''
- WP:RPP: prossimamente
PULSANTE DI EMERGENZA |
|
Amministratori: premete questo pulsante se il bot presenta malfunzionamenti (link diretto). |