Progetto:Bibbia/Diodati/Scripts python
Aspetto
Seguono alcuni scripts studiati specificamente per la gestione dei testi Bibbia/Diodati1885.
ATTENZIONE: gli scripts sono "di lavoro", pensati per essere utilizzati da Idle in modo semimanuale personalmente da Alex brollo, e non sono documentati. Servono per documentazione, o per essere sviluppati. Se non conoscete python a fondo, non provate a utilizzarli.
download.py
[modifica]Con un comando tipo:
grabLibro("1Re",21)
esegue le seguenti operazioni:
- scarica da laParola l'html di un riferimento version[]=Diodati;
- estrae il testo e attua una wikificazione;
- carica il testo nella pagina Progetto:Bibbia/Diodati1885/1Re
# -*- coding: cp858 -*- from time import sleep from urllib import FancyURLopener,quote from scripts import find_stringa import wikipedia class MyOpener(FancyURLopener): version = version = 'User-Agent: Alex (+http://it.wikisource.org/wiki/Utente:Alex_brollo)' opener=MyOpener() apostrofo=u'\u2019' def html(url="http://en.wikisource.org/wiki/Page:Horse_shoes_and_horse_shoeing.djvu/470"): page=opener.open(url+"?action=render") testo=page.read() f=open("dump.html","w") f.write(testo) f.close() return "Fatto" """http://amshistorica.cib.unibo.it/archivio/000006/000001/000397.djvu""" def grab(url,output,text=False): page=opener.open(url+"?action=render") content=page.read() if not text: open(output,"wb").write(content) risposta="File salvato in ",output else: risposta=content return content def grabCapitolo(urlBase="http://www.laparola.net/testo.php?versioni[]=#v&riferimento=#r",\ versioni="Diodati",riferimento="Genesi",capitolo="1"): url=urlBase.replace("#v",versioni).replace("#r",quote(riferimento)+capitolo) entities={' ':" ", 'ò':u"ò", 'ì':u"ì", 'è':u"è", \ 'à':u"à",'ù':u"ù", 'é':u"é",\ "<i>":"''","</i>":"''","<br /> ":"\n\n",\ "<strong>":"\n\n{{vb|"+capitolo+"|","</strong>":"}}","<p>":"","</p>":""} testo=unicode(grab(url,"",True),"cp858") testo=find_stringa(testo,"!-- RESULT ITEM START -->","<!-- RESULT ITEM END -->",0) testo=testo.replace("'",apostrofo) for i in entities: testo=testo.replace(i,entities[i]) testo=testo.replace("\n\n\n{{vb|","\n\n{{vb|").replace("\n\n\n{{vb|","\n\n{{vb|") testo=testo.replace("|1}}","|1|capolettera}}") #open("bibbia/"+riferimento+".txt","w").write(testo.encode("utf-8")) return testo def grabLibro(riferimento,fin): testo="" for i in range(1,fin+1): testo+=grabCapitolo(riferimento=riferimento,capitolo=str(i)) print i, sleep(1) print open("bibbia/"+riferimento+".txt","w").write(testo.encode("utf-8")) pagina=wikipedia.Page("it","Progetto:Bibbia/Diodati1885/"+riferimento) pagina.put(testo) return "Salvato",riferimento
Utilizza la funzione find_stringa():
def find_stringa(stringa,idi,idf,dc=0,x=None,side="left"): if side=="right": idip=stringa.rfind(idi) else: idip=stringa.find(idi) idfp=stringa.find(idf,idip+len(idi))+len(idf) if idip>-1 and idfp>0: if x!=None: while stringa[idip:idfp].count(x)>stringa[idip:idfp].count(idf): if stringa[idip:idfp].count(x)>stringa[idip:idfp].count(idf): idfp=stringa.find(idf,idfp)+len(idf) if dc==0: vvalore=stringa[idip+len(idi):idfp-len(idf)] else: vvalore=stringa[idip:idfp] else: vvalore="" return vvalore