چگونگی نصب ماژول مبتنی بر پایتون

  1. پوشه نرم‌افزار ویرایشگر خودکار را هر جا که مایلید قرار دهید.
  2. به‌منظور دسترسی آسان‌تر، یک میان‌بر از فایل AutoWikiBrowser.exe بسازید و در دسکتاپ قرار دهید.
  3. کدهای ماژول موردنظر را در جعبهٔ متنی در مسیر ابزارها > ایجاد ماژول قرار دهید (محتویات ازپیش تهیه‌شده آن جعبهٔ متنی را می‌توانید پاک کنید).
  4. گزینهٔ Enabled را تیک بزنید و روی Make module کلیک کنید (اگر خطایی دریافت نکردید، می‌توانید ادامه دهید).
  5. کدهای پایتون موردنظر را تحت عنوان مشخص‌شده در یک فایل با پسوند .py ذخیره کنید و در پوشهٔ plugins در مسیر نصب نرم‌افزار قرار دهید.
  6. مطمئن شوید آخرین نگارش پایتون روی رایانه شما نصب و مسیر آن در متغیر PATH تعریف شده باشد.

در صورت بروز هر مشکل یا پرسش با Yamaha5 مکاتبه کنید.

شروع به کار ویرایش

برای شروع مقالات موجود در رده:مقاله‌‌ها با پارامتر تعریف‌نشده در جعبه اطلاعات شهر ایران را به کمک ماژول حذف پارامتر اشتباه، تمیز کنید.

نکته۱: متغییر parameters فقط برای الگو:جعبه اطلاعات شهر ایران کاربرد دارد برای کارکردن با الگوی دیگر باید پارامترهای به کاررفته در الگو را از نو جمع‌آوری کرد.
نکته۲: برای اجرای کد پایتون حتما باید پایتون ۳ بر روی سیستمتان نصب باشد و با پایتون ۲ کار نمی‌کند (البته با کمی تغییر در کد می‌توانید آن را با پایتون ۲ هم سازگار کنید)
  • ماژول
public string ProcessArticle(string content, string title, int ns, out string summary, out bool skip) {
	summary = "+ ماژول حذف پارامتر اضافی";
	skip = false;

	try {
		System.Diagnostics.ProcessStartInfo python = new System.Diagnostics.ProcessStartInfo();
		python.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
		// Make sure the Python exists in PATH.
		python.FileName = "python";
		python.Arguments = @"plugins\remove_extra_parameters.py";

		using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"io.txt", false, System.Text.Encoding.UTF8)) {
			file.Write(content);
		}

		using(System.Diagnostics.Process process = System.Diagnostics.Process.Start(python)) {
			// Don't remove the following line.
			process.WaitForExit();

			var newContent = content;
			if (System.IO.File.Exists(@"io.txt")) {
				newContent = System.IO.File.ReadAllText(@"io.txt");
			}

			return newContent;
		}
	}
	catch {
		return content;
	}
}
  • remove_extra_parameters.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# BY: رضا (User:reza1615 on fa.wikipedia)

import re,string,codecs
boxes=[u'جعبه']
parameters=[u"ارتفاع",u"استان",u"اندازه‌تصویر",u"اندازه تصویر",u"بخش",u"برچسب‌تصویر",u"تراکم‌جمعیت",u"تراکم جمعیت",u"تصویر",u"جمعیت",u"جمله‌خوشامد",u"جمله خوشامد",
u"رشد‌جمعیت",u"رشد جمعیت",u"ره‌آورد",u"روزهای‌یخبندان",u"روزهای یخبندان",u"روی‌نقشه",u"زبان",u"سال‌تأسیس‌شهرداری",u"سال‌شهرشدن",u"سال تأسیس شهرداری",
u"سال شهرشدن",u"شمارروزهای‌یخبندان",u"شهردار",u"شهرستان",u"طول‌جغرافیایی",u"عرض‌جغرافیایی",u"عنوان‌تصویر",u"عنوان تصویر",u"فتوکلاژ",u"مذهب",u"مساحت",
u"میانگین‌بارش‌سالانه",u"میانگین‌بارش",u"میانگین‌دما",u"میانگین بارش",u"میانگین دما",u"نام‌رسمی",u"نام‌محلی",u"نام‌های‌دیگر",u"نام‌های‌قدیمی",u"نام‌های دیگر",u"نام‌های قدیمی",
u"نام محلی",u"نماد‌شهرداری",u"نماد شهرداری",u"نماینده‌مجلس",u"نماینده مجلس",u"وبگاه",u"پانویس",u"پلاک‌اتومبیل",u"پلاک اتومبیل",u"پیش‌شماره",u"کد‌آماری",u"کد آماری",u"latd",
u"latm",u"latNS",u"lats",u"longd",u"longEW",u"longm",u"longs"]

def boxfind(txt):
    txt=txt.replace(u'{{ ',u'{{').replace(u'{{ ',u'{{').replace(u'{{الگو:',u'{{').replace(u'{{template:',u'{{').replace(u'{{Template:',u'{{')
    lines=txt.split(u'\n')
    start=False    
    box=u'\n'
    diff=1
    linebaz,linebasteh=0,0
    for our_box in boxes:
        our_box=our_box.strip()
        up_our_box=our_box[0].upper()+our_box[1:]
        lower_our_box=our_box[0].lower()+our_box[1:]
        for line in lines:
            if line==u'':
                continue
            if line.find(u'{{'+lower_our_box)!=-1 :# lower case    
                start=True
                linebaz,linebasteh=0,0
                box+=u'{{'+lower_our_box+line.split(u'{{'+lower_our_box)[1]+'\n'
                linebaz += line.count( "{{" )
                linebasteh += line.count( "}}" )    
                diff=linebaz-linebasteh
                continue
            if line.find(u'{{'+up_our_box)!=-1 :# upper case
                start=True
                linebaz,linebasteh=0,0
                box+=u'{{'+up_our_box+line.split(u'{{'+up_our_box)[1]+'\n'
                linebaz += line.count( "{{" )
                linebasteh += line.count( "}}" )
                diff=linebaz-linebasteh
                continue
            if start==True and diff!=0:
                linebaz += line.count( "{{" )
                linebasteh += line.count( "}}" )
                diff=linebaz-linebasteh
                box+=line+'\n'
            if diff==0 and start==True:
              break
    return box

def remove_extra_parameters (txt):
    txt=txt.replace(u'\r',u'')
    mybox=boxfind(txt)
    parameters_list=re.findall(r'^\| *([^\=\n]+) *\=(?: *[^\n ]+| *(?:[^\n ]+ ?)+ *)\n' , mybox , re.S|re.UNICODE | re.MULTILINE)
    parameters_list2=re.findall(r'^\|([^\=\n]+)\n',mybox,re.S| re.UNICODE | re.MULTILINE)
    should_rmove=[x.strip() for x in parameters_list if x.strip() not in parameters]
    should_rmove2=[x.strip() for x in parameters_list2 if x.strip() not in parameters]
    for i in should_rmove:
        #return i
        txt=re.sub(r"\| *"+i.strip()+r" *\=(?: *[^\n ]+| *(?:[^\n ]+ ?)+ *)\n","",txt)
    for i in parameters_list2:
        #return i
        if 'پیش‌شماره' in i:
            txt=txt.replace('پیش‌شماره','پیش‌شماره=')
        elif 'جمله خوشامد' in i:
            txt=txt.replace('جمله خوشامد','جمله خوشامد=')
        elif 'مذهب' in i:
            txt=txt.replace('مذهب','مذهب=')
        elif 'جمعیت' in i:
            #txt=re.sun('^\| * جمعیت ([^\=\|\n]+)\n','|جمعیت =\1\n',txt)
            txt=txt.replace('|جمعیت','|جمعیت=')
            txt=txt.replace('|جمعیت=:','|جمعیت=')
    return txt

with codecs.open(u'io.txt', 'r+', 'utf8') as f:
	text = remove_extra_parameters(f.read())
	f.seek(0)
	f.truncate()
	f.write(text)