Progetto:Bot/Programmi in Python per i bot/dt.py

Raccolta di script WIP per le pagine di Indice:Dizionario triestino (1890).djvu.

from scripts import *
import os, re

fileTxt="txt/dt - #np.txt" #np =str(numeroPagina).zfill(4)
sigle=[u' zl.', u' vnp.', u' vn.', u' vezz.', u' vet.', \
           u' va.', u' v. pi.', u' v. ant.', u' v.', u' teol.', \
           u' t.', u' sup.', u' spreg.', u' smp.', u' smf.', u' sm.',\
           u' sfp.', u' sf.', u' scherz.', u' s. corti.', u' prov.', \
           u' pron.', u' pr.', u' poet.', u' pl.', u' pir.', u' pes.', \
           u' pegg.', u' part.', u' p. sim.', u' p. p.', u' p. e.', \
           u' ost.', u' n. pl. sing.', u' mus.', u' mit.', u' min.', \
           u' met.', u' med.', u' masch.', u' mar.', u' m. volg.', \
           u' m. triv.', u' m. prov.', u' m. furb.', u' m. basso', \
           u' m. avv.', u' loc. prov.', u' loc. avv.', u' leg.', \
           u' inter.', u' intens.', u' idr.', u' gioc.', u' geol.', \
           u' geogr. ', u' gen.', u' fr. met.', u' fig.', u' femm.', \
           u' farm.', u' escl.', u' eccl.', u' ecc.', u' der.', u' chim.', \
           u' cacc.', u' c. s.', u' bot.', u' avv.', u' astr.', \
           u' art. e mest.', u' archit.', u' arald.', u' anat.', u' agr.', \
           u' agg.']

def carica(pagina=1, carica=False):
    fileLocale=fileTxt.replace("#np",str(pagina-1).zfill(4))
    testo=unicode(open(fileLocale).read(),"utf-8")
    testo=testo.replace(u'\ufeff',"",1)
    txt=testo.split()
    print txt[:8]
    ri=[]
    while len(txt[0])<4:
        r=txt.pop(0)
        testo=testo.replace(r,"",1)
        ri.append(r)
        if len(ri)==5:
            break
    testo=testo.strip(" \n\t")
    if testo[0].isupper():
        testo="\n"+testo

    testo=testo.replace('"',u"\u201c").replace("-\n\n","").replace("-\n","").replace("\t"," ").replace(u"\u25a0"," ")
    testo=testo.replace("| ","\n").replace("! ","\n")
    testo=testo.replace(';\n\n',u"; ").replace(';\n1 ',u"\n")
    lista=produci_lista(testo,"\n",",",1)

    for i in lista:
        if i.replace("\n","")[0:1].isupper():
            lemma=i.replace("\n","").replace(" ","").replace(",","")
            testo=testo.replace(i,"\n{{lemma|"+lemma+"}}"+",")
    testo=testo.replace("\n"," ")
    testo=testo.replace("{{lemma|","\n\n{{lemma|").strip("\n ")

    for sigla in sigle:
        if sigla in testo:
            testo=testo.replace(sigla," {{dtAbbr|"+sigla.strip().replace(" ","_")+"}}")
    testo=testo.replace("_"," ")
    testo="{{Colonna}}\n"+testo+"\n{{FineColonna}}"
    if len(ri)==5:
        testo="{{RigaIntestazione|%s|%s|%s|riga=si}}" % (ri[0],ri[1]+" "+ri[2]+" "+ri[3],ri[4]) + testo
    else:
        testo="{{RigaIntestazione|||}}"+testo
    l=len(testo)
    half=testo.find("{{lemma|",len(testo)/2)
    testo=testo[:half]+"{{AltraColonna}}\n"+testo[half:]
    if carica:
        wikipedia.Page("it","Pagina:Dizionario triestino (1890).djvu/"+str(pagina)).put(testo)
    open(fileLocale,"w").write(testo.encode("utf-8"))
    return

def aggiusta(pagina):
    testo=leggi_pagina("Pagina:Dizionario triestino (1890).djvu/"+str(pagina))

    for sigla in sigle:
        if sigla in testo:
            testo=testo.replace(sigla," {{dtAbbr|"+sigla.strip().replace(" ","_")+"}}")
    testo=testo.replace("_"," ")
    scrivi_pagina(testo,False,"Pagina:Dizionario triestino (1890).djvu/"+str(pagina))
    return

def scarica(ini=1,fin=579):
    for pagina in range(ini,fin):
        print pagina,
        testo=leggi_pagina("Pagina:Dizionario triestino (1890).djvu/"+str(pagina))
        fileLocale=fileTxt.replace("#np",str(pagina-1).zfill(4))
        open(fileLocale,"w").write(testo.encode("utf-8"))
    return

def lemmi(ini=1, fin=578):
    l=[]
    for pagina in range(ini,fin):
        fileLocale="txt/dt - #np.txt".replace("#np",str(pagina-1).zfill(4))
        testo=unicode(open(fileLocale).read(),"utf-8")
        lista=produci_lista(testo,"{{lemma|","}}",0)
        print lista
        for i in lista:
            l.append([i.lower(),pagina])



        #scrivi_pagina(testo,False,"Pagina:Dizionario triestino (1890).djvu/"+str(pagina))
    return l

def dtLemma():
    t=carica_pcl("dizLemmi","")
    return t
    kt=t.keys()
    testo=u""
    for i in kt:
        
        kpag=t[i][0][1]
        print kpag
        for n in range(len(t[i])-1):
            testo+="|"+t[i][n][0]
            if t[i][n+1][1]!=kpag:
                testo+="="+str(n)+"\n"
                kpag=t[i][n+1][1]
    return testo
            

def somma(lista):
    testo=u""
    k=lista[0][1]
    for i in range(len(lista)-1):
        testo+="|"+lista[i][0]
        if lista[i][1]!=lista[i+1][1]:
            testo+="="+str(lista[i][1])+"\n";
    testo+=lista[i][0]+"="+str(lista[i+1][1])
    testo="{{#switch:{{{1}}}\n"+testo+"}}"
    return testo

def carica_abbr(iniz=u"lmnopqrstuv"):
    t=carica_pcl("dizLemmi","")
    for car in iniz:
        lista=t[car]
        lista=sorted(lista,key=lambda x: x[1])
        testo=somma(lista)
        pagina="Template:DtLemma/"+car.upper()
        scrivi_pagina(testo,False,pagina,commento="Aggiornamento")
    return

        
# t=carica_pcl("dizLemmi","");lista=t[u"h"]; lista=sorted(lista,key=lambda x: x[1]);print somma(lista)
        
       
def cleanup(pagina):
    testo=leggi_pagina("Pagina:Dizionario triestino (1890).djvu/"+str(pagina))
    noincl=produci_lista(testo,"<noinclude>","</noinclude>",1)
    header=noincl[0]
    footer=noincl[len(noincl)-1]
    testo=testo[len(header):-len(footer)]
    # codifico il testo
    #testo,elProt=codifica(testo)
    testo=testo.replace(" ;",";")\
           .replace(" :",":")
           
    testo,elProt=codifica(testo)
    testo=testo.replace("'''","##bold##").replace("''","##ital##")
    
    testo=re.sub(r"1([\'a-zA-Z])",r"l\1",testo)
    testo=re.sub(r"([a-zA-Z])1",r"\1l",testo)
    lista=re.findall("\w-\w",testo)
    for i in lista:
        testo=testo.replace(i,i.replace("-",""))
    lista=re.findall(u"[bcdfglmnprstv][\'\u2019] \w",testo)
    for i in lista:
        testo=testo.replace(i,i.replace(" ",""))
    
           
    
    testo=testo.replace("'",u"\u2019")
    testo=testo.replace("##ital##","''").replace("###bold###","'''")
    testo=decodifica(testo,elProt)
    ri=find_stringa(testo,"{{RigaIntestazione|","}}",1)
    if ri!="":
        testo=testo.replace(ri,"")
        header=header.replace('div class="pagetext">','div class="pagetext">'+ri)
    ri=find_stringa(header,"{{RigaIntestazione|","}}",1)
    if ri!="":
        if not "|riga=si" in ri:
            riNew=ri.replace("}}","|riga=si}}")
            header=header.replace(ri,riNew)
    #print testo
    scrivi_pagina(header+testo+footer,False,"Pagina:Dizionario triestino (1890).djvu/"+str(pagina),commento="cleanup")
    return #header,testo,footer


def codifica(testo):
    l=[];
    res=ss(testo,l,"<math","</math>","")
    
    res=ss(res[0],res[1],"{","}","{")
    #print res
    res=ss(res[0],res[1],"[","]","[")
    #print res
    res=ss(res[0],res[1],"<",">","<")
    #print res
    res=ss(res[0],res[1],"http://"," ","")
    #print res
    return res

 
def ss(testo,l,tagi,tagf,x): 
    while find_stringa(testo,tagi,tagf,1,tagi)>"":
        el=find_stringa(testo,tagi,tagf,1,tagi)
        testo=testo.replace(el, "###el "+str(len(l))+" ###",1)
        l.append(el)
    return [testo,l]

def decodifica(testo,l):
    for i in range(len(l)):
       testo=testo.replace("###el "+str(i)+" ###",l[i],1)
       
    
    return testo