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

<syntaxhighlight lang="python">

  1. !/usr/bin/python
  2. -*- coding: utf-8 -*-
  3. BY: رضا (User:reza1615 on fa.wikipedia)
  4. Distributed under the terms of the CC-BY-SA 3.0 .
  5. This bot uses for finding subcategories and subpages from main category

__version__ = '$Id: $' import wikipedia,sys import pagegenerators import re, os, codecs, catlib wikipedia.config.put_throttle = 0 wikipedia.put_throttle.setDelay() faSite = wikipedia.getSite('fa') text=u' ' listacategory= [] WPDic = {u'.NET': u'دات‌نت', u"Bahá'í_Faith": u'بهائیت', u'Afghanistan': u'افغانستان', u'Africa': u'آفریقا', u'Agriculture': u'کشاورزی', u'Albania': u'آلبانی', u'Albums': u'آلبوم‌ها', u'Algeria': u'الجزایر', u'Anatomy': u'کالبدشناسی', u'Ancient_Egypt': u'مصر باستان', u'Animals': u'جانوران', u'Antarctica': u'جنوبگان', u'Anthropology': u'مردم‌شناسی', u'Arab_world': u'جهان عرب', u'Archaeology': u'باستان‌شناسی', u'Architecture': u'معماری', u'Arctic': u'شمالگان', u'Argentina': u'آرژانتین', u'Armenia': u'ارمنستان', u'Asia': u'آسیا', u'Assyria': u'آشور', u'Astrology': u'ستاره‌بینی', u'Astronomy': u'اخترشناسی', u'Australia': u'استرالیا', u'Austria': u'اتریش', u'Automobiles': u'خودروها', u'Aviation': u'هوانوردی', u'Azerbaijan': u'جمهوری آذربایجان', u'Bahrain': u'بحرین', u'Bangladesh': u'بنگلادش', u'Basketball': u'بسکتبال', u'Belarus': u'بلاروس', u'Belgium': u'بلژیک', u'Bible': u'کتاب مقدس', u'Biography': u'زندگی‌نامه', u'Biology': u'زیست‌شناسی', u'Birds': u'پرندگان', u'Bolivia': u'بولیوی', u'Books': u'کتاب‌ها', u'Brazil': u'برزیل', u'Buddhism': u'بودیسم', u'Bulgaria': u'بلغارستان', u'Cambodia': u'کامبوج', u'Canada': u'کانادا', u'Caribbean': u'کارائیب', u'Cats': u'گربه‌ها', u'Central_America': u'آمریکای مرکزی', u'Central_Asia': u'آسیای میانه', u'Chemicals': u'مواد شیمیایی', u'Chemistry': u'شیمی', u'Chess': u'شطرنج', u'Chile': u'شیلی', u'China': u'چین', u'Christianity': u'مسیحیت', u'Cities': u'شهرها', u'Cold_War': u'جنگ سرد', u'Colombia': u'کلمبیا', u'Companies': u'شرکت‌ها', u'Computer_science': u'علوم رایانه', u'Computer_Security': u'امنیت رایانه‌ای', u'Computing': u'رایانش', u'Countries': u'کشورها', u'Croatia': u'کرواسی', u'Cuba': u'کوبا', u'Denmark': u'دانمارک', u'Dentistry': u'دندان‌پزشکی', u'Dogs': u'سگ‌ها', u'East_Asia': u'آسیای شرقی', u'Eastern_Europe': u'اروپای شرقی', u'Ecuador': u'اکوادور', u'Education': u'آموزش و پرورش', u'Egypt': u'مصر', u'Electronics': u'الکترونیک', u'Elements': u'عناصر شیمیایی', u'England': u'انگلستان', u'Estonia': u'استونی', u'Ethiopia': u'اتیوپی', u'Ethnic_groups': u'اقوام', u'Europe': u'اروپا', u'European_history': u'تاریخ اروپا', u'Evolutionary_biology': u'نظریه تکامل', u'Explosives': u'مواد منفجره', u'Film': u'فیلم', u'Finland': u'فنلاند', u'Firearms': u'جنگ‌افزارهای گرم', u'Fishes': u'ماهی‌ها', u'Football': u'فوتبال', u'France': u'فرانسه', u'Freemasonry': u'فراماسونری', u'Games': u'بازی‌ها', u'Geography': u'جغرافیا', u'Geology': u'زمین‌شناسی', u'Germany': u'آلمان', u'Greece': u'یونان', u'Harry_Potter': u'هری پاتر', u'Hazara': u'قوم هزاره', u'Highways': u'بزرگ‌راه‌ها', u'Hinduism': u'هندوئیسم', u'History': u'تاریخ', u'Hong_Kong': u'هنگ کنگ', u'Hungary': u'مجارستان', u'Iceland': u'ایسلند', u'India': u'هند', u'Indonesia': u'اندونزی', u'Internet': u'اینترنت', u'Iran': u'ایران', u'Iraq': u'عراق', u'Islam': u'اسلام', u'Islands': u'جزیره‌ها', u'Israel': u'اسرائیل', u'Italy': u'ایتالیا', u'Jainism': u'جین', u'Japan': u'ژاپن', u'Jordan': u'اردن', u'Judaism': u'یهودیت', u'Korea': u'کره', u'Kurdistan': u'کردستان', u'Kuwait': u'کویت', u'Kyrgyzstan': u'قرقیزستان', u'Lakes': u'دریاچه‌ها', u'Languages': u'زبان‌ها', u'Latin': u'زبان لاتین', u'Latin_America': u'آمریکای لاتین', u'Latvia': u'لتونی', u'Law': u'قانون', u'Lebanon': u'لبنان', u'Liberalism': u'لیبرالیسم', u'Libraries': u'کتابخانه‌ها', u'Linguistics': u'زبان‌شناسی', u'Linux': u'لینوکس', u'Literature': u'ادبیات', u'Lithuania': u'لیتوانی', u'London': u'لندن', u'Malaysia': u'مالزی', u'Maldives': u'مالدیو', u'Mammals': u'پستانداران', u'Mars': u'مریخ', u'Martial_arts': u'هنرهای رزمی', u'Medicine': u'پزشکی', u'Mexico': u'مکزیک', u'Michael_Jackson': u'مایکل جکسون', u'Microbiology': u'میکروبیولوژی', u'Microsoft': u'مایکروسافت', u'Middle-earth': u'سرزمین میانی', u'Moldova': u'مولداوی', u'Montenegro': u'مونته‌نگرو', u'Moon': u'ماه', u'Morocco': u'مراکش', u'Mountains': u'کوه‌ها', u'Muslim_history': u'تاریخ اسلام', u'Nepal': u'نپال', u'Netherlands': u'هلند', u'New_Zealand': u'نیوزیلند', u'Nigeria': u'نیجریه', u'North_America': u'آمریکای شمالی', u'North_East_England': u'شمال شرقی انگلستان', u'Northern_Ireland': u'ایرلند شمالی', u'Norway': u'نروژ', u'Oceans': u'اقیانوس‌ها', u'Oman': u'عمان', u'Pakistan': u'پاکستان', u'Palestine': u'فلسطین', u'Paraguay': u'پاراگوئه', u'Paranormal': u'ماوراءالطبیعه', u'Parapsychology': u'فراروان‌شناسی', u'Peru': u'پرو', u'Pharmacology': u'داروشناسی', u'Philosophy': u'فلسفه', u'Photography': u'عکاسی', u'Physics': u'فیزیک', u'Plants': u'گیاهان', u'Poetry': u'شعر', u'Poland': u'لهستان', u'Politics': u'سیاست', u'Ports': u'بندرها', u'Portugal': u'پرتغال', u'Primates': u'نخستی‌ها', u'Prison_Break': u'فرار از زندان', u'Professional_wrestling': u'کشتی حرفه‌ای', u'Psychology': u'روان‌شناسی', u'Qatar': u'قطر', u'Religion': u'دین', u'Rivers': u'رودها', u'Robotics': u'رباتیک', u'Rocks_and_minerals': u'سنگ‌ها و مواد معدنی', u'Rodents': u'جوندگان', u'Romania': u'رومانی', u'Rome': u'رم', u'Running': u'دو', u'Russia': u'روسیه', u'Saudi_Arabia': u'عربستان سعودی', u'Science': u'علم', u'Scotland': u'اسکاتلند', u'Serbia': u'صربستان', u'Sikhism': u'آیین سیک', u'Slovakia': u'اسلواکی', u'Slovenia': u'اسلوونی', u'Socialism': u'سوسیالیسم', u'Sociology': u'جامعه‌شناسی', u'Software': u'نرم‌افزار', u'Solar_System': u'منظومه شمسی', u'South_Africa': u'آفریقای جنوبی', u'South_America': u'آمریکای جنوبی', u'South_Sudan': u'سودان جنوبی', u'Southeast_Asia': u'آسیای جنوب شرقی', u'Soviet_Union': u'اتحاد جماهیر شوروی سوسیالیستی', u'Space': u'فضا', u'Spain': u'اسپانیا', u'Spirituality': u'معنویت', u'Star_Trek': u'پیشتازان فضا', u'Star_Wars': u'جنگ ستارگان', u'Sweden': u'سوئد', u'Switzerland': u'سوئیس', u'Syria': u'سوریه', u'Taiwan': u'تایوان', u'Tajikistan': u'تاجیکستان', u'Taoism': u'تائوئیسم', u'Technology': u'فناوری', u'Telecommunications': u'مخابرات', u'Television': u'تلویزیون', u'Terrorism': u'تروریسم', u'Thailand': u'تایلند', u'Theology': u'الهیات', u'Tibet': u'تبت', u'Trade': u'بازرگانی', u'Transport': u'ترابری', u'Tunisia': u'تونس', u'Turkey': u'ترکیه', u'Turkmenistan': u'ترکمنستان', u'Ukraine': u'اوکراین', u'United_Arab_Emirates': u'امارات متحده عربی', u'United_Kingdom': u'بریتانیا', u'United_States': u'ایالات متحده آمریکا', u'United_States_History': u'تاریخ ایالات متحده آمریکا', u'Universities': u'دانشگاه‌ها', u'Uruguay': u'اروگوئه', u'Vatican_City': u'واتیکان', u'Venezuela': u'ونزوئلا', u'Veterinary_medicine': u'دامپزشکی', u'Video_games': u'بازی‌های رایانه‌ای', u'Vietnam': u'ویتنام', u'Viruses': u'ویروس‌ها', u'Volleyball': u'والیبال', u'Websites': u'وب‌گاه‌ها', u'Western_Asia': u'جنوب غربی آسیا', u'Wikipedia': u'ویکی‌پدیا', u'World_Heritage_Sites': u'میراث جهانی یونسکو', u'Writing_systems': u'خط‌ها', u'Years': u'سال‌ها', u'Yemen': u'یمن', u'Yugoslavia': u'یوگسلاوی', u'Zimbabwe': u'زیمبابوه', u'Zoroastrianism': u'مزدیسنا'}

def dict(Title):

   translate=False
   titr=u''+Title.replace(u'Category:Top-importance',u).replace(u'Category:High-importance',u).replace(u' articles',u).strip()+u''
   for item in WPDic:
       item2=item.replace('_',' ').strip()
       if Title.find(item2)!=-1 or Title.find(item)!=-1:
           Title=u'[['+WPDic[item]+u']] ('+titr+u')'
           translate=True
           return Title,translate
   if translate==False:
       Title=titr
       return Title,translate

def run(gen,onvan):

   count=0
   nopage='\n=='+onvan+u'==\n'
   pagename=' '
   for pagework in gen:
         count+=1
         link=str(pagework).split(u'|')[0].split(u']]')[0].replace(u'[[',u).strip()
         link=u''+link+u''
         pagename+='\n#'+link
         nopage=' '
   pagename=pagename.strip()
   return pagename,nopage

def category(listacategory):

   count=1
   for catname in listacategory:
       #count+=1
       #if count==1000:
           #break
       gencat = pagegenerators.SubCategoriesPageGenerator(catname, recurse=False)
       for subcat in gencat:
           print subcat
           if subcat in listacategory:
               continue
           else:
               listacategory.append(subcat)
   return listacategory

def main():

   text=u' '
   text2=u' '
   cattext=' '
   language='en'
   wikipedia.config.put_throttle = 0
   wikipedia.put_throttle.setDelay()
   PageTitle =raw_input('Paste Category Name> ').decode('utf-8')
   language=raw_input('which wiki? (en is defult)> ').decode('utf-8')
   if language== :
       language='en'
   if PageTitle.find(u'[[')!=-1:
       PageTitle.replace(u'[[',u).strip()
   if PageTitle.find(u']]')!=-1:
       PageTitle.replace(u']]',u).strip()
   PageTitles =[PageTitle]  
   for PageTitle in PageTitles:
       sitefa = wikipedia.getSite(language)   
       cat = catlib.Category( sitefa,PageTitle )
       listacategory=[cat]
       listacategory=category(listacategory)
       for Title in listacategory:
                  Title=str(Title).split(u'|')[0].split(u']]')[0].replace(u'[[',u).strip()
                  sitefa = wikipedia.getSite(language)   
                  cat = catlib.Category( sitefa,Title )
                  gent = pagegenerators.CategorizedPageGenerator( cat )
                  onvan,translate =dict(Title)
                  textresult,nopage=run(gent,onvan)
                  if nopage==' ':
                      if translate==True:
                              text+=u'\n=='+onvan+u'==\n'+textresult
                      else:
                              text2+=u'\n=='+onvan+u'==\n'+textresult
   text=text+u'\n'+text2.strip()
   if text.strip()!=:
       text=u'\n==مقاله‌ها==\n'+text.strip()
       text=text.replace(language+u':',u':'+language+u':').replace(u'|:'+language+u':',u'|').replace(u'Talk:',u)
       pagefa = wikipedia.Page(wikipedia.getSite('fa'),u'کاربر:reza1615/test02' )
       pagefa.put(text.strip(), u'ربات: مقالات زیررده (کد)')

if __name__ == '__main__':

   try:
       main()
   finally:
       wikipedia.stopme()