Come usare il python wikipediabot
From Meta, a Wikimedia project coordination wiki
In other languages: en - es - fa - fr - hu - it - ja - ko - nl - pl - pt - ru - sv - zh-hant
- Se si ha bisogno di ulteriore aiuto nel settare il pywikipediabot, sono disponibili i canali: #botolatori @ irc.eu.freenode.net dove è possibile chiedere aiuto in italiano, e #pywikipediabot @ freenode server dove è possibile chiedere aiuto in inglese.
Il framework di Wikipediabot Python (abbreviata pywikipedia) è un framework standard per semplificare la creazione di bot script per MediaWiki. Il pacchetto include una serie di script già pronti per i compiti più comuni di un bot. Questa pagina introduce il framework e ne fornisce la documentazione.
Nel caso troviate questa guida troppo tecnica e non molto chiara, si può consultare la guida su botwiki, più semplice e veloce sebbene offra solo le informazioni essenziali per configurare un Bot.
Contents |
[edit] Installazione iniziale
[edit] Download
Per usare un bot devi scaricare il software relativo, nonché una versione di Python 2.4 o maggiore.
- Python è già presente in gran parte delle distribuzioni Unix, e quindi non deve essere aggiunto. In caso contrario, può essere scaricato da http://www.python.org/download/. Python funziona in tutti i sistemi operativi più comuni (Unix, Linux, Mac, Windows).
- Il software per i bot si può scaricare da Sourceforge, dove puoi scaricarlo come pacchetto, ottenendo però una versione spesso datata. Le release generate ogni notte si possono invece trovare sul toolserver. (Vedi Versione corrente sotto)
Una volta scaricato, il software dei bot è pronto, non necessita di alcuna installazione.
[edit] Versione corrente
Una versione aggiornata si può ottenere via SVN. Sotto Unix è uno standard, per Windows si consiglia TortoiseSVN. Fai il "check out" dall'indirizzo http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/ .
[edit] Comandi
Per scaricare il bot dalla linea di comando con SVN, digita: $ svn checkout http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/ pywikipedia
Omettendo i file di controllo ortografico (nettamente più veloce): $ svn checkout --ignore-externals http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/ pywikipedia
Nella tua cartella attuale (nel dubbio su quale sia, in Linux, Cygwin e altri ambienti UNIX puoi dare il comando pwd o controllare la variabile $PWD) verrà creata una nuova cartella chiamata 'pywikipedia'.
Per programmi non da linea di comando, l'unica informazione necessaria è l'indirizzo del repository: http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/
[edit] Mailing list bot
È probabilmente una buona idea iscriverti alla mailing list dei bot (vedi http://lists.wikimedia.org/mailman/listinfo/Pywikipedia-l). Ogni volta che un file del software dei bot viene cambiato, un avviso viene mandato in lista, così sai quando devi aggiornare.
[edit] Configurazione
Il software dei bot supporta solo lo skin "monobook".
[edit] Preparazione
[edit] Approvazione del bot
Assicurati che il tuo bot sia stato approvato dalla comunità della Wikipedia su cui hai in mente di utilizzarlo. I progetti differenti hanno diverse procedure e pretendono diversi requisiti. Se non sei sicuro, dovresti richiedere informazioni alla comunità locale. In it.wiki, i bot devono seguire le regole e la procedure stabilite dalla comunità in lingua italiana.
[edit] Creare un account per il bot
Usando un normale browser, puoi creare un nuovo account nella Wikipedia scelta. Il nome dovrebbe specificare che è un bot e, preferibilmente, chi lo sta utilizzando. Sebbene esistano molteplici varianti per far ciò, il metodo più comune è di combinare il nick dell'utente con la parola "bot", ad esempio "Nomebot". Assicurati di selezionare la skin Monobook nelle preferenze dell'account (questa è l'impostazione della maggior parte delle wikipedie, inclusa quella italiana).
[edit] Configurare il bot
Crea un nuovo file intitolato user-config.py nella directory del bot. Aggiungi poi il seguente codice, cambiandone i valori in modo appropriato:
mylang = 'it' family = 'wikipedia' usernames['wikipedia']['it'] = 'EsempioBot' console_encoding = 'utf-8' use_api = True
- mylang (linguaggio del codice): è il linguaggio ISO 693 di Wikipedia, in genere specificato dal sottodominio (it.wikipedia.org); Il codice che indica Wikipedia in lingua italiana è "it". Se il tuo bot deve girare su Wikimedia Commons, il codice da utilizzare è "commons".
- family (nome del progetto): è il nome del progetto, ad esempio "wikipedia", "wiktionary" o "wikisource". Se la wiki di riferimento non fa parte di Wikimedia, leggi Myproject family.py e Pywikipedia bot in progetti non-Wikimedia.
- usernames (nome utente): è il nome utente del bot, con associato il linguaggio di programmazione e il nome del progetto. Puoi selezionare account multipli per usarlo su progetti differenti.
- console encoding (console di codifica): se stai lavorando in un Mediawiki Unicode (come Wikimedia), è necessario impostare la codifica UTF-8 per i caratteri della tua console. In questo modo i caratteri UTF non appariranno come punti interrogativi ("????"). Puoi rimuovere questa linea di codice se vuoi usare la codificazione di default della tua console.
[edit] Eseguire uno script
Il framework di pywikipedia accetta gli input dell'utente da linea di comando, chiamato Prompt dei comandi in Windows. Raggiungi (tramite linea di comando) la directory contenente i file e digita "python nomescript.py" per attivare uno script, tralasciando facoltativamente "python" se stai utilizzando Windows.
Il primo script che si dovrebbe eseguire è login.py, che permetterà al bot di effettuare l'accesso su Wikipedia o nel progetto scelto. Quando questo chiederà d'inserire la password, inserisci la password dell'account del bot. In genere questo script dovrebbe essere eseguito solamente una volta, poiché il bot, solitamente, non si disconnette.
In seguito, si può utilizzare uno degli script già pronti, citati nell'elenco sottostante. Ogni script accetta vari argomenti che gli specificano cosa esso debba fare, ad esempio cosa sostituire o quale pagina modificare. Esiste un set di argomenti standard che è compatibile con tutti gli script; per ulteriori informazioni, controlla la sezione Argomenti standard.
(nota: i wikilink dell'elenco che puntano a pagine in italiano sono in corsivo)
- Script Principali
- category.py
- imagetransfer.py
- interwiki.py
- redirect.py
- replace.py — cerca e sostituisce nelle voci, usando facoltativamente le regex.
- solve disambiguation.py
- table2wiki.py
- template.py
- upload.py
- weblinkchecker.py
- spellcheck.py
- Altri script usati nella Wikipedia in italiano:
- Altri bot script:
- Programmi ausiliari:
[edit] Argomenti standard
Ogni script accetta vari argomenti che gli specificano cosa esso debba fare, ad esempio cosa sostituire o quale pagina modificare. Di seguito è presente un elenco di argomenti standard è compatibile con tutti gli script, salvo diverse indicazioni scritte in modo esplicito nel codice dello stesso.
| Argomento | Spiegazione |
|---|---|
| -help | fornisce una lista di argomenti standard (ovvero, questa lista, ma in lingua inglese) e un help specifico sulla sintassi dello script, se è disponibile. |
| -lang:xx | stabilisce la lingua della wiki. Ha la precedenza sull'user-config.py. |
| -family:xyz | stabilisce il nome del progetto wiki (per esempio, wikipedia o wikitionary). Ha la precedenza sull'user-config.py. |
| -log | abilita i log. Questi verranno salvati nella sottocartella "logs". |
| -log:xyz | abilita i log, salvando il file risultante con il nome xyz. |
| -nolog | disabilita i log. |
| -putthrottle:nn | stabilisce un tempo minimo (in secondi) per il salvataggio delle pagine da parte del bot. |
Esempio:
python nomescript.py -lang:it -family:wiktionary // Esegue lo script di nome "nomescript.py" su it.wiktionary
[edit] "Flag" del bot
Un massiccio uso dei bot potrebbe ingombrare la pagina "Ultime modifiche". Per evitare che ciò accada, devi registrare il tuo bot in modo da inserirlo nel gruppo "Bot". In questo modo, nelle RC, gli edit del tuo bot saranno nascosti, eccetto nel caso in cui un utente non selezioni appositamente l'opzione per visualizzare gli edit dei bot. È necessario ottenere il flag per il tuo bot se esso deve modificare molte pagine ogni volta che viene avviato.
Lo status di bot può essere assegnato da un burocrate. Se il tuo progetto non dispone di burocrati o se il tuo bot deve girare su meta, la richiesta deve essere fatta nella pagina Requests for bot status. Spesso gli steward avranno bisogno di una prova che dimostri che la comunità locale è favorevole al bot.
Per registrare il tuo bot su it.wiki consulta la pagina apposita.
[edit] Come riportare un bug
Quando riporti un bug per favore includi:
- La versione del PyWikipediaBot che si sta usando. È consigliato testare prima se il bug è ancora presente nell'ultima revisione disponibile sul server SVN.
- La versione di Python (python -V), il tipo e la versione del sistema operativo in uso (Windows, Linux, MacOS...). Puoi anche usare lo script version.py.
- Un buon sommario
- Una completa descrizione del problema
- Sufficienti informazioni su come riprodurre il bug (script, linia di commando, famiglia e suo relativo linguaggio usati)
- Che cosa lo script invia sulla console (incluso il traceback se si sta riportando un crash)
Per inviare un nuovo bug visita il bug tracker fornito da SourceForge.
[edit] Avanzato
[edit] Richiesta di nuove caratteristiche
Se vuoi avere una funzione che al momento non è fornita da nessun altro bot, puoi chiedere ad uno dei programmatori di scrivere il codice per te. O, ancora meglio, puoi provare a lavorarci da solo per utilizzarla col tuo bot. Python, infatti, è un buon linguaggio e non è molto difficile da imparare. Perciò ti invitiamo a provarci.
[edit] Usare il bot per una wiki locale
Consulta Pywikipedia bot in progetti non-wikimedia per le informazioni sulla configurazione del tuo bot per usarlo in un progetto non facente parte di Wikimedia, creati con il software Mediawiki.
[edit] Consigli per scrivere il tuo bot
Qui ci sono alcuni consigli basilari per iniziare a scrivere il tuo bot:
- Innanzi tutto assicurati di aver settato il file user-config.py (se non l'hai fatto, controlla il paragrafo Configurare il bot)
- Usa
import wikipediaper accedere al framework di pywikipedia. - Per scaricare una pagina, utilizza il seguente codice, dove pageName è, ad esempio, "Wikipedia:Bot" o "India":
site = wikipedia.getSite() page = wikipedia.Page(site, pageName) text = page.get() wikipedia.stopme()
- Per aggiornare una pagina, utilizza invece:
page.put(newText)
Se desideri aggiornare una pagina, ti dovrai loggare:
import login
loginMan = login.LoginManager('your pass', False, s)
- Concludi sempre il tuo bot con
wikipedia.stopme(). Se te ne dimentichi, il processo che hai iniziato non terminerà dopo aver eseguito lo script e avrà bisogno di un po' di tempo per "scadere".
Se hai più di un processo attivo, pywikipedia metterà ogni nuovo processo in standby per un po' di tempo prima di eseguirlo.
- Ecco un esempio di aggiunta di testo alla Pagina delle prove:
import wikipedia
import login
s=wikipedia.Site('it')
login.LoginManager('la tua password', False, s)
p = wikipedia.Page(s,'Wikipedia:Pagina delle prove')
p.get()
p.put(pget() + '&n\nProva')
wikipedia.stopme()
- da un'occhiata ad alcuni dei file di pywikipedia per altre idee -- replace.py è relativamente semplice da leggere anche se sei nuovo nell'utilizzare pywikipedia.
- puoi trovare tutti i metodi "wikipedia.Page" nel file wikipedia.py.
[edit] Caricare le patch
Se hai modificato il bot e vuoi spedire una patch agli sviluppatori:
- Aggiorna la versione corrente (ciò unirà i tuoi cambiamenti con i miglioramenti già compiuti al repository SVN);
- Risolvi gli eventuali conflitti causati dall'update (verifica ciò usando
grep "====="); - Quindi digita:
$ svn diff NOMESCRIPT.py > svn.diff
Puoi poi spedire il file svn.diff agli sviluppatori e chiedere loro di includere i cambiamenti (è meglio che tu riveda la differenze prima di spedirglielo). Le linee inizianti con "?" potrebbero essere rimosse.