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