پرش به محتوا

ویکی‌واژه:ربات/افزودن سرواژه صرف افعال خارجی

از ویکی‌واژه

این ربات برای افزودن اشکال مختلف افعال خارجی کاربرد دارد.

با این روش می توان تمام صرف فعل‌های زبان‌های خارجی را وارد ویکی‌واژه کرد.به عنوان مثال rezabot صرف فعل‌های انگلیسی در حالت‌های گذشتهٔ ساده، حال کامل و گذشتهٔ کامل (اسم مفعول) را وارد ویکی‌واژه کرده‌است.

روش کار
  1. باید در ویکی‌واژه دیگر مثلا انگلیسی محتویات ردهٔ افعال مثلا (گذشته ساده en:Category:English simple past forms) را برون‌ریزی کنید.
    1. برای برون‌ریزی به Special:Export در آن ویکی بروید و نام رده را در پنجرهٔ Add pages from category: بیافزائید و دکمهٔ add و در پایین دکمهٔ Export را کلیک کنید به شما فایلی با پسوند xml می‌دهد.
  2. نام و پسوند فایل را به import.txt تغییر دهید و آن را در پوشه‌ای که کد ربات موجود است قرار دهید.
  3. بخش‌ مشخص شدهٔ کد ربات (این بخش نیاز به تغییر دارد تا برای زبان جدید کاربرد داشته باشد) را بر اساس الگوهای موجود در ویکی‌واژه، (مثلا {{گذشته ساده}}) تغییر دهید و نام زبان جدید مثلا فرانسوی و الگوی مورد نیازش را در متن ربات جایگزین کنید (هم الگوی زبان خارجی هم الگوی زبان فارسی)
  4. کد ربات زیر را اجرا کنید به شما فایل خروجی‌ای با نام exprot.txt ارائه می‌دهد.
  5. به کمک ربات استاندارد pagefromfile.py که در پوشهٔ pywikipedia موجود است، با دستور زیر اجرا نمایید خود ربات در صورتی که سرواژهٔ مورد نظر موجود نباشد، آن را می‌سازد و در صورت موجود بودن آن را رها کرده و به سراغ سرواژهٔ بعدی می‌پردازد و این کار را ادامه می‌دهد تا فهرست موجود در فایل exprot.txt تمام گردد.


python pagefromfile.py -start:XXX -end:XXX -titleend:@@@@ -titlestart:@@@@ -notitle -safe -file:export.txt


کد ربات استخراج کننده

[ویرایش]

<source lang=python>

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

import codecs count = 0 filesample = 'import.txt' #---XMl that came from other wiki text2 = codecs.open( filesample,'r' ,'utf8' ) text = text2.read()

  1. --------------------------------------------------استخراج مطالب از دورن فایل xml---------------

for pag in text.split( u'<page>' ):

   section1 = {}
   count = count + 1
   title = pag.split( u'</title>' )[0].replace( u'<title>', ).strip()
   #title=title.replace('template:',olgoo)
   section = pag.split( u'<revision>' )[-1]
   try:
       section = section.split( u'<text xml:space="preserve" bytes=' )[1]
       section = section.split( u'>' )[1]
       section = section.split( u'</text' )[0]
   except:
       a = 1
   section = section.replace( u'<','<' )
   section = section.replace( u'>','>' )
   section = section.replace( u'"','"' )
   section = section.replace( u'•','•' )
   section = section.replace( u'–','-' )
   section = section.replace(u'أ£','ã' )
   section = section.replace( u'أ©','é' )
   section = section.replace( u'أ­','í' )
   section = section.replace( u'أ´','ô' )
   title = title.replace( u'أ£','ã' )
   title = title.replace( u'أ©','é' )
   title = title.replace( u'أ­','í' )
   title = title.replace( u'أ´','ô' )
  1. ----------------------------------------موارد بالا را تغییر ندهید!-----پایان استخراج مطالب ---------------
    #print template
   lines=section.split(u'\n')
   sectionpart=u'\n'
   for line in lines:
  1. -----------------------------------------------------------------این بخش نیاز به تغییر دارد تا برای زبان جدید کاربرد داشته باشد----------
       if line.find(u'{{simple past of|')!=-1:
           line=line.replace(u'{{past of|',u'{{گذشته|').replace(u'{{simple past of|',u'{{گذشته ساده|').replace(u'{{past participle of|',u'{{حال کامل|')
           sectionpart+=line+u'\n'
           
   sectionpart=sectionpart.replace(u'\n\n',u'\n')
   if sectionpart!=u'\n':
       sectionpart=u'== انگلیسی ==\n\n=== فعل ==='+sectionpart+u'\n==== منابع ====\n* ویکی‌واژه انگلیسی'
  1. -------------------------------------------------------------------------------پایان تغییر-------------------
       resultdata = u'\nXXX\n@@@@%s@@@@\n' % ( title ) + sectionpart + u'\nXXX'
       with codecs.open( 'exprot.txt',mode = 'a',encoding = 'utf8' ) as f:
                   f.write( resultdata )
                   f.close()