ویکی‌پدیا:درخواست‌های ربات/ابزار کمک مترجم در پایتون

از ویکی‌پدیا، دانشنامهٔ آزاد

این ربات کار ابزار کمک مترجم را انجام می‌دهد با این تفاوت که حجم زیادی از داده‌ها را می‌تواند ترجمه کند همچنین از نظر سرعت نسبت به ابزار کمک مترجم (به علت شناخت موارد تکراری) سریع‌تر هست.

نحوه استفاده[ویرایش]

نام صفحات مورد نظر را در فایلی به نام 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()