ویکیپدیا:درخواستهای ربات/ابزار کمک مترجم در پایتون
ظاهر
این ربات کار ابزار کمک مترجم را انجام میدهد با این تفاوت که حجم زیادی از دادهها را میتواند ترجمه کند همچنین از نظر سرعت نسبت به ابزار کمک مترجم (به علت شناخت موارد تکراری) سریعتر هست.
نحوه استفاده
[ویرایش]نام صفحات مورد نظر را در فایلی به نام ExportFromWikiResult.txt قرار دهید.
- میتوانید در مقابل متغییر listp عنوانهایی که در میان ''' هستند را به صورت لاتین به فارسی بنویسید تا ربات آنها را نیز جایگزین کند.
کد
[ویرایش]#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Reza(User:reza1615), 2013
#
# Distributed under the terms of the CC-BY-SA 3.0 .
#!/usr/bin/python
# -*- coding: utf-8 -*-
import query
import pagegenerators,re
import wikipedia,codecs
wikipedia.config.put_throttle = 0
wikipedia.put_throttle.setDelay()
listp=(u"List of Canadian airports by location indicator: CA",u"فهرست فرودگاههای کانادا بر پایه موقعیتیاب: CA",
u"List of Canadian airports by location indicator: CB",u"فهرست فرودگاههای کانادا بر پایه موقعیتیاب: CB",
u"List of Canadian airports by location indicator: CC",u"فهرست فرودگاههای کانادا بر پایه موقعیتیاب: CC",
u"List of Canadian airports by location indicator: CD",u"فهرست فرودگاههای کانادا بر پایه موقعیتیاب: CD",
u"List of Canadian airports by location indicator: CE",u"فهرست فرودگاههای کانادا بر پایه موقعیتیاب: CE",
u"List of Canadian airports by location indicator: CG",u"فهرست فرودگاههای کانادا بر پایه موقعیتیاب: CG",
u"List of Canadian airports by location indicator: CH",u"فهرست فرودگاههای کانادا بر پایه موقعیتیاب: CH")
def englishdictionry( enlink ,firstsite,secondsite):
try:
enlink=unicode(str(enlink),'UTF-8').replace(u'[[',u'').replace(u']]',u'').replace(u'en:',u'').replace(u'fa:',u'')
except:
enlink=enlink.replace(u'[[',u'').replace(u']]',u'').replace(u'en:',u'').replace(u'fa:',u'')
if enlink.find('#')!=-1:
return False
if enlink==u'':
return False
enlink=enlink.replace(u' ',u'_')
site = wikipedia.getSite(firstsite)
sitesecond= wikipedia.getSite(secondsite)
params = {
'action': 'query',
'prop': 'langlinks',
'titles': enlink,
'redirects': 1,
'lllimit':500,
}
try:
categoryname = query.GetData(params,site)
for item in categoryname[u'query'][u'pages']:
case=categoryname[u'query'][u'pages'][item][u'langlinks']
for item in case:
if item[u'lang']==secondsite:
intersec=item[u'*']
break
result=intersec
if result.find('#')!=-1:
return False
return result
except:
return False
def linktranslation():
wikipedia.output(u'link translating is started')
text2 = codecs.open( u'ExportFromWikiResult.txt','r' ,'utf8' )
text = text2.read()
for i in range(0,len(listp),2):
text=text.replace(u"'''"+listp[i]+u"'''",u"'''"+listp[i+1]+u"'''")
with codecs.open( u'ExportFromWikiResult.txt',mode = 'w',encoding = 'utf8' ) as f:
f.write( text )
counter=0
linken = re.findall(ur'\[\[.*?\]\]',text, re.S)
for item in linken:
counter+=1
itemmain=item
item=item.replace(u'en:',u'')
if item.find(u'user:')!=-1 or item.find(u'ه')!=-1 or item.find(u'ر')!=-1 or item.find(u'س')!=-1 or item.find(u'ف')!=-1 or item.find(u'ا')!=-1 or item.find(u'ن')!=-1 or item.find(u'ی')!=-1 or item.find(u'آ')!=-1 or item.find(u'ب')!=-1 or item.find(u'م')!=-1 or item.find(u'User:')!=-1 or item.find(u'file:')!=-1 or item.find(u'File:')!=-1 or item.find(u'template:')!=-1 or item.find(u'Template:')!=-1 or item.find(u'Wikipedia:')!=-1 or item.find('wikipedia:')!=-1 or item.find(u'Talk:')!=-1 or item.find(u'talk:')!=-1 or item.find(u'Help:')!=-1 or item.find(u'help:')!=-1:
continue
itemen=item.split(u'|')[0].replace(u'[[',u'').replace(u']]',u'').strip()
if text.find(itemmain)!=-1:
itemfa=englishdictionry(itemen ,'en','fa')
wikipedia.output(itemen)
else:
continue
if itemfa==False:
itemen=item.replace(u'[[',u'').replace(u']]',u'').strip()
itemen=itemen.replace(u'[[',u'').replace(u']]',u'')
text=text.replace(u'[['+itemen+u']]',u'@1@'+itemen+u'@2@')
continue
else:
text=text.replace(itemmain,u'@1@'+itemfa+u'@2@')
linken = re.findall(ur'\[\[.*?\]\]',text, re.S)
wikipedia.output(u'\03{lightred}----'+str(counter)+u'/'+str(len(linken))+u'----\03{default}')
wikipedia.output(itemen)
text=text.replace(u'@1@',u'[[').replace(u'@2@',u']]')
text=text.replace(u'$$$[[',u"'''").replace(u']]$$$',u"'''")
with codecs.open( u'ExportFromWikiResult.txt',mode = 'w',encoding = 'utf8' ) as f:
f.write( text )
def main():
linktranslation()
if __name__ == '__main__':
main()