ویکی‌پدیا:درخواست‌های ربات/ربات دریافت تلفظ

ربات دریافت تلفظ و آوانگاری به زبان فارسی
این کاربر یک ربات است
وظیفه(ها)دریافت الفبای بین‌المللی آوانگاری و ترجمه آنها به حروف فارسی (آوانگاری عنوان‌های انگلیسی)
موافق محرومیت؟خیر
موافق خاموش‌شدن اضطراری؟بله
اجازه‌نامهCC-BY-SA 3.0
تست شده؟بله

هم‌اکنون این کد به صورت خودکار هر از ۱۵ دقیقه درخواست‌های موجود در وپ:درخواست آوانگاری را بررسی می‌کند.

این ربات تلفط لغت‌ها را در صورت موجود بودن از وب‌گاه dictionary.com دریافت می‌کند در صورت نبودن الگو:IPA را در صورتی که در مقاله انگلیسی موجود باشد را دریافت می‌کند و در یک فایل متنی به نام result.txt به صورت جدول ذخیره می‌نماید.

برای اجرای این کد نیاز هست که کتابخانه mechanize نیز نصب گردد.

نصب mechanize ویرایش

قبل از اجرا باید بستهٔ mechanize را از اینجا نصب کنید.

نصب mechanize بر روی تول سرور

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

  1. در ابتدا mechanize را از اینجا دانلود کنید.
  2. بعد از دانلود، زیپ بسته را باز کنید و پوشه mechanize (درون پوشه mechanize-0.2.5 قرار دارد) را به کمک winscp یا نرم‌افزارهای مشابه در پوشه pywikipedia خود در تول سرور کپی کنید.
  3. کد پایین (کد دریافت تلفظ ) را در پوشه pywikipedia خود در تول سرور قرار دهید.
نصب mechanize در لینوکس

برای سیستم‌های لینوکس به کمک easy_install mechanize قابل نصب است.

نصب mechanize در ویندوز

نصب این کتابخانه در ویندوز به چند روش می توان انجام داد، که یکی از آنها به شرح زیر است. مراحل زیر را انجام دهید

  1. در ابتدا mechanize را از اینجا دانلود کنید.
  2. بعد از دانلود، زیپ بسته را باز کنید و آن را در پوشه پایتون (مثلا C:\Python27) کپی کنید.
  3. در برنامهٔ cmd ویندوز، با نوشتن دستور زیر به آدرس پوشهٔ mechanize که الان در پوشه پایتون هست بروید (مثلا C:\Python27\mechanize-0.2.5)
  4. کد پایین (کد دریافت تلفظ) را در پوشه pywikipedia قرار دهید.
cd C:\Python27\mechanize-0.2.5

و دستور setup.py install را بنویسید حال این کتابخانه بر روی پایتون شما نصب هست.

روش کار ویرایش

برای استفاده از ربات صفحاتی که احتمال می‌دهید این الگو را داشته باشند را در یک فایل متنی به صورت زیر ذخیره نمایید:

[[مثال۱]]
[[مثال۲]]
[[مثال۳]]
.
.
.

و دستور زیر را اجرا نمائید

python ava.py -file:example.txt

برای دریافت الگو از یک صفحهٔ مشخص دستور زیر را وارد کنید

python ava.py -page:"pagename"

توجه:این ربات تمام آرگومان‌های pagegenerators.py را به عنوان ورودی قبول می‌کند.

<syntaxhighlight lang="python">

  1. !/usr/bin/python
  2. -*- coding: utf-8 -*-
  3. Reza (User:reza1615)
  4. Ariobarzan (User:Ariobarzan) LINGUISTIC PART
  5. Distributed under the terms of the CC-BY-SA 3.0 .
  6. -*- coding: utf-8 -*-

import wikipedia,pagegenerators,sys import mechanize,time,codecs,cookielib,re savepage=u'result.txt' resultdata=u'\n' wikipedia.config.put_throttle = 0 wikipedia.put_throttle.setDelay()

enSite=wikipedia.getSite('en') def farsi(texts):

   texts=texts.replace(u"ˈ",u"").replace(u"‌‌",u"").replace(u"‌‌",u"").replace(u"ˌ",u"").replace(u"  ",u" ").strip()
   result_part,notpas=u' ',False
   for text_part in texts.split(u' '):
       farsis=False
       fachar=u'ضصثقفغعهخحجچشسیبلاتنمکگظطزرذدپوژآ۰۱۲۳۴۵۶۷۸۹='+u'0123456789'
       #--------------------------for passing persian links!----------------------
       for i in fachar:
           if text_part.find(i)!=-1:
                wikipedia.output(text_part)
                farsis=True
                break
       if text_part.find(u'[')!=-1 and text_part.find(u']')!=-1 :
           text_part=text_part.replace(u'[',u).replace(u']',u).strip()
           braket=True
       else:
           braket=False
       text_part=text_part.replace(u'ˈ',u).replace(u"‌‌",u"").replace(u"‌‌",u"").replace(u"ˌ",u"").lower().strip() 
       first_part={u'ɜ':u'ا',u'sʌ':u'سا',u'sɜ':u'س',u'si':u'سی',u'sə':u'س',u'seɪ':u'سی',u'sɔ':u'سو',u'sʊ':u'سو',u'sɪ':u'سی',u'sɒ':u'س',u'saɪ':u'سی',u'se':u'س',u'sa':u'س',u'u':u'او',u'sa':u'س',u'so':u'سو',u'su':u'سو',u'se':u'س',u'o':u'او',u'yu':u'ایو',u'eɪ':u'ای',u'ɛə':u'ای',u'aɪ':u'آی',u'oʊ':u'اوو',u'əu':u'او',u'ɔɪ':u'او',u'ɑr':u'آر',u'ɒr':u'آر',u'ær':u'ار',u'aɪər':u'آیر',u'ɪ':u'ای',
                   u'aʊər':u'آور',u'ɛr':u'ار',u'ɪər':u'ایر',u'ɔər':u'اور',u'ʊər':u'اور',u'jʊər':u'ایور',u'ɜr':u'ار',u'dʒ':u'ج',u'ŋɡ':u'نگ',u'tʃ':u'چ',
                   u'hw':u'و',u'ɑ':u'آ',u'ɑː':u'آ',u'ɔː':u'او',u'iː':u'ای',u'i':u'ای',u'ɒ':u'آ',u'uː':u'او',u'ʊ':u'او',u'ʌ':u'آ',u'ɛ':u'ا',u'æ':u'ا',u'ə':u'ا',
                   u'e':u'ا',u'b':u'ب',u'd':u'د',u'ð':u'د',u'p':u'پ',u'r':u'ر',u's':u'اس',u'k':u'ک',u'ɡ':u'گ',u'l':u'ل',u'h':u'ه',u'ʃ':u'ش',u'f':u'ف',
                   u'm':u'م',u'n':u'ن',u'ŋ':u'نگ',u'j':u'ج',u'θ':u'ت',u't':u'ت',u'v':u'و',u'w':u'و',u'z':u'ز',u'ʒ':u'ژ',u'x':u'کس',u'iə':u'ای',u'ɔ':u'ا',
                   u'ü':u'او',u'ö':u'او'}
       second_part={u'u':u'و',u'ɛ':u,u'yu':u'یو',u'eɪ':u'ی',u'ɛə':u'ی',u'aɪ':u'ای',u'oʊ':u'وو',u'əu':u'و',u'ɔɪ':u'وی',u'ɑr':u'ار',u'ɒr':u'ار',u'ær':u'ر',u'aɪər':u'ایر',u'aʊər':u'اور',
                   u'ɛr':u'ر',u'ɪər':u'یر',u'ɔər':u'ور',u'ʊər':u'ور',u'jʊər':u'یور',u'ɑː':u'ا',u'ɔː':u'و',u'iː':u'ی',u'i':u'ی',u'ɒ':u'ا',u'uː':u'و',
                   u'ʊ':u'و',u'ʌ':u'ا',u'iə':u'یا',u'ɑ':u'ا'}
       last_part={u'æ':u'ا',u'o':u'و',u'ə':u'ا',u'ɔ':u'و'}
       #---mix---
       #--------2-3 place----
       first_part_multi=[u'sʌ',u'sɜ',u'si',u'sə',u'seɪ',u'sɔ',u'sʊ',u'sɪ',u'sɒ',u'saɪ',u'se',u'sa',u'sa',u'se',u'su',u'so',u'yu',u'eɪ',u'ɛə',u'aɪ',u'oʊ',u'əu',u'ɔɪ',u'ɑr',u'ɒr',u'ær',u'aɪər',u'aʊər',u'ɛr',u'ɪər',u'ɔər',u'ʊər',u'jʊər',u'iə']
       multi=[u'cy',u'ci',u'ce',u'ɔɪ',u'qu',u'yu',u'ŋk',u'ŋg',u'ʰw',u'ɜr',u'dʒ',u'ŋɡ',u'tʃ',u'hw',u'iə',u'ca',u'rr',u'ch',u'sh',u'oo',u'aa',u'tt',u'ck',u'kh',u'zh',u'll',u'ss',u'mm',u'nn',u'pp']
       rep_multi={u'cy':u'سی',u'ci':u'سی',u'ce':u'س',u'ɔɪ':u'وی',u'qu':u'کو',u'yu':u'یو',u'ŋk':u'نک',u'ŋg':u'نگ',u'ɜr':u'ر',u'dʒ':u'ج',u'ŋɡ':u'نگ',u'tʃ':u'چ',u'hw':u'و',u'iə':u'ی',u'ʰw':u'و',u'ca':u'ک',u'rr':u'ر',u'ch':u'چ',u'sh':u'ش',u'oo':u'و',u'aa':u'آ',u'tt':u'ت',u'ck':u'ک',u'kh':u'خ',u'zh':u'ژ',u'll':u'ل',u'ss':u'س',u'mm':u'م',u'nn':u'ن',u'pp':u'پ',u'ph':u'ف'}
       #wikipedia.output(str(text.find(u'iə')))
       #wikipedia.output(text_part)
       for i in first_part_multi:
           if text_part.find(i)==0 and (i in first_part):
               text_part=text_part.replace(i.lower(),first_part[i],1)
           if text_part.find(i)>len(i)-1 and (i in second_part):
               text_part=text_part.replace(i.lower(),second_part[i]).replace(i,second_part[i]).replace(i.lower(),second_part[i.lower()])
       #---------1 place----
       for i in multi:
           if text_part.find(i)>-1:
               text_part=text_part.replace(i.lower(),rep_multi[i])    
       #---mono-------------
       first_part_mono=[u'ɜ',u'hw',u'ɑː',u'ɔː',u'ɔ',u'iː',u'i',u'ɒ',u'uː',u'ʊ',u'ʌ',u'ɪ',u'ɑ',u'ɛ',u'ɛ',u'æ',u'ə',u'e',u's',u'ü',u'ö']
       mono=[u'q',u'c',u'y',u'u',u'g',u'o',u'ɛ',u'a',u'æ',u'ə',u'e',u'b',u'd',u'ð',u'p',u'r',u's',u'k',u'ɡ',u'l',u'h',u'ʃ',u'f',u'm',u'n',u'ŋ',u'j',
            u'θ',u't',u'v',u'w',u'z',u'ʒ',u'x',u'ɪ',u'ɔ',u'ɑ',u'ó',u'ö',u'ø',u'̃',u'ã',u'é',u'ß',u'ñ',u'ü']
       rep_mono={u'q':u'ک',u'c':u'ک',u'u':u'و',u'g':u'گ',u'æ':u,u'ə':u,u'e':u,u'o':u'و',u'b':u'ب',u'd':u'د',u'ð':u'د',u'ɪ':u'ی',u'a':u'ا',
                   u'p':u'پ',u'r':u'ر',u's':u'س',u'k':u'ک',u'ɡ':u'گ',u'l':u'ل',u'h':u'ه',u'ʃ':u'ش',u'f':u'ف',
                   u'm':u'م',u'n':u'ن',u'ŋ':u'نگ',u'j':u'ج',u'θ':u'ت',u't':u'ت',u'v':u'و',u'w':u'و',u'z':u'ز',u'ʒ':u'ژ',u'x':u'کس',u'ɔ':u,u'y':u'ی',
                   u'ó':u'و',u'ö':u'و',u'ø':u'و',u'̃':u,u'ã':u'آ',u'é':u,u'ß':u'س',u'ñ':u'نیا',u'ü':u'و'}
       last_part_mono=[u'æ',u'o',u'ə',u'ɔ']
       if not text_part.strip():
           continue    
       for i in last_part_mono:
           if text_part[-1]==i : 
               text_part=text_part[:-1]+last_part[i]
       for i in first_part_mono:
           if text_part.find(i)==0:    
               text_part=text_part.replace(i.lower(),first_part[i],1)
           if (i or i.lower()) in rep_mono:
                   text_part=text_part.replace(i.lower(),rep_mono[i]).replace(i,rep_mono[i]).replace(i.lower(),rep_mono[i.lower()])
           if (i or i.lower()) in second_part:
                   text_part=text_part.replace(i.lower(),second_part[i]).replace(i,second_part[i]).replace(i,second_part[i.lower()])
       #----------------1 place----
       for i in mono:
           if text_part.find(i)>-1:
               if (i or i.lower()) in rep_mono:
                   text_part=text_part.replace(i,rep_mono[i]).replace(i.lower(),rep_mono[i.lower()]).replace(i.lower(),rep_mono[i])
               else:
                   if (i or i.lower()) in second_part:
                       text_part=text_part.replace(i.lower(),second_part[i]).replace(i,second_part[i]).replace(i.lower(),second_part[i.lower()]) 
                   if (i or i.lower()) in first_part:
                       text_part=text_part.replace(i.lower(),first_part[i]).replace(i,first_part[i]).replace(i.lower(),first_part[i.lower()])
       if braket:
           if farsis:# for farsi cases
               text_part=text_part
           else:
               text_part=u'['+text_part+u']'
       text_part=farsinum(text_part)
       result_part+=text_part+u' '
   text_part=u
   return result_part.strip()

def farsinum(text):

       text=text.replace(u'0',u'۰').replace(u'1',u'۱').replace(u'2',u'۲').replace(u'3',u'۳').replace(u'4',u'۴')
       text=text.replace(u'5',u'۵').replace(u'6',u'۶').replace(u'7',u'۷').replace(u'8',u'۸').replace(u'9',u'۹').replace(u',',u'،')
       return text    

def en_wiki (enpage):

           result=u    
           enSite=wikipedia.getSite('en')
           enpage=wikipedia.Page(enSite,enpage.title())
           try:
               text=enpage.get()
               wikipedia.output('Checking \03{lightyellow} %s \03{default} in en.wikipedia ....' %enpage.title())
           except wikipedia.IsRedirectPage:
               pageRedirect = enpage.getRedirectTarget()
               text = pageRedirect.get()
           except:
               return False
           text=text.replace('{{ ','{{').replace('{{template:','{{').replace('{{Template:','{{')    
           if u'{{IPAc-en' in text:
               result=text.split(u'{{IPAc-en')[1].split('}}')[0]
           if u'{{ipac-en' in text:
               result=text.split(u'{{ipac-en')[1].split('}}')[0]
           if result:
               result=result.replace(u'|',u).replace(u'icon',u).strip()
               wikipedia.output(u'\03{lightblue}'+result+u'\03{default}')
               return result
           return False
           

def dictionary(entext):

       fachar=u'ضصثقفغعهخحجچشسیبلاتنمکگظطزرذدپوژآ۰۱۲۳۴۵۶۷۸۹='+u'0123456789'
       #--------------------------for passing persian links!----------------------
       for i in fachar:
           if entext.find(i)!=-1:
                wikipedia.output(entext)
                return False
       #--------------------------
       time.sleep(2)# sleep to have less errors
       wikipedia.output('Requesting \03{lightyellow} %s \03{default} on http://dictionary.com ....' %entext)
       #if fachar:
       try:    
           br = mechanize.Browser()
           cj = cookielib.LWPCookieJar()
           br.set_cookiejar(cj)    
           br.set_handle_equiv(True)
           br.set_handle_redirect(True)
           br.set_handle_referer(True)
           br.set_handle_robots(False)
           br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
           br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
           br.open('http://dictionary.reference.com')
           br.select_form(nr=0)
           br['q']=entext
           br.submit()
           with codecs.open('result.txt',mode = 'w',encoding = 'utf8') as f:
               f.write(unicode(str(br.response().read()),'utf-8'))
           result=unicode(str(br.response().read()),'utf-8').replace(u'',u).replace(u'',u).replace(u'',u)   
           result_api=result.split(u'",u"").replace(u"",u"").replace(u"<",u"").replace(u">",u"").split(u'span class')[0].split(u';')[0].split(u',')[0].strip()
           result_api=result_api.replace(u"img class='luna-Img' border='0' src='http://static.sfdict.com/dictstatic/dictionary/graphics/luna/thinsp.png'",u"")
           result_api=result_api.replace(u"alt=",u"").replace(u"bɜr /",u"").replace(u"  /",u"").replace(u" /",u"")
           prons=[result_api]    
           #wikipedia.output(result.split(u'

def run(preloadingGen,msg):

   result=[]
   ennum=u'0123456789'
   count,counter=0,0
   for i in preloadingGen:    
       count+=1
   for fapage in preloadingGen:
       if fapage.strip():    
           counter+=1
           try:
              fapage_t=fapage.replace(u'',u'').replace(u'',u).strip()
           except:
              fapage_t=fapage.title()
           if fapage_t.find(u'<')!=-1 and fapage_t.find(u'>')!=-1:
                continue
           notpas,numnotpas=False,True
           #--------------------------for passing number links!----------------------
           for i in ennum:
               if fapage_t.find(i)!=-1:
                   numnotpas=False
                   break    
           if fapage_t.find(u'=')!=-1:
                  result.append(u"|-\n|@"+fapage_t.replace(u'=',u)+u"|| || ||")
                  continue
           wikipedia.output(u'---\03{lightblue}['+str(counter)+u'/'+str(count)+u']\03{default}-------------------------------------')     
           #-----------------------cleaning -----         
           wikipedia.output(fapage_t)
           title=fapage_t.replace(u'‌',u)#remove ZWNJ
           title=title.replace(u'  ',u' ').strip()    
           objects_en=u':»«(){}?!؟,،;/–-$#@"'
           for i in objects_en:
               title=title.replace(i,u' '+i+u' ').replace(u'  ',u' ').strip() 
               
           #-----------------------check dictionary.com normal-----
           if title.find(u' ')==-1 and numnotpas:    
               pron=dictionary(title)
               if pron:
                   Farsi_r=farsi(u'||'.join(pron))
                   if u')' in fapage_t:
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+u'||'+Farsi_r+u'||تلفظ‌های ستون ۳ کامل است!')
                   else:
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+u'||'.join(pron)+u'||'+Farsi_r+u'||تلفظ‌های ستون ۳ کامل است!')
                   wikipedia.output(Farsi_r)    
                   continue
               else:
                   Farsi_r=farsi(u'||'.join(title))    
                   if u')' in fapage_t:
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+u'||'+Farsi_r+u'||')
                   else:
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+u'||'.join(pron)+u'||'+Farsi_r+u'||')
                   wikipedia.output(Farsi_r)    
                   continue
                   
           #------------------------------check dictionary.com with space----
           naghes=False
           pron_fa=u' '
           title=title.replace(u'  ',u' ').strip()    
           for i in title.split(u' '):
                   i=i.strip()
                   if not i in objects_en:
                       pron=dictionary(i.strip())    
                       if pron:    
                           try:
                               pron_fa+=pron+u' '
                           except:
                               pron_fa+=pron[0]+u' '
                       else:
                           pron_fa+=u'['+i+u'] '
                           naghes=True
                   else:
                       pron_fa+=i.strip()
           if pron_fa.strip():
               translationtofa=farsi(pron_fa)
               back_none_space=u'!؟?,،;:؛'
               translationtofa=translationtofa.replace(u'« ',u'«').replace(u' »',u'»').replace(u'{ ',u'{').replace(u' }',u'}')
               translationtofa=translationtofa.replace(u'( ',u'(').replace(u' )',u')').replace(u',',u'،').replace(u'?',u'؟').replace(u';',u'؛')
               translationtofa=translationtofa.replace(u'(',u' (').replace(u')',u') ')
               for i in back_none_space:
                   translationtofa=translationtofa.replace(u'  ',u' ').replace(u' '+i,i).replace(i,i+u' ').replace(u'  ',u' ').strip()
               wikipedia.output(translationtofa)
               if u'(' in fapage_t:
                   if fapage_t.strip()==translationtofa.strip():
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'|| ▬ ||'+translationtofa+u'||▬ بدون تغییر!')                            
                       continue 
                   if not naghes:
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+pron_fa+u'||'+translationtofa+u'||تلفظ‌های ستون ۳ کامل است!')
                       continue
                   else:        
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+pron_fa+u'||'+translationtofa+u'||')                         
                       continue    
               else:
                   if fapage_t.strip()==translationtofa.strip():
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'|| ▬ ||'+translationtofa+u'||▬ بدون تغییر!')                            
                       continue 
                   if not naghes:
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+pron_fa+u'||'+translationtofa+u'||تلفظ‌های ستون ۳ کامل است!')
                       continue
                   else:        
                       result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+pron_fa+u'||'+translationtofa+u'||')                         
                       continue    
           #------------------------------enwiki-------------------------------    
           pron=en_wiki(fapage_t)
           if pron:
              Frais_r=farsi(pron)
              result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+u'||'+pron+u'||'+Frais_r+u'||')
              wikipedia.output(Frais_r)
              continue
           #------------------------------empty result-------------------
           result.append(u'|-\n|'+farsinum(str(counter))+u'||'+fapage_t+'|| || ||')    
   return result

def main():

   summary_commandline,gen,wikipage = None,None,False
   exceptions,PageTitles,namespaces = [],[],[]
   autoText,autoTitle = False,False
   genFactory = pagegenerators.GeneratorFactory()
   wikipedia.setAction( msg )
   #pron=dictionary('iran')
   
   for arg in wikipedia.handleArgs():
           if arg== '-autoreq':    
               wikipage=u'وپ:درخواست آوانگاری'
           else:
               generator = genFactory.handleArg(arg)
               if generator:
                   gen = generator
   if not gen:
      wikipage=u'وپ:درخواست آوانگاری'    
   if wikipage:
       faSite=wikipedia.getSite('fa')
       fapage=wikipedia.Page(faSite,wikipage)
       a=1
       if a:    
       #try:
           try:
               text=fapage.get()
           except wikipedia.IsRedirectPage:
               fapage2 = fapage.getRedirectTarget()
               try:
                   text=fapage2.get()
               except:
                   wikipedia.output(u"requested page didn't find!")
                   wikipedia.stopme()    
                   sys.exit()
           except:
               wikipedia.output(u"requested page didn't find!")    
               wikipedia.stopme()    
               sys.exit()    
           last_user=fapage.getVersionHistory()[0][2]
           if last_user.lower().find(u'bot')!=-1:
               wikipedia.stopme()    
               sys.exit()
           linkes = re.findall(ur'\[\[.*?\]\]',text, re.S)
           
           fapage.put(u'ربات در حال بررسی درخواست '+last_user+u' و آوانگاری عنوان‌ها بر پایهٔ عنوان‌های آوانگاری شده در ویکی‌پدیای فارسی است که حدود '+str(len(linkes)/۱۲)+u' دقیقه برای بررسی این درخواست زمان لازم است. لطفاً صبر نمائید و تا تمام شدن کار ربات درخواست جدید ارائه ندهید.Xqbot (بحث) ‏۲۲ آوریل ۲۰۲۰، ساعت ۱۶:۴۴ (UTC)\n',u'ربات:در حال آوانگاری')
           if linkes:
               result=run(linkes,msg)
               result=u'لطفاً آوانگاری‌های موجود در ستون چهارم  را بر اساس ستون ۳ و ۲ بازبینی نمائید و موارد درست شده را  با {{شد}} (در ستون ۵) مشخص نمائید.\n{| class="wikitable plainlinks"\n!ردیف!!سرواژه انگلیسی!!تلفظ بر گرفته از دیکشنری (ستون ۳)!!آوانگاری پیشنهادی ربات به فارسی!!وضعیت بازبینی'+u'\n'+u'\n'.join(result)+u'\n|}'
               result=result.replace(u'[=',u'=').replace(u'=]',u'=').replace(u'[<',u'<').replace(u'>]',u'>')
               
               requstpage=wikipedia.Page(faSite,u'user:'+last_user+u'/درخواست آوانگاری')
               requstpage.put(result,u'ربات:نتیجه درخواست آوانگاری')
               
               requstpage=wikipedia.Page(faSite,u'بحث کاربر:'+last_user)
               try:
                   usertalktext=requstpage.get()
               except:
                   usertalktext=u'\n'    
               requstpage.put(usertalktext+u'\n== آوانگاری ==[پاسخ]

ربات: درخواست شما در صفحهٔ درخواست آوانگاری بررسی و آوانگاری شد و در زیرصفجهٔ کاربر:درخواست‌های ربات/ربات دریافت تلفظ/آوانگاری موفق و کاربر:درخواست‌های ربات/ربات دریافت تلفظ/آوانگاری ناموفق ذخیره گردید لطفاً پس از بازبینی موارد موفق برای بهبود نتایج بعدی ربات آنهایی را که در کاربر:درخواست‌های ربات/ربات دریافت تلفظ/لغت‌نامه مورد نیاز موجودند را پس از آوانگاری در صفحهٔ بحث درخواست آوانگاری قرار دهید تا ربات برای دفعات بعد از ترجمه‌های شما استفاده کند.Xqbot (بحث) ‏۲۲ آوریل ۲۰۲۰، ساعت ۱۶:۴۴ (UTC)\n',u'ربات:نتیجه درخواست آوانگاری')[پاسخ]

           fapage.put(u'ویکی‌پدیا:درخواست‌های ربات/ربات دریافت تلفظ/سردر/n',u'ربات:اتمام آوانگاری و آماده برای درخواست جدید')
           
       #except:
           #wikipedia.output(u"requested page didn't find!")    
       wikipedia.stopme()    
       sys.exit()
   if PageTitles:
       pages = [wikipedia.Page(enSite,PageTitle) for PageTitle in PageTitles]
       gen = iter( pages )
   if not gen:
       wikipedia.stopme()
   if namespaces != []:
       gen = pagegenerators.NamespaceFilterPageGenerator( gen,namespaces )
   preloadingGen = pagegenerators.PreloadingGenerator( gen,pageNumber = 60 )
   result=run(preloadingGen,msg)
   result=u'در مورد نتایج کار ربات به نکات زیر توجه نمائید.
نکته۱: توجه داشته باشید این ربات فقط برای زبان انگلیسی طراحی شده‌است.
نکته۲: کار ربات خالی از اشکال نیست (به خصوص موادی که الگو:آوانگاری ناقص در ستون جلوی واژه مشاهده می‌شود)حتما نتیجه کار ربات را بازبینی نمائید و بدون بازبینی از آنها در ویکی‌پدیا استفاده ننمائید!
نکته۳: آوانگاری‌هایی که در میان [] قرار دارند ربات نتوانسته‌است الفبای آوانگاری بین‌المللی مناسب برای آن بیابد و احتمال اشتباه در آوانگاری آن‌ها بیشتر است.

\n'+u'{| class="wikitable plainlinks"\n!سرواژه انگلیسی!!تلفظ!!آوانگاری فارسی!!وضعیت آوانگاری\n'+u'\n'.join(result)+u'\n|}'

   result=result.replace(u'[=',u'=').replace(u'=]',u'=').replace(u'[<',u'<').replace(u'>]',u'>')
   with codecs.open(savepage,mode = 'w',encoding = 'utf8') as f:
           f.write(result)

if __name__ == "__main__":

   testpass=True
   msg=u' '    
   main()