ویکیپدیا:درخواستهای ربات/ربات استخراج فهرست مقالات ناموجود در ویکیفا در یک رده خاص ویکیانگلیسی
این کد نام یک رده ویکیانگلیسی را از شما میگیرد و فهرست مقالاتی که در ویکی فا موجود نیستند را در زیر صفحهٔ کاربریتان (User:YourUserName) قرار میدهد که باید عبارت User:YourUserName را در کد با نام کاربری خودتان تغییر دهید.
کد[ویرایش]
#!/usr/bin/python
# -*- coding: utf-8 -*-
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 Persian_Num(text):
en_num=u'0123456789'
fa_num=u'۰۱۲۳۴۵۶۷۸۹'
a=0
for i in en_num:
text=text.replace(en_num[a],fa_num[a])
a+=1
return text
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']] موجود است ولی در ویکیپدیای فارسی موجود نیستند بر پایه تعداد میانویکی و حجم مقاله فهرست شدهاند. لطفا در ساخت این مقالات همکاری کنید.'
fa_text+=u'\n'
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="fa" 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'
#rowr=Persian_Num(rowr)
fa_text+=pagetop+rowr.strip()+pagedown
adress=u"User:Yamaha5/"+PageTitle
message=u"ربات:استخراج مقالات ناموجود از رده"
wiki = wikipedia.getSite('fa')
page = wikipedia.Page(wiki,adress)
page.put(fa_text,message)