ویکیپدیا:درخواستهای ربات/افزودن رده به فهرست مقالات
این کاربر یک ربات است | |
---|---|
وظیفه(ها) | افزودن رده به فهرست مقالات |
موافق محرومیت؟ | خیر |
موافق خاموششدن اضطراری؟ | بله |
اجازهنامه | CC-BY-SA 3.0 |
تست شده؟ | بله |
این ربات برای افزودن تعدادی رده به فهرستی از مقالات کاربرد دارد و میتوان از آن در مقالاتی که میان ویکی ندارند و ربات ردههمسنگ نمیتواند میانویکی بیفزاید استفاده کرد.
روش کار[ویرایش]
باید فهرستی از نام مقالاتی را که قصد دارید تعدادی رده خاص به آن افزوده شود، در فایل inputfile.txt به صورت زیر بسازید و در کنار فایل ربات قرار دهید:
[[مقاله۱]]
[[مقاله۲]]
[[مقاله۳]]
همچنین باید در کد ربات نام ردهها را در مقابل متغیر catlist بنویسید.
- تذکر۱
عبارت مقاله۱، مقاله۲ و... نام مقاله مورد نظر شما هست.
- تذکر۲
عبارت رده:آزمایش۱ و رده:آزمایش۲ نام رده مورد نظر شما هست که می توانید به همان روش تعداد آنها را بیشتر یا کمتر نمایید.
- تذکر۲
این کد هیچ آرگومانی ندارد و بعد از تنظیمات بالا و دریافت پرچم، میتوانید آن را اجرا نمایید.
کد[ویرایش]
<syntaxhighlight lang="python">
- !/usr/bin/python
- -*- coding: utf-8 -*-
- BY: رضا (User:reza1615 on fa.wikipedia)
- Distributed under the terms of the CC-BY-SA 3.0 .
import wikipedia,codecs,string,re catlist=[u'رده:آزمایش',u'رده:آزمایش ۲',u'رده:آزمایش۳'] msg=u'ربات:افزودن %s به فهرستی از مقالات' def pageopen(link,wiki):
link=link.replace( u'',u'' ).replace( u'',u ).strip() wikipedia.config.put_throttle = 0 wikipedia.put_throttle.setDelay() site = wikipedia.getSite(wiki) try: page = wikipedia.Page( site,link ) text=page.get() return text except wikipedia.IsRedirectPage: page = page.getRedirectTarget() try: text=page.get() return text except: return False except: return False
def run(catlist):
site = wikipedia.getSite('fa') text2 = codecs.open( u'inputfile.txt','r' ,'utf8' ) text = text2.read() linken = re.findall(ur'\[\[.*?\]\]',text, re.S) for i in range(0,len(linken)): item=linken[i].replace( u'',u'' ).replace( u'',u ).strip() page = wikipedia.Page( site,item.strip()) try: texta = page.get() except wikipedia.NoPage: wikipedia.output(u"%s doesn't exist, skip!" % page.title()) continue except wikipedia.IsRedirectPage: wikipedia.output(u"%s is a redirect!" % page.title()) page = page.getRedirectTarget() try: texta = page.get() except wikipedia.NoPage: continue except: continue text=pageopen(item,'fa') if text==False: continue cats=u'\n' for item in catlist: if text.find(item)==-1: cats+=u''+item+'\n' if cats==u'\n': wikipedia.output(u'Page '+page.title()+u' had all of the categories.this page is skipped!') continue catlistb=cats if text.find(u'رده:')!=-1: num=text.find(ur'[[رده:') text=text[:num]+u'\n'+catlistb.strip()+u'\n'+text[num:] else: m = re.search(ur'\[\[([a-z]{2,3}|[a-z]{2,3}\-[a-z\-]{2,}|simple):.*?\]\]', text) if m: if m.group(0)==u: try: if string.count(text,u' --->')==1: catlistb=catlistb.replace(u'\n\n',u'\n').strip() text=text.split(u' --->')[0]+u' --->\n'+catlistb+text.split(u' --->')[1] else: text+='\n'+catlistb.strip() except: text+='\n'+catlistb.strip() else: num=text.find(m.group(0)) text=text[:num]+u'\n'+catlistb.strip()+'\n'+text[num:] else: text+='\n'+catlistb.strip() wikipedia.output(u'Adding: '+catlistb.strip().replace(u'\n',u'-')+u"\03{lightpurple} to page "+page.title().strip()+"\03{default}") page.put(text, msg %(catlistb.strip().replace(u'\n',u'-')))
def main(catlist):
wikipedia.config.put_throttle = 0 wikipedia.put_throttle.setDelay() run(catlist)
if __name__ == '__main__':
main(catlist) wikipedia.stopme()