أرابيكا:بوت/استخراج قائمة المقالات غير الموجودة حسب التصنيف

من أرابيكا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث

يستخرج هذا البوت قائمة المقالات غير الموجودة في العربية من التصنيف الإنجليزي وتصانيفه الفرعية. الكود يعمل علي التولابز فقط

إستبدل User:YourUserName ب User:اسمك المستخدم

التشغيل

لتشغيل البوت تحتاج لنقله لمجلد "pywikipedia"، لفعل ذلك نفذ الخطوات الآتية:

  1. أنشئ مجلدًا جديدًا في "date/project" وسمِّه "pyfolder" (باستخدام WinScp)
  2. انقل البوت بعد التعديل عليه إلى مجلد "pyfolder"
  3. افتح پوتي وصِر أداة become tool
  4. غير المسار cd
  5. cd pyfolder
  6. انسخ الملف من مجلد "pyfolder" إلى مجلد "pywikipedia"
    cp *.* /data/project/ToolName/pywikipedia
    حيث "ToolName" هو اسم أداتك
  7. غير المسار cd
  8. اذهب إلى مجلد البوت الأصلي cd pywikipedia

حيث "NameOfTheBot" هو اسم البوت

اختر تصنيفًا وسيبدأ البوت بالعملية

الكود

<syntaxhighlight lang="python" line start="1">

  1. !/usr/bin/python
  2. -*- coding: utf-8 -*-
  3. Reza (User:Reza1615)
  4. Abbas (User:Elph)

import catlib ,pagegenerators import wikipedia,urllib,gzip,codecs,re import MySQLdb as mysqldb import config line_items,rowi,rowr,text,count=' ',' ',' ',' ',0 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'

wiki = wikipedia.getSite(language)

PageTitle=PageTitle.replace(u'',u'').replace(u'',u).replace(u' ',u'_').replace(u'Category:',u).replace(u'category:',u).strip()

def categorydown(listacategory):

   listacategory=[listacategory]
   count=1
   for catname in listacategory:
       count+=1
       if count==200:
           break
       gencat = pagegenerators.SubCategoriesPageGenerator(catname, recurse=False)
       for subcat in gencat:
           try:
              wikipedia.output(str(subcat))
           except:    
               wikipedia.output(subcat)
           if subcat in listacategory:
               continue
           else:
               listacategory.append(subcat)
       break
   return listacategory

encat = catlib.Category( wiki,PageTitle ) cat_list=categorydown(encat) fa_text=u'هذه الصفحة تتضمن قائمة من المقالات غيرالموجودة في العربية وتم استخراجها من تصنيف en:Category:'+PageTitle+u' وتم ترتيبها حسب عدد وصلات اللغات والحجم. يرجى أن تساهم في إنشاء عدد من هذه المقالات.' page_list=[] for cat in cat_list:

   cat=cat.title().replace(u'',u'').replace(u'',u).replace(u' ',u'_').replace(u'Category:',u).strip()
   if '_stubs' in cat:
       continue
   conn = mysqldb.connect(language+"wiki.labsdb", db = wiki.dbName(),
                          user = config.db_username,
                          passwd = config.db_password)
   cursor = conn.cursor()
   cursor.execute('SELECT CONCAT(":",page_title,"]]||", count(*),"||",page_len ) FROM langlinks JOIN categorylinks ON ll_from = cl_from AND cl_to="'+cat+'"JOIN page on ll_from = page_id   WHERE page_namespace = 0 AND page_is_redirect = 0 AND NOT EXISTS (SELECT * FROM langlinks as t WHERE t.ll_lang="ar" and t.ll_from = langlinks.ll_from) GROUP BY ll_from   ORDER BY count(*) DESC,page_title;')
   results = cursor.fetchall()
   count=0
   rowr='\n'
   for row in results:
           count+=1
           rowi=unicode(str(row[0]),'UTF-8')
           
           if not rowi in page_list:
               page_list.append(rowi)
               rowr+=u'|'+str(count)+u'||[[:'+language+rowi+u'\n|-\n'
   pagetop=u"\n==en:Category:"+cat+"==\n"
   pagetop+=u'\n{| class="wikitable sortable"\n!الرقم!!المقالة!!عدد وصلات اللغات!!حجم المقالة\n|-\n'
   pagedown=u'\n|}\n'
   fa_text+=pagetop+rowr.strip()+pagedown

adress=u"User:YourAcount/"+PageTitle message=u"بوت استخراج قائمة المقالات غير الموجودة حسب التصنيف" wiki = wikipedia.getSite('ar') page = wikipedia.Page(wiki,adress) page.put(fa_text,message)