پرش به محتوا

ویکی‌پدیا:درخواست‌های ربات/ربات تصحیح غلط نگارشی/ویرایش سوم

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

<syntaxhighlight lang="python">

  1. !/usr/bin/python
  2. -*- coding: utf-8 -*-
  3. BY: Z (User:ZxxZxxZ on fa.wikipedia)
  4. BY: رضا (User:reza1615 on fa.wikipedia)
  5. Distributed under the terms of the CC-BY-SA 3.0 .

""" This bot will make direct text replacements. It will retrieve information on which pages might need changes either from an XML dump or a text file, or only change a single page.

You can run the bot with the following commandline parameters:

-file - Work on all pages given in a local text file.

              Will read any wiki link and use these articles.
              Argument can also be given as "-file:filename".

-cat - Work on all pages which are in a specific category.

              Argument can also be given as "-cat:categoryname".

-page - Only edit a specific page.

              Argument can also be given as "-page:pagetitle". You can give this
              parameter multiple times to edit multiple pages.

-ref - Work on all pages that link to a certain page.

              Argument can also be given as "-ref:referredpagetitle".

-filelinks - Works on all pages that link to a certain image.

              Argument can also be given as "-filelinks:ImageName".

-links - Work on all pages that are linked to from a certain page.

              Argument can also be given as "-links:linkingpagetitle".

-start - Work on all pages in the wiki, starting at a given page. Choose

              "-start:!" to start at the beginning.
              NOTE: You are advised to use -xml instead of this option; this is
              meant for cases where there is no recent XML dump.

-except:XYZ - Ignore pages which contain XYZ. If the -regex argument is given,

              XYZ will be regarded as a regular expression.

-summary:XYZ - Set the summary message text for the edit to XYZ, bypassing the

              predefined message texts with original and replacements inserted.

-template:XYZ- -blog: -checking for blog sources. if it is in page it will sent page link to defined address -source - checking the articles sources . if it doesn't have . it will send page link to defined address -namespace:n - Number of namespace to process. The parameter can be used

              multiple times. It works in combination with all other
              parameters, except for the -start parameter. If you e.g. want to
              iterate over all user pages starting at User:M, use
              -start:User:M.

-always - Don't prompt you for each replacement other: -

NOTE: Only use either -xml or -file or -page, but don't mix them.

Examples:

       behsaz.py -start:!  برای تمام صفحات ویکی 

or

       behsaz.py -page:آرامگاه کورش

""" __version__ = '$Id: Rezabot.py 2011-04-30 v2.0$'

import wikipedia,sys import pagegenerators import re, os, codecs, catlib

txtTmp = u msg = u'ربات: تصحیح کننده اشتباهات نگارشی %s' faChars = u'ءاآأإئؤبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی' faNums = u'۰۱۲۳۴۵۶۷۸۹' arNums = u'٠١٢٣٤٥٦٧٨٩' enNums = u'0123456789'

def datacorrection (txtTmp):

       #e: نام الگوها

txtTmp=txtTmp.replace(u'‌',u'‌').replace(u'‌',u'‌').replace(u'‌',u'‌').replace(u' ——— ',u'—').replace(u'—',u'–').replace(u'—',u'—').replace(u'–',u'–').replace(u' • ',u' • ').replace(u' · ',u' · ').replace(u' · ',u' · ').replace(u'

',u'

').replace(u'

',u'

')

       txtTmp=re.sub(ur'\[\[([Ii]mage|[Ff]ile|تصویر)\:', u'[[پرونده:', txtTmp)
       txtTmp=re.sub(ur'الگو:(انگلیسی)', ur'pp\1\2\3–\4', txtTmp)
       txtTmp=re.sub(ur'(صفحه ?\= ?|صفحات ?\= ?|صص ?[\.\=] ?)( |\=)(['+faNums+u']+)(['+faNums+ur']+)–\2(['+faNums+u']+)(?=}})', ur'صص\1\2\3–\4', txtTmp)
       #SPC: به
       txtTmp=re.sub(ur'(?<=\s)(ب|به‌)(?=دست|شکل[ی ]|گونه|طور[ی ]|صورت|قدر[ی ]|نظر |دلا?یل[ی ]|سبب |عل[تل][ی ]|وسیله|واسطه|گفته[ٔ ]|شمار |حساب |عنوان|عبارت|وجود|دنیا)',u'به ',txtTmp)
       txtTmp=re.sub(ur'(?<=\s)(ب|به )(?=[تک]ندی|ویژه|خاطر|ناچار|تدریج|زودی|تازگی|سادگی|آسانی|سهولت|راحتی|دشواری|زیبایی|راستی|درستی|روشنی|تنها[ئی]ی|مرور|نرمی|سختی|آرامی|آهستگی|سرعت|شدت|دقت|کرّات|ندرت|وفور |اصطلاح|اجمال|اختصار|صراحت|وضوح|تلویح|تفصیل|اجبار|اختیار|اشتباه|تصادف|طبع|یقین|واقع )',u'به‌',txtTmp)
       txtTmp=re.sub(ur'(?<=\s)به[‌ ](?=ذاته|حمدالله|لاتشبیه|لاشک |سزایی |عینه |نفسه |شخصه  )',u'ب',txtTmp)
       txtTmp=re.sub(ur'(رو|منزل|جا)[‌ ]?(ب|به )\1',ur'\1به‌\1',txtTmp)
       #SPC: هم/هیچ/چه/که/آن/همین/چنین/ها
       txtTmp=re.sub(ur'(?<=\s)هم[‌ ](?=چن[یا]ن|دیگر|راه|زاد|سایه)',ur'هم',txtTmp)
       txtTmp=re.sub(u'هیچ ?(?=یک|کدام|کس)',u'هیچ‌',txtTmp)
       txtTmp=re.sub(u'چه[‌ ](?=قدر|گونه|طور)',u'چ',txtTmp)
       txtTmp=re.sub(u'(ا?گر|هر|آن|بدان|چنان) چه ',ur'\1چه ',txtTmp)
       txtTmp=txtTmp.replace(u'‌چه ',u'چه ')
       txtTmp=re.sub(ur'(?<=\s)(هر|آن|چنان) که ',ur'\1که ',txtTmp)
       txtTmp=txtTmp.replace(u'طوریکه',u'طوری که').replace(u'‌ایکه',u'‌ای که')
       txtTmp=re.sub(u'(هم[یا]ن|بد[یا]ن|چن[یا]ن) ?(?=گونه|[جط]ور|که|جا )',ur'\1‌',txtTmp)
       txtTmp=re.sub(ur' ها(?=\s|یی?\s)',u'‌ها',txtTmp)
       txtTmp=txtTmp.replace(u' ترین ',u'‌ترین ')
       #SPC: شبه‌ساده‌ها
       txtTmp=re.sub(u'(ة|آیت|حجت|ممنوع|مشترک|متساوی|متوازی|مختلف|کثیر|سریع|جدید|لازم|بین|فوق|تحت|متفق|قریب|ح[سز]ب|عظیم|قلیل|موقوف|مسلوب|مستجاب|مرضی|لطایف|ربیع|جمادی| ذی| دار|باب|خاتم|سید|امیر) ال',ur'\1‌ال',txtTmp)
       txtTmp=re.sub(u'علی ?(هذا|حده|رغم|الاصول|القاعده)',ur'علی‌\1',txtTmp)
       txtTmp=re.sub(u'مع ?(هذا|ذلک|الوصف|ال[اأ]سف)',ur'مع‌\1',txtTmp)
       txtTmp=re.sub(u'ذی ?(شعور|نفوذ|ربط|نفع|حق|حساب|صلاح)',ur'ذی‌\1',txtTmp)
       txtTmp=re.sub(u'من ?(باب|جمله)',ur'من‌\1',txtTmp)
       #SPC: افعال
       txtTmp = re.sub(ur'(?<=\s)(فر[او] ?|وا ?|[بد]ر ?|)(ن?می)[‌ ]?(آراست|آرامید|آزرد|آزمود|آسود|آشامید|آشفت|آفرید|آلود|آمد|آمرزید|آم[یو]خت|آورد|آویخت|ارزید|افتاد|افراشت|ا?فروخت|افزود|افسرد|ا?فشاند|اف[کگ]ند|انجامید|اند[او]خت|اندیشید|ان[بگ]اشت|نگاشت|انگیخت|ایستاد|با[خف]ت|با[لر]ید|[شب]ایست|بخش[یو]د|برازید|ب[ور]د|[بپ]رید|[رجشب]ست|بلعید|پ[وا]شید|پخت|پذیرفت|پراکند|پرداخت|پرست?ید|پرورد|پرید|پژمرد|پژوهید|پسندید|پنداشت|[بپ]و[سشی]ید|پیچید|پیراست|پیمود|پیوست|تا[فخ]ت|تپید|ترا[وش]ید|تر[سشک]ید|تکانی?د|تنید|توانست|جن[بگ]ید|[جد]وش?ید|چرخید|چسبید|چ[مکشر]?ید|خر[او]شید|خ[مرز]ید|خشکید|خوابید|خو?است|خواند|خورد|خیسید|داد|داشت|[مد]انست|درخشید|دزدید|دوخت|ربود|ر[مس]ید|رو?فت|رنجید|رو[ئی]ید|ریخت|زد|زدود|زیست|س[وا]خت|سپرد|س[تر]ود|ستیزید|سرشت|سزید|سنجید|ش[تک]افت|شد|شک?ست|ش[کگ]فت|شمرد|شناخت|شنید|شورید|طلبید|غلطید|فرستاد|فر[مس]ود|فریفت|فشرد|فهمید|قبولاند|کا[سش]ت|کاوید|ک[نر]د|کشت|کشید|کو[چش]ید|کوفت|گداخت|گذا?شت|گرایید|گردید|گرفت|گروید|گری[خس]ت|گزارد|گزید|گس[تا]رد|گسست|گ[فش]ت|گشود|گماشت|گنجید|ل[رغ]زید|ما[لس]ید|ماند|مرد|نا[مل]ید|نشست|نکوهید|ن?گریست|نمود|نواخت|نوردید|نوشت|نهاد|نهفت|نی?وشید|ور?زید|هراسید|یازید|یافت)(م|ی|یم|ید|ند|‌اند)',ur'\1\2‌\3\4',txtTmp)#(آرای|آرام|آزار|آزمای|آسای|آشام|آفرین|آلای|آی|آمرز|آم[یو]ز|آور|آویز|ارز|افت|افر[وا]ز|افزای|ا?فشان|انجام|انداز|اندوز|اندیش|انگار|انگیز|ایست|با[رز]|با[شلفی]|بخشای|بخش|بند|بلع|بوی?|پاش|پز|پذیر|پراکن|پرداز|پرست?|پرور|پژوه|پسند|پناه|پندار|پو[سشی]|پیچ|پیرای|پیمای|پیوند|تاز|تاب|تپ|ترا[شو]|توان|جوی|جن[بگ]|جو[شی]|چرخ|چسب|چ[شمک]|چین|خار|خی?ز|خر[وا]ش|خرام|خشک|خوا[بهن]|خور|ده|دا[رن]|درخش|دزد|د[وم]|دوز|دوش|بین|ربای|ر[هسو]|روی|رنج|ریز|ز[ین]|زدای|س[وا]ز|سپر|ستان|ستیز|سرای|سنج|سای|ش[وا]ی|شتاب|شکاف|شکن|شمر|شناس|شنو|شور|طلب|فرست|فرسای|فرمای|فروش|فریب|ف[سش]ر|فهم|قبولان|کا[رهو]|ک[نش]|کو[چشب]|گداز|گذا?ر|گرای|گرد|گیر|گریز|گری|گزار|گزین|گستر|گشای|گو|گ[وم]ار|گنج|ل[غر]ز|لنگ|ما[لن]|میر|مک|نا[زلم]|نشین|نکوه|نگا?ر|نمای|نواز|نورد|نویس|نوش|ور?ز|هراس|یاب)
       txtTmp=re.sub(ur'([بن])یا(فزای|فزود|نداز|ند[او]خت|نجامی?د|ندیش|ف[کگ]ن|رز|فتد|فر[او]ز|فروخت|فشان|ندوز|نگار|ن[گب]اشت|فراشت|فسرد)',ur'\1ی\2',txtTmp)
       #e: اً
       txtTmp=re.sub(ur'(الزاما|لزوما|یقینا|قطعا|حتما|قاعدتا|طبیعتا|طبعا|قهرا|حقیقتا|واقعا|مطمئنا|اصو?لا|اصالتا| مسلما|تماما|کاملا|ع[یل]نا|اکیدا|مطلقا|دقیقا|نسبتا|تقریبا|حدودا|معمولا|احتمالا|استثنائا| کلا|جزئا|مجموعا|جمعا|اجماعا|ابتدائا|نهایتا|اقلا|اکثرا|غالبا|عمدت?ا|ندرتا|گاها|صریحا|صراحتا|عموما|خصوصا|اجمالا|اختصا[صر]ا|مختصرا|ظاهرا|باطنا|عمیقا|ذاتا|روحا|جسما|ابتدائا|مقدمتا|بع[ضد]ا|قبلا|[جش]دیدا|سابقا|اخیرا| ابدا|تلویحا|حضورا|نیابتا|لطفا|ارتجالا|اجبارا|اختیارا|مستقلا|احتیاطا|احیانا|غفلتا|اشتباها|عجالتا|سریعا|دا[ئی]ما|فورا| نقدا|منحصرا|صرفا|مجددا|مکررا|تصادفا|عملا|فعلا|موقتا|ضمنا|نتیجتا|قانونا|شرعا|نوعا|اصطلاحا|جسارتا|م[وؤ]کدا|ذیلا|شخصا|مفصلا| رسما|ترجیحا|قلبا| رأسا|متناوبا|متوالیا|متقابلا|متعاقبا|مثلا|فرضا|ایضا|بعضا|ناچارا|تلفنا|زبانا|احتراما|کتبا|شفاها|اولا|ثانیا|ثالثا|رابعا|خامسا|سادسا|سابعا|ثامنا|تاسعا|عاشرا) ',ur'\1ً ',txtTmp)
       #e: طبق قاعده فارسی
       txtTmp=re.sub(u'(آزمایش|پژوهش|پیشنهاد|نمایش|دستور|فرمایش|گزارش|گرایش)اتی ',ur'\1‌هایی ',txtTmp) # اتی -> هایی
       txtTmp=txtTmp.replace(u'بازرسین',u'بازرسان').replace(u'داوطلبین',u'داوطلبان') #e: ین -> ان
       txtTmp=re.sub(ur'(?<=\s)(رهبر|خوب|بد|[مز]ن)یّ?ت',ur'\1ی',txtTmp) # یّت -> ی
       txtTmp=re.sub(u'دو[ئی]یت',u'دوگانگی',txtTmp) # یّت
       txtTmp=txtTmp.replace(u'زباناً',u'زبانی').replace(u'تلفناً',u'تلفنی').replace(u'ناچاراً',u'به‌ناچار').replace(u'گاهاً',u'گاهی') #e: اً
       #e: ء
       txtTmp=re.sub(u'سئ?[ؤو]ء?[اآ]ل',u'سؤال',txtTmp)
       txtTmp=re.sub(u'مس[ؤو]و?ل',u'مسئول',txtTmp)
       txtTmp=re.sub(u'مس[اأإ]له',u'مسئله',txtTmp)
       txtTmp=re.sub(u'متل[اأإ]ل[ئی][ٔء]?',u'متلألئ',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])تل[اأإ]ل[وؤ](?=[\s\)])',u'تلألؤ',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])فواد(?=[\s\)])',u'فؤاد',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])روسا(?=[\s\)ءی])',u'رؤسا',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])ر[اأإ]ی[‌ ]گیر',u'رأی‌گیر',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])(نش|جر|هی)[اأإ]ت(?=[\s\)])',ur'\1ئت',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])ما(?=[نی]وس|لوف|کول|خو?ذ|مو[رن]|[مذ]ن[ه ]|وا )',u'مأ',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])مو(?=[یک]د |لف[\s\:]|سس[اه\s]|خر |ثر|نث|ذن|دب|انست|اخذه|تلفه)',u'مؤ',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])متا(?=سف[ا ]|خر|لم |ثر)',u'متأ',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])تا(?=سف|ثی?ر|[ئی]ید|لیف|خیر|کید |مین |سیس[: ]|لم|مّ?ل[ی ]|نّ?ی|دیب )',u'تأ',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])(خل|مبد|ملج?|منش)اء?(?=[\s\)])',ur'\1أ',txtTmp)
       txtTmp=txtTmp.replace(u'تأئید',u'تأیید').replace(u' جزیی',u' جزئی').replace(u'رییس',u'رئیس').replace(u' مسایل',u' مسائل') #e: یـ <-> ئـ
       txtTmp=re.sub(ur'(?<=[\s\(])ش[ئی]ٔ?(?=[\s\)])',u'شیء',txtTmp) # شیء
       txtTmp=re.sub(ur'(?<=[\s\(])(شی|جز|سو)[ءی]ی(?=[\s\)])',ur'\1ئی',txtTmp) # ئی
       txtTmp=txtTmp.replace(u'طمانینه',u'طمأنینه').replace(u'تآتر',u'تئاتر').replace(u' الان',u' الآن').replace(u' راکتور',u' رآکتور').replace(u'فرآیند',u'فرایند').replace(u'فرآورده',u'فراورده')
       #e: هٔ
       txtTmp=re.sub(ur'(هٓ|ۀ|هء|ه[‌ ]ی)(?=\s)',u'هٔ',txtTmp)
       txtTmp=txtTmp.replace(u'درباره ',u'دربارهٔ ').replace(u'فرماندهٔ',u'فرماندهِ').replace(u' زرهٔ',u' زرهِ')
       txtTmp=re.sub(u'(?<=به )(گفته|وسیله|نوشته|واسطه) ',ur'\1ٔ ',txtTmp)
       #SPC: و
       txtTmp=txtTmp.replace(u'گفت و گو',u'گفت‌وگو').replace(u'جست و جو',u'جست‌وجو').replace(u'خفت و خیز',u'خفت‌وخیز').replace(u'رفت و آمد',u'رفت‌وآمد').replace(u'شست و شو',u'شست‌وشو').replace(u'پخت و پز',u'پخت‌وپز').replace(u'کند و کاو',u'کندوکاو').replace(u'کم و بیش',u'کم‌وبیش')
       #e: حشو
       txtTmp=re.sub(ur'(?<=[\s\(])بر\s?علیه',u'علیه',txtTmp) # بر علیه
       txtTmp=re.sub(ur'اعلم[‌ ]?تر',u'اعلم',txtTmp) # تر
       #e: پارسی‌سازی
       txtTmp=re.sub(ur'(?<=[\s\(])لیست(?=ی? )',u'فهرست',txtTmp) # لیست
       #e: انگلیسی‌سازی
  1. for iNum in range(0,10):
  2. txtTmp=re.sub(ur'(\|\s*isbn\s*\=\s*|ISBN )([ -'+faNums+enNums+u']*)'+faNums[iNum], ur'\1\2'+enNums[iNum],txtTmp) # ISBN
       #e: غلط املایی
       txtTmp=re.sub(ur'فنّ?[‌ ]?[آا]وری',ur'فناوری',txtTmp)
       txtTmp=re.sub(ur'دا(ی|ئ)ر[ةته][‌ ]?المعارف',ur'دا\1رةالمعارف',txtTmp)
       txtTmp=re.sub(u'ویکی ?(?=سازی|فا |[مپ]دیا)',u'ویکی‌',txtTmp)
       txtTmp=re.sub(u'علاقه?[‌ ]?مند',u'علاقه‌مند',txtTmp)
       txtTmp=txtTmp.replace(u'باقیماند',u'باقی‌ماند')
       txtTmp=txtTmp.replace(u'مارچ',u'مارس').replace(u'آپریل',u'آوریل').replace(u'جولای',u'ژوئیه').replace(u'آگوست',u'اوت')
       txtTmp=re.sub(ur'\=\s*پانو[یي]س[‌ ]?ها\s*\=',u'= پانویس =',txtTmp)
       txtTmp=re.sub(ur'\=\s*جُ?ستار(ها[یي])? (وابسته|د[یي]گر|مرتبط|مشابه)\s*\=',u'= جستارهای وابسته =',txtTmp)
       txtTmp=re.sub(ur'\=\s*(منبع|منبع[‌ ]?ها)\s*\=',u'= منابع =',txtTmp)
       txtTmp=re.sub(ur'\=\s*(پ[یي]وند|ل[یي]نک)[‌ ]?(ها[یي])? (به ب[یي]رون|ب[یي]رون[یي]|خارج[یي])\s*\=',u'= پیوند به بیرون =',txtTmp)
       txtTmp=re.sub(u'(سپاس|شکر| بر)[‌ ]?گ[ذز]ار', ur'\1‌گزار',txtTmp)
       txtTmp=re.sub(u'(پایه|بنیان)[‌ ]?گ[ذز]ار', ur'\1‌گذار',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])بی[‌ ]?م[حه]ابا', u'بی‌محابا',txtTmp)
       txtTmp=re.sub(ur'(?<=[\s\(])بر ?خو?است', u'برخاست',txtTmp)
       txtTmp=re.sub(u'خوانواد(?=ه|گی)', u'خانواد',txtTmp)
       txtTmp=txtTmp.replace(u'خواستگاه',u'خاستگاه').replace(u'اطاق',u'اتاق').replace(u'باطری',u'باتری').replace(u'باطلاق',u'باتلاق').replace(u'ضمینه',u'زمینه').replace(u'انظباط',u'انضباط').replace(u'حاظر',u'حاضر').replace(u'مذبور',u'مزبور').replace(u'قائله',u'غائله').replace(u' وحله',u' وهله').replace(u'پزشگی',u'پزشکی').replace(u'تلوزیون',u'تلویزیون').replace(u'پرفسور',u'پروفسور').replace(u' خوشنود',u' خشنود').replace(u'ه‌گی ',u'گی ')
       #a: الگوافزایی
       if txtTmp.find(u'{{پانویس')==-1:

txtTmp=txtTmp.replace(u'== منابع ==', u'== منابع ==\n

')

       return txtTmp
  1. ------------------------------------------------------------------------------

def alarmblog():

   alarmlink = u'کاربر:Reza1615/test10'
   blogs = u'blogfa', u'mihanblog', u'persianblog', u'parsiblog', u'blogspot', u'wordpress', u'blogsky'
   for blog in blogs:
       if text_fa.find(blog) != -1:
           sitea = wikipedia.getSite('fa')
           pagealarm = wikipedia.Page(sitea, alarmlink)
           blogalarmtext = pagealarm.get()
           blogalarmtext = blogalarmtext + u'
\n' + str(page) commentb = u'ربات: در مقاله پیوند وبلاگ موجود است.' pagealarm.put(blogalarmtext, commentb, watchArticle = None, minorEdit = True) break

def alarmsource():

   alarmlink = u'کاربر:Reza1615/test9'
   if text_fa.find(u'=منابع=')==-1:
       sitea = wikipedia.getSite('fa')
       pagealarm = wikipedia.Page( sitea, alarmlink )
       blogalarmtext = pagealarm.get()
       blogalarmtext = blogalarmtext + u'
\n' + str(page) comments = u'ربات: مقاله بدون منبع است.' pagealarm.put( blogalarmtext, comments, watchArticle = None, minorEdit = True )

def run( self ):

       trovato_en = False
       sen = wikipedia.Site('fa')
       interwiki_list = []
       for page in self.generator: 
           try:
               if not page.canBeEdited():
                   wikipedia.output( u'Skipping locked page %s' % page.title() )
                   continue
               text_fa = page.get()
           except wikipedia.NoPage:
               wikipedia.output( u'Page %s not found' % page.title() )
               continue
           except wikipedia.IsRedirectPage:
                pageRedirect = page.getRedirectTarget()
                text_fa = pageRedirect.get()
                pageRedirect = page.getRedirectTarget()
                text_fa = pageRedirect.get()
                page = page.getRedirectTarget()
                wikipedia.output( u'Page %s was Redirect but edited!' %  page )                
           except:
                continue
           new_text=datacorrection(text_fa)
           if bloga == True:
               alarmblog(new_text, str(page))
           if sourcea==True:
               alarmsource(new_text, str(page))
           wikipedia.setAction( msg % page )
           self.change(page, new_text)

class Boteditor:

   def __init__(self, generator, autoTitle = False, autoText = False):
       self.generator = generator
   def change(self, page, new_text):
       if new_text.find( u'#تغییرمسیر')==-1 or  new_text.find( u'#([Rr]edirect|REDIRECT)')==-1:
           try:
               page.put(new_text, msg % page, watchArticle = None, minorEdit = True)
           except wikipedia.EditConflict:
               wikipedia.output( u'Skipping %s because of edit conflict' % ( page.title() ) )
           except wikipedia.SpamfilterError,url:
               wikipedia.output( u'Cannot change %s because of blacklist entry %s' % ( page.title(),url ) )

def main():

   gen = None
   # summary message
   summary_commandline = None
   # Don't edit pages which contain certain texts.
   exceptions = []
   # commandline paramater.
   # Which namespaces should be processed?
   # default to [] which means all namespaces will be processed
   namespaces = []
   template = None
   PageTitles = []
   autoText = False
   autoTitle = False
   bloga = False
   sourcea = False
   # This factory is responsible for processing command line arguments
   # that are also used by other scripts and that determine on which pages
   # to work on.
   genFactory = pagegenerators.GeneratorFactory()
   # Load default summary message.
   # BUG WARNING: This is probably incompatible with the -lang parameter.
   wikipedia.setAction( msg )

   # Read commandline parameters.
   #-------------------------------------------------------------------------------------------------
   for arg in wikipedia.handleArgs():
       if arg == '-autotitle':
           autoTitle = True
       elif arg == '-autotext':
           autoText = True
       elif arg.startswith( '-page' ):
           if len( arg ) == 5:
               PageTitles.append( wikipedia.input( u'Which page do you want to change?' ) )
           else:
               PageTitles.append( arg[6:] )
       elif arg.startswith( '-except:' ):
           exceptions.append( arg[8:] )
       elif arg.startswith( '-blog:' ):
           bloga=True
       elif arg.startswith( '-source:' ):
           sourcea=True
       elif arg.startswith( '-template:' ):
           template = arg[10:]
       elif arg.startswith( '-namespace:' ):
           namespaces.append( int( arg[11:] ) )
       elif arg.startswith( '-summary:' ):
           wikipedia.setAction( arg[9:] )
           summary_commandline = True
       else:
           generator = genFactory.handleArg( arg )
           if generator:
               gen = generator
   print namespaces
   if PageTitles:
       pages = [wikipedia.Page( wikipedia.getSite(), PageTitle ) for PageTitle in PageTitles]
       gen = iter( pages )
   if not gen:
       # syntax error, show help text from the top of this file
       wikipedia.showHelp( 'behsaz' )
       wikipedia.stopme()
       sys.exit()
   if namespaces != []:
       gen = pagegenerators.NamespaceFilterPageGenerator( gen, namespaces )
  1. gen = pagegenerators.RedirectFilterPageGenerator(gen)
   preloadingGen = pagegenerators.PreloadingGenerator( gen, pageNumber = 20 )
  1. -------------------------------------------------------------------------------------------------
   preloadingGen = pagegenerators.PreloadingGenerator( gen, pageNumber = 1 )
   bot = Boteditor( preloadingGen, autoTitle, autoText)
   run(bot)

if __name__ == "__main__":

   bloga=False
   sourcea=False
   try:
       main()
   except:
       pass