Материал из Википедии — свободной энциклопедии
# -*- coding: UTF-8 -*-
__version__='$Id:'
import wikipedia
import re, sys
import codecs
import xmlreader
from zbib_tekst import *
def vivod(b):
wikipedia.output(b)
otch.write(b)
otch.flush()
def provrimcif(t):
simv=[u'I',u'V',u'X',u'L',u'C',u'D','M']
if len(t)>10:
return 0
for c in t:
if (not c in simv):
return 0
return 1
diakr={
u'ƒ': u'f',
u'„': u',,',
u'…': u'...',
u'Š': u'S',
u'Œ': u'OE',
u'™': u'(tm)',
u'š': u's',
u'œ': u'oe',
u'Ÿ': u'Y',
u'¢': u'c',
u'¤': u'¤',
u'¥': u'Y',
u'©': u'(c)',
u'': u'-',
u'®': u'(r)',
u'°': u'°',
u'±': u'±',
u'²': u'2',
u'³': u'3',
u'µ': u'µ',
u'¹': u'1',
u'¼': u'1/4',
u'½': u'1/2',
u'¾': u'3/4',
u'¿': u'?',
u'À': u'A',
u'Á': u'A',
u'Â': u'A',
u'Ã': u'A',
u'Ä': u'A',
u'Å': u'A',
u'Æ': u'AE',
u'Ç': u'C',
u'È': u'E',
u'É': u'E',
u'Ê': u'E',
u'Ë': u'E',
u'Ì': u'I',
u'Í': u'I',
u'Î': u'I',
u'Ï': u'I',
u'Ð': u'D',
u'Ñ': u'N',
u'Ò': u'O',
u'Ó': u'O',
u'Ô': u'O',
u'Õ': u'O',
u'Ö': u'O',
u'×': u'x',
u'Ø': u'O',
u'Ù': u'U',
u'Ú': u'U',
u'Û': u'U',
u'Ü': u'U',
u'Ý': u'Y',
u'ß': u'ss',
u'à': u'a',
u'á': u'a',
u'â': u'a',
u'ã': u'a',
u'ä': u'a',
u'å': u'a',
u'æ': u'ae',
u'ç': u'c',
u'è': u'e',
u'é': u'e',
u'ê': u'e',
u'ë': u'e',
u'ì': u'i',
u'í': u'i',
u'î': u'i',
u'ï': u'i',
u'ñ': u'n',
u'ò': u'o',
u'ó': u'o',
u'ô': u'o',
u'õ': u'o',
u'ö': u'o',
u'ø': u'o',
u'ù': u'u',
u'ú': u'u',
u'û': u'u',
u'ü': u'u',
u'ý': u'y',
u'ÿ': u'y',
u'Ā': u'A',
u'ā': u'a',
u'Ă': u'A',
u'ă': u'a',
u'Ą': u'A',
u'ą': u'a',
u'Ć': u'C',
u'ć': u'c',
# u'Ĉ': u'C',
# u'ĉ': u'c',
u'Ċ': u'C',
u'ċ': u'c',
u'Č': u'C',
u'č': u'c',
u'Ď': u'D',
u'ď': u'd',
u'Đ': u'D',
u'đ': u'd',
u'Ē': u'E',
u'ē': u'e',
u'Ĕ': u'E',
u'ĕ': u'e',
u'Ė': u'E',
u'ė': u'e',
u'Ę': u'E',
u'ę': u'e',
u'Ě': u'E',
u'ě': u'e',
# u'Ĝ': u'G',
# u'ĝ': u'g',
u'Ğ': u'G',
u'ğ': u'g',
u'Ġ': u'G',
u'ġ': u'g',
u'Ģ': u'G',
u'ģ': u'g',
# u'Ĥ': u'H',
# u'ĥ': u'h',
u'Ħ': u'H',
u'ħ': u'h',
u'Ĩ': u'I',
u'ĩ': u'i',
u'Ī': u'I',
u'ī': u'i',
u'Ĭ': u'I',
u'ĭ': u'i',
u'Į': u'I',
u'į': u'i',
u'İ': u'I',
u'IJ': u'IJ',
u'ij': u'ij',
# u'Ĵ': u'J',
# u'ĵ': u'j',
u'Ķ': u'K',
u'ķ': u'k',
u'Ĺ': u'L',
u'ĺ': u'l',
u'Ļ': u'L',
u'ļ': u'l',
u'Ľ': u'L',
u'ľ': u'l',
u'Ŀ': u'L',
u'ŀ': u'l',
u'Ł': u'L',
u'ł': u'l',
u'Ń': u'N',
u'ń': u'n',
u'Ņ': u'N',
u'ņ': u'n',
u'Ň': u'N',
u'ň': u'n',
u'ʼn': u'n',
u'Ŋ': u'NG',
u'ŋ': u'ng',
u'Ō': u'O',
u'ō': u'o',
u'Ŏ': u'O',
u'ŏ': u'o',
u'Ő': u'O',
u'ő': u'o',
u'Œ': u'OE',
u'œ': u'oe',
u'Ŕ': u'R',
u'ŕ': u'r',
u'Ŗ': u'R',
u'ŗ': u'r',
u'Ř': u'R',
u'ř': u'r',
u'Ś': u'S',
u'ś': u's',
# u'Ŝ': u'S',
# u'ŝ': u's',
u'Ş': u'S',
u'ş': u's',
u'Š': u'S',
u'š': u's',
u'Ţ': u'T',
u'ţ': u't',
u'Ť': u'T',
u'ť': u't',
u'Ŧ': u'T',
u'ŧ': u't',
u'Ũ': u'U',
u'ũ': u'u',
u'Ū': u'U',
u'ū': u'u',
# u'Ŭ': u'U',
# u'ŭ': u'u',
u'Ů': u'U',
u'ů': u'u',
u'Ű': u'U',
u'ű': u'u',
u'Ų': u'U',
u'ų': u'u',
u'Ŵ': u'W',
u'ŵ': u'w',
u'Ŷ': u'Y',
u'ŷ': u'y',
u'Ÿ': u'Y',
u'Ź': u'Z',
u'ź': u'z',
u'Ż': u'Z',
u'ż': u'z',
u'Ž': u'Z',
u'ž': u'z',
u'Ơ': u'O',
u'ơ': u'o',
u'Ư': u'U',
u'ư': u'u',
u'Ǎ': u'A',
u'ǎ': u'a',
u'Ǐ': u'I',
u'ǐ': u'i',
u'Ǒ': u'O',
u'ǒ': u'o',
u'Ǔ': u'U',
u'ǔ': u'u',
u'Ǖ': u'U',
u'ǖ': u'u',
u'Ǘ': u'U',
u'ǘ': u'u',
u'Ǚ': u'U',
u'ǚ': u'u',
u'Ǜ': u'U',
u'ǜ': u'u',
u'Ǻ': u'A',
u'ǻ': u'a',
u'Ǽ': u'AE',
u'ǽ': u'ae',
u'Ǿ': u'O',
u'ǿ': u'o',
}
tokdl=[
(u'a',1),
(u'o',1),
(u'aj',2),
(u'oj',2),
(u'an',2),
(u'on',2),
(u'ajn',3),
(u'ojn',3),
]
def main(vhjaz,fivh,fivih,tblzapr):
dl=3
f1=codecs.open(fivih, 'w', 'utf-8')
insite=wikipedia.getSite(vhjaz,fam = u'wikipedia')
tblp = {}
# tblali = {}
# open xml dump and read page titles out of it
dump = xmlreader.XmlDump(fivh)
redirR = insite.redirectRegex()
readPagesCount = 0
sch_ali=0
sch_aliu=0
sch_apa=0
for entry in dump.parse():
readPagesCount += 1
# if readPagesCount>=5000:
# break
# always print status message after 1000 pages
if readPagesCount % 1000 == 0:
print '%i pages read...' % readPagesCount
m = redirR.search(entry.text)
tt=entry.title
if tblzapr.has_key(tt):
vivod(u'zapr %s\n'%tt)
continue
if m and entry.text.startswith(u'#'):
# target = m.group(1)
# tblali[tt]=target
pass
else:
if u':' in tt:
continue
ttp=tt
ttp=ttp.split(u'(',1)[0]
for cd, cp in diakr.iteritems():
ttp=ttp.replace(cd,cp)
ttp=ttp.replace(u'-',u' ').replace(u"'",u' ').replace(u'?',u' ')
s=ttp.split(u' ')
tbl={}
for se in s:
se=se.upper()
f=0
if len(se)==dl:
f=1
else:
for (ok,ddl) in tokdl:
if ( len(se)>dl and len(se)<=dl+ddl and
se.endswith(ok.upper()) ):
f=1
if f and se!=tt:
se=se[:dl]
fg=1
for sec in se:
if ord(sec)<ord(u'A') or ord(sec)>ord(u'Z'):
fg=0
if fg:
tbl[se]=1
for se, sez in tbl.iteritems():
if tblp.has_key(se):
tblp[se].append(tt)
else:
tblp[se]=[tt]
tbls=[]
for se, tim in tblp.iteritems():
if len(tim)<=2:
tim1=tim
else:
tim1=[]
for tt in tim:
if not u'(' in tt:
tim1.append(tt)
if len(tim1)>0 and len(tim1)<=10:
tbls.append((len(tim1),se,tim1))
tbls.sort(reverse=True)
# tbls.sort()
for ltim, se, tim in tbls:
vivod(u'%s %d\n'%(se,ltim))
for tt in tim:
q=[u'',u'',u'',u'',u'',u'']
q[0]=se
q[1]=se
q[2]=tt
q[3]=(u"*'''[[%s]]'''")%tt
q[4]=tt
q[5]=u'l'
qt=spisvstr(q,u'@')+u'\n'
if ltim<=5:
f1.write(qt)
f1.flush()
else:
vivod(qt)
vhjaz = u'eo'
#vhjaz = sys.argv[1]
fvh = sys.argv[1]
fvih = sys.argv[2]
fzapr = sys.argv[3]
#fotch = u'mm_otch.txt'
fi=fvih
if fi.endswith(u'.txt'):
fi=fi[:len(fi)-4]
fotch = fi+'_ot.txt'
#mysite = wikipedia.getSite()
otch = codecs.open(fotch, 'w', 'utf-8')
mysite = wikipedia.getSite()
tblzapr=chit_slov_u(fzapr)
main(vhjaz,fvh,fvih,tblzapr)