Progetto:Bibbia/Diodati/Scripts python

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:

  1. scarica da laParola l'html di un riferimento version[]=Diodati;
  2. estrae il testo e attua una wikificazione;
  3. 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