تضامنًا مع حق الشعب الفلسطيني |
أرابيكا:بوت/استخراج قائمة المقالات غير الموجودة حسب التصنيف
يستخرج هذا البوت قائمة المقالات غير الموجودة في العربية من التصنيف الإنجليزي وتصانيفه الفرعية. الكود يعمل علي التولابز فقط
إستبدل User:YourUserName ب User:اسمك المستخدم
التشغيل
لتشغيل البوت تحتاج لنقله لمجلد "pywikipedia"، لفعل ذلك نفذ الخطوات الآتية:
- أنشئ مجلدًا جديدًا في "date/project" وسمِّه "pyfolder" (باستخدام WinScp)
- انقل البوت بعد التعديل عليه إلى مجلد "pyfolder"
- افتح پوتي وصِر أداة become tool
- غير المسار
cd
cd pyfolder
- انسخ الملف من مجلد "pyfolder" إلى مجلد "pywikipedia"
cp *.* /data/project/ToolName/pywikipedia
حيث "ToolName" هو اسم أداتك - غير المسار
cd
- اذهب إلى مجلد البوت الأصلي
cd pywikipedia
python NameOfTheBot.py _
حيث "NameOfTheBot" هو اسم البوت
اختر تصنيفًا وسيبدأ البوت بالعملية
الكود
<syntaxhighlight lang="python" line start="1">
- !/usr/bin/python
- -*- coding: utf-8 -*-
- Reza (User:Reza1615)
- 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)