Utente:Qualc1/bot

Da Wikisource.
Jump to navigation Jump to search
Icon tools.png LAVORI IN CORSO! - WORK IN PROGRESS!



Questa pagina spiega come usare due programmini che ho scritto per effettuare "caricamenti di massa" di testi su wikisource. Gli eseguibili e i codici sorgenti di questi si trovano su http://un1c0.altervista.org . I due programmmi che bisogna scaricare si chiamano dir_upload.py e MioBot.zip: il primo è scritto in w:Python, e necessita quindi l'installazione della piattaforma sul PC. NB: Se hai Windows, molto probabilmente non possiedi Python. Seguendo i link indicati sotto riuscirai farlo molto semplicemente. Il secondo è invece scritto in w:Java, ed è completamente indipendente dal primo. Sono stati concepiti per agire in maniera separata e complementare: prima si spezzetta un testo con MioBot, poi si inserisce massivamente con dir_upload.

Eventualmente si può solo spezzettare/formattare un opera con MioBot e poi caricarla a mano; oppure creare a mano le pagine (salvate come file di testo in un unica cartella) che si vogliono caricare e poi farle caricare da dir_upload.



MioBot.jar[modifica]

Cosa fa[modifica]

Legge un file1 che contiene un opera composta da vari capitoli o poesie, e lo spezzetta in vari file2, ognuno dei quali rappresenta la pagina di capito o poesia (tutte queste sottopagine generate sono formattare, cioè hanno i template opera e capitolo che li collegano).
NB:il file deve essere codificato in UTF-8, e questo servirà dopo, nell'upload: un'altra codifica infatti non permettera di vedere i caratteri speciali (i.e. vocali accentate). Quindi se pprendi un testo in formato .txt (come quelli su LiberLiber), devi cambiargli codifica. Lo puoi fare con un editor relativamente avanzato (prova questo).

Istruzioni per l'uso[modifica]

Prima di tutto bisogna controllare di avere installato la Java Runtime Environment (JRE) versione almeno 5.0.
Per usarlo bisgna comunicargli come deve spezzettare l'opera tramite un apposito file di conigurazione contenente le informazioni necessarie secondo il seguente schema:

nomeAutore=il nome dell'autore
cognomeAutore=il cognome dell'autore
regexDivisore=l' espressione regolare che identifica il titolo di un capitolo 
titolo=il titolo dell'opera
nomePagina=il nome della pagina principale dell'opera
annoPubblicazione=l'anno di prima pubblicazione
poesie=se è SI il testo viene messo tra i tag <poem></poem> e vengono numerati i versi, se è NO è lasciato come è
regexIgnora=l'espressione regolare per riconoscere una riga da ignorare (la riga, come se non esistesse, non viene trasferita nei file che genera)
cartellaDestinazione=la cartella dove salvare le pagine prodotte (percorso assoluto. es: C:\pagine_generate, /home/user1/wiki_dest )

Dopo aver avviato MioBot.jar (da linea di comando con java -jar MioBot.jar o da interfaccia grafica) appare un interfaccia simila a questa, dove si possono selezionare il file da spezzettare e quello di configurazione, quindi cliccando su spezzetta vengono generati i file contenenti le pagine (capitoli o poesie).

Esempio[modifica]

  • File contenente l'opera che si vuole spezzettare:
I
Un nostro concittadino mi raccomandò, ...........
BlaBla1...

II
L’uno de’ manoscritti è forse di t..........
BlaBla2 altro...

III
Bensì gli uomini letterati, che Didimo...........
Testo qualsiasi...

IV
Tuttavia, affinché i lettori abbiano saggio ..........
QualCosa...

XVI
Mi diede inoltre copia di un epitaffio che Didimo s’era apparecchiato molti anni innanzi; ed io lo pubblico,...
<center><span style="font-variant:small-caps">
 <poem> 
 '''didymi clerici'''
 '''vitia virtus ossa'''
 '''hic post annos †††'''
 '''conquieverunt'''
 </poem>
 </span></center>
  • File di configurazione:
nomeAutore=Ugo
cognomeAutore=Foscolo
regexDivisore=^([IVXLC]*)
titolo=Notizia intorno a Didimo Chierico
nomePagina=Notizia intorno a Didimo Chierico
annoPubblicazione=1813
poesie=NO
regexIgnora=^-_-°°QLCINTROVABILE$
cartellaDestinazione=C:\pagine_generate


  • MioBot.jar genererà nella cartella C:\pagine_generate i seguenti file:

wikiFile1, contenente:

Notizia intorno a Didimo Chierico
{{opera
|NomeCognome=Ugo Foscolo
|TitoloOpera=Notizia intorno a Didimo Chierico
|NomePaginaOpera=Notizia intorno a Didimo Chierico
|AnnoPubblicazione=1813
|TitoloSezione=
}}
=== Indice ===
*[[Notizia intorno a Didimo Chierico/I|I]]
*[[Notizia intorno a Didimo Chierico/II|II]]
*[[Notizia intorno a Didimo Chierico/III|III]]
*[[Notizia intorno a Didimo Chierico/IV|IV]]
*[[Notizia intorno a Didimo Chierico/XVI|XVI]]

wikiFile2, contenente:

Notizia intorno a Didimo Chierico/I
{{opera
|NomeCognome=Ugo Foscolo
|TitoloOpera=Notizia intorno a Didimo Chierico
|NomePaginaOpera=Notizia intorno a Didimo Chierico
|AnnoPubblicazione=1813
|TitoloSezione=I
}}
{{capitolo
|CapitoloPrecedente=
|NomePaginaCapitoloPrecedente=
|CapitoloSuccessivo=II
|NomePaginaCapitoloSuccessivo=Notizia intorno a Didimo Chierico/II
}}
Un nostro concittadino mi raccomandò, ...........
BlaBla1...

{{capitolo
|CapitoloPrecedente=
|NomePaginaCapitoloPrecedente=
|CapitoloSuccessivo=II
|NomePaginaCapitoloSuccessivo=Notizia intorno a Didimo Chierico/II
}}

wikiFile3, contenente:

Notizia intorno a Didimo Chierico/II
{{opera
|NomeCognome=Ugo Foscolo
|TitoloOpera=Notizia intorno a Didimo Chierico
|NomePaginaOpera=Notizia intorno a Didimo Chierico
|AnnoPubblicazione=1813
|TitoloSezione=II
}}
{{capitolo
|CapitoloPrecedente=I
|NomePaginaCapitoloPrecedente=Notizia intorno a Didimo Chierico/I
|CapitoloSuccessivo=III
|NomePaginaCapitoloSuccessivo=Notizia intorno a Didimo Chierico/III
}}
L’uno de’ manoscritti è forse di t..........
BlaBla2 altro...

{{capitolo
|CapitoloPrecedente=I
|NomePaginaCapitoloPrecedente=Notizia intorno a Didimo Chierico/I
|CapitoloSuccessivo=III
|NomePaginaCapitoloSuccessivo=Notizia intorno a Didimo Chierico/III
}}

...

wikiFile6, contenente:

Notizia intorno a Didimo Chierico/XVI
{{opera
|NomeCognome=Ugo Foscolo
|TitoloOpera=Notizia intorno a Didimo Chierico
|NomePaginaOpera=Notizia intorno a Didimo Chierico
|AnnoPubblicazione=1813
|TitoloSezione=XVI
}}
{{capitolo
|CapitoloPrecedente=IV
|NomePaginaCapitoloPrecedente=Notizia intorno a Didimo Chierico/IV
|CapitoloSuccessivo=
|NomePaginaCapitoloSuccessivo=
}}
Mi diede inoltre copia di un epitaffio che Didimo s’era apparecchiato molti anni innanzi; ed io lo pubblico, affinché s’egli mai fosse morto, ed avesse agli ospiti suoi lasciato tanto da porgli una lapide, lo facciano scolpire sovr’essa: 
<center><span style="font-variant:small-caps">
<poem> 
'''didymi clerici'''
'''vitia virtus ossa'''
'''hic post annos †††'''
'''conquieverunt'''
</poem>
</span></center>
{{capitolo
|CapitoloPrecedente=IV
|NomePaginaCapitoloPrecedente=Notizia intorno a Didimo Chierico/IV
|CapitoloSuccessivo=
|NomePaginaCapitoloSuccessivo=
}}


  • Ottenuti questi file si possono o caricare manualmente (la prima riga indicata il titolo della pagina, il rimanete il testo contenuto nella pagina) o caricare in automatico tramite dir_upload.py.


dir_upload.py[modifica]

Cosa fa[modifica]

Legge tutti i file contenuti in una cartella, ognuno dei quali rappresenta una pagina2, e li carica su un wiki.

Istruzioni per l'uso[modifica]

Essendo basato sul PyWikipediaBot prima di tutto bisogna installare e configurare PyWikipediaBot e poi copiare il file dir_upload.py nella stessa cartella di installazione.

Quindi si può avviare lo script nello stesso modo in cui si avviano quelli già inclusi (vedere sempre w:Come usare il wikipediabot in linguaggio python); il primo ed unico parametro da passargli è la cartella da cui caricare i file.

Es:

cd C:\Python24\wikiBot
python dir_upload.py C:\pagine_generate

Effetto: prima si sposta nella cartella C:\Python24\wikiBot dove è installato PyWikipediaBot; poi avvia lo script dir_upload.py che caricherà i file contenuti in C:\pagine_generate.


Espressioni regolari[modifica]

Introduzione[modifica]

Come fare a comunicare ad un computer qualcosa del tipo

"Voglio riga che inizi con la parola 'Capitolo' e continui con un numero"

oppure

"Voglio una riga che inizia con '-->' continua con un titolo tutto in maiuscolo e termina con '<--'"  ???

Le espressioni regolari sono una risposta a questa domanda. Ovvero sono un formalismo per identificare un insieme di "parole desiderate". Ecco subito qualche esempio:

Espressione regolare Corrispondenza
^Ciao$ Una riga contente la sola parola 'Ciao'. Molto utile ;)
^Cap [1-9][1-9]$ Una riga che inizia con 'Cap ', continua con due numeri conpresi tra 1 e 9, termina.
^Cap: [A-Z]* Una riga che inizia con 'Cap ' seguita da un qualsiasi numero di lettere maiuscole (cioè una parola maiuscola o niente).
^[IVXLCD]+$ Uno o più caratteri scelti tra quelli tra parentesi quadre (cioè una riga contenente un solo numero romano)

Come si può vedere dagli esempi una regex (diminutivo di espressione regolare) è composta da dei caratteri "normali" (tipo 'Cap ' o 'Ciao') e da caratteri "speciali" (ad esempio '^', '$', '[') che assumono significati particolari.

Per vedere il significate dei caratteri speciali si possono consultare le tabelle presenti su wikibook.


Esempi pratici di espressioni regolari per riconosce titoli[modifica]

Espressione regolare Corrispondenza
^(Capitolo.*)$ Riconosce i titoli di Fioretti di San Francesco.
Es: Capitolo primo, Capitolo secondo...
Tutte le rige che iniziano per 'Capitolo' e continuano con qualsiasi cosa.
^([IVX]+)$ Riconosce i titoli di Il fanciullino.
Es: I, II, III...
Tutte le righe che contengono uno o più caratteri a scelta tra 'I', 'V', 'X'.
^(Erbaggi e legumi/[0-9]+\..*)$ Es: Erbaggi e legumi/376. Zucchini col regamo, Erbaggi e legumi/377. Zucchini ripieni...
Tutte le righe che iniziano con 'Erbaggi e legumi/' seguito da uno o più numeri, seguito da '.', seguito da qualsiasi cosa.
^(.*)$ Riconosce tutte le righe come titoli.
Se è usata come regexDivisore per MioBot, genera delle pagine con solo lo scheletro di titoli e template senza testo contenuto.
^----(.*)----$ Riconosce come riga contenente un titolo ogni riga che inizia e finisce con '----'. Pero considera come titolo _solo_ i caratteri compresi tra i '-' iniziali e finali, cioè la parte corrispondente all'espressione tra parentesi tonde.


Note[modifica]

  1. Questo deve essere stato salvato in utf-8
  2. 2,0 2,1 Un file che rappresenta una pagina è un file che
    utilizza l'encoding utf-8
    ha nella prima riga il titolo della pagina che rappresenta
    ha nelle rimanenti righe il contenuto della pagina.


Altro[modifica]

Spero che sia abbastanza comprensibile quello che ho scritto e che funzioni decentemente il bot... Ma visto che non sono sicuro di nessuna delle due cose, non esitate a chiedermi qualsiasi informazione qui sotto...