ویکیپدیا:درخواستهای ربات/افزودن رده به فهرست مقالات
این کاربر یک ربات است | |
---|---|
وظیفه(ها) | افزودن رده به فهرست مقالات |
موافق محرومیت؟ | خیر |
موافق خاموششدن اضطراری؟ | بله |
اجازهنامه | 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()