Wikipédia:Wikiprojekt FILIT/zlep.py
Vzhľad
#!/usr/bin/python2.4
# -*- coding: utf-8 -*-
import sys, re
p_a=re.compile('\<a HREF="(.*?)"\>(.*?)\<\/A\>', re.IGNORECASE) #definicia regularneho vyrazu linku
p_p=re.compile('\<p\>', re.IGNORECASE) #definicia regularneho vyrazu paragrafu
p_m=re.compile('^ *', re.IGNORECASE) #definicia regularneho vyrazu paragrafu
p_m2=re.compile('\n *', re.IGNORECASE) #definicia regularneho vyrazu paragrafu
p_m3=re.compile('\n\n\n', re.IGNORECASE) #definicia regularneho vyrazu paragrafu
p_zl=re.compile('^\.\.\/(fv.*?\/.*)', re.IGNORECASE) #definicia regularneho vyrazu paragrafu
p_pomlcka=re.compile('^(.*?)([\w\n]*?-)', re.IGNORECASE | re.MULTILINE) #definicia regularneho vyrazu prvej pomlcky
zoznam_suborov='../abeceda6'
ft=open(zoznam_suborov, 'r') # otvorenie zoznamu html suborov
tabp=ft.read()
tab=tabp.split('\n')
predpona_linku = u''
dic = {}
print len(tab)
n_riadkov=200
n_riadkov=len(tab)-1
for i in range(n_riadkov):
spl = tab[i].split(' ', 1)
if len(spl)<=1:
break
prava = spl[1].replace('[[', '')
prava = prava.replace(']]', '')
lava = spl[0]
#lava = spl[0].split('/', 1)[1]
# print lava
# print prava
dic [lava]=prava
def nahrad_prvu_pomlc(s):
m=p_pomlcka.match(s.group(0))
# print m
link = m.group(1) + ' je '
# print link
return link
def nahrad_prvu_pomlcku(s):
return re.sub(p_pomlcka, nahrad_prvu_pomlc,s)
def vyhod_medzery(s):
rr=re.sub(p_m3, '\n\n',s)
rr=re.sub(p_m, '',rr)
return re.sub(p_m2, '\n',rr)
def nahrad_linku(s):
m=p_zl.match(s.group(0))
link = m.group(1)
# print link
if link in dic:
link = dic[ link ]
# print 'intra: ' + s.group(0) +' -> ' + m.group(2) + ' -> ' + link
return link
def nahrad_intralink(s):
m=p_a.match(s.group(0))
#link=m.group(1)
link=re.sub(p_zl, nahrad_linku, m.group(1))
if '.html' in link:
if link in dic:
link = dic [link]
# print link
# print predpona_linku
if predpona_linku+'/'+link in dic:
link = dic [predpona_linku+'/'+link]
subko=re.sub(p_m, '',m.group(2))
link = link.decode('cp1250').encode('utf8')
if link == subko:
r='[['+link+']]'
else:
r='[['+link[0:-1]+'|'+subko+']]'
return r
def nahrad_paragrafy(s):
return re.sub(p_p, '',s)
def nahrad_intralinky(s):
return re.sub(p_a, nahrad_intralink,s)
def spracuj_file(meno_s, s, f): # s je string reprezentujuci cely subor html, f je vystupny subor
odkaz = "-" in dic[meno_s] # ak clanok je len doplnkom k inemu clanku!!!
if not odkaz:
f.write('yyyy\n\nxxxx\n'); # zapis "paticku" a hlavicku do vystupneho suboru
p = re.compile('\<h1\>(.*)\<\/h1\>', re.IGNORECASE) #definicia regularneho vyrazu
#pre vyhladanie zaciatku zmysluplnej informacie
m=p.search(s) # vyhladanie tejto informacie
p2 = re.compile('(.*)\<\/TD\>', re.IGNORECASE) #definicia regexp konca zmysluplnej informacie
if not odkaz: f.write('\'\'\'') # zapis zaciatku wikibolditka
else: f.write('\n== ')
f.write(m.group(1)) # zapis nadpisu (vlozeneho do tagu <h1>...</h1>
if not odkaz: f.write( '\'\'\'\n') # zapis ukoncenia wikibolditka
else: f.write(' ==\n')
s2=s[m.end():] #vytvorenie substringu od pozicie konca hlavicky
m2=p2.search(s2) #vyhladanie konca zmysluplnosti
# print "2-------------------\n" + s2
s3=nahrad_paragrafy(s2[:m2.start()])
# print "3-------------------\n" + s3
s4=nahrad_intralinky(s3)
# print "4-------------------\n" + s4
s5=vyhod_medzery(s4)
# print "5-------------------\n" + s5
s6=re.sub('"', '\'\'', s5)
if not odkaz:
s7 = s6.replace("\n\n- ", " je ")
s7 = s7.replace("\n ", "\n")
#nahrad_prvu_pomlcku(s6)
else: s7 = s6
s8 = re.sub('^\n', '', s7)
s9 = s8.replace("<HR WIDTH=20% ALIGN=LEFT>", "---")
s10 = s9.replace("<BR>", "\n")
s10 = s10.replace("- [[../fr/utvary_vyznamove_-_a.htm|významové útvary]]\n", "")
s10 = s10.replace("- [[../fr/odkazy_-_a.htm|odkazy]]\n", "")
s10 = s10.replace("- [[../fr/druhy-priklady_-_a.htm|druhy/príklady]]\n", "")
s10 = s10.replace("- [[../fr/nazory_na_-_a.htm|názory na ňu]]\n", "")
for i in range(1000):
j = i + 1000
s10 = s10.replace("%s" % j, "[[%s]]" % j)
f.write(s10) # zapis zmyslupnosti do suboru
if not odkaz:
f.write('== Externé odkazy ==\n* {{filit|'+meno_s+'}}\n') # zapis zmyslupnosti do suboru
f.write('\n{{filit na úpravu}}\n') # zapis zmyslupnosti do suboru
f=open(zoznam_suborov, 'r') # otvorenie zoznamu html suborov
vystup=open('../m2.txt', 'w') # otvorenie vystupneho suboru (tento bude spracovavat bot)
vystup.write('xxxx\n')
y=0
while y<n_riadkov : # zatial testovaco iba tri riadky zoznamu
s=f.readline() # nacitaj
l=s.split(" ", 1) # zober meno suboru a nadpis ako mu rozumie filit
# print l[0], " <-> ", l[1]
try:
lava = l[0].split('/', 1)[1]
# print lava
ff=open('../htm2/'+lava, 'r') # otvor html subor
ffs=ff.read() #nacitaj obsah do stringu
ffs = ffs.decode('latin2').encode('utf8')
predpona_linku = l[0].split('/', 1)[0]
spracuj_file(l[0], ffs, vystup) # spracuj string
ff.close() #zatvor html subor
except IOError:
print 'IOError: ' + l[0]
#f.write('Error ******** IOError\n') # zapis erroru
except AttributeError:
print 'AttributeError: ' + l[0]
#f.write('Error ******** AttributeError\n') # zapis erroru
y=y+1 #zvacsi pocitadlo
vystup.close() #zatvor vystupny subor
f.close() #zatvor vstupny subor
print 'koniec'