ویکی‌پدیا:درخواست‌های ربات/حذف نشانی‌های اینترنتی موجود در فهرست سیاه ویکی‌پدیا

از ویکی‌پدیا، دانشنامهٔ آزاد

این کد نشانی‌های اینترنتی‌ای که در مدیاویکی:Spam-blacklist و meta:Spam_blacklist باشند را حذف می‌کند.

مواردی را که کد نمی‌تواند حذف کند

بعضی از نشانی‌ها را کد توانایی حذف آن را ندارد به دلایل زیر

  1. نحوهٔ قرارگیری نشانی در صفحه برای ربات قابل تشخیص نیست.
  2. به دلیل کاربرد متعدد و مکرر از نشانی‌های موجود در فهرست سیاه هر ویرایشی توسط پالایه فهرست سیاه متوقف می‌شود و باید همهٔ نشانی‌ها در یک ویرایش حذف شوند.

ربات مواردی را که توانایی حذفشان را ندارد در Spam_list.txt ذخیره می‌کند.

<syntaxhighlight lang="python">

  1. !/usr/bin/python
  2. -*- coding: utf-8 -*-
  3. Distributed under the terms of the CC-BY-SA 3.0 .
  4. Reza (User:Reza1615)

import wikipedia,query,re,codecs faSite = wikipedia.getSite('fa') wikipedia.config.put_throttle = 0 wikipedia.put_throttle.setDelay()

def get_url(my_url,ns):

   dict={}
   my_url=my_url.replace(u' ',u'_')
   params = {
       'action': 'query',
       'list': 'exturlusage',
       'euquery': my_url,
       'eulimit':500,
   }
   Url_list = query.GetData(params,faSite)
   wikipedia.output(u'>>>'+my_url)
   #wikipedia.output(u'>>>'+str(Url_list))
   if u'query' in str(Url_list) and u'exturlusage' in str(Url_list):
       for item in Url_list[u'query'][u'exturlusage']:
           Title=item[u'title']
           adress=item[u'url']
           if ns==1000:
               if item[u'ns']!=4:
                   dict[Title]=adress
           if ns==0:
               if item[u'ns']==0:
                   dict[Title]=adress
   return dict

def remove_link(title,urls,notremoved):

   wikipedia.output(u'\03{lightyellow}---------'+title+u'---------\03{default}')
   fapage=wikipedia.Page(faSite,title)
   for url in [urls,urls.replace(ur'http://',u),urls.replace(ur'https://',u),urls.replace(ur'https://',ur'http://'),urls.replace(ur'http://',ur'https://')]:
       fa_txt=fapage.get().replace(u' '+url,url).replace(url+u' ',url).replace(u' '+url,url).replace(url+u' ',url)
       fa_txt=fa_txt.replace(u'\n*',u'\n* ').replace(u'\n*  ',u'\n* ').replace(u'\n#',u'\n# ').replace(u'\n#  ',u'\n# ')
       fa_txt_old=fa_txt
       fa_txt=fa_txt.replace(u'example.com',u)
       fa_txt=fa_txt.replace(u'[۱]',u)
       if u'['+url in fa_txt:
           our_link=u'['+url+fa_txt.split(u'['+url)[1].split(u']')[0]+u']'
           wikipedia.output(our_link+u'----------------')
           fa_txt=fa_txt.replace(u'\n* '+our_link+u'\n',u'\n').replace(u'\n* '+our_link,u).replace(u'\n# '+our_link,u).replace(u'* '+our_link+u'\n',u).replace(u'\n# '+our_link+u'\n',u'\n').replace(u'('+our_link+u')',u).replace(our_link+u'\n',u).replace(our_link,u)
           fa_txt=fa_txt.replace(u'[]',u).replace(u'[ ]',u)
       elif u'|'+url+u'}' in fa_txt:
           fa_txt=fa_txt.replace(u'|'+url+u'}',u'|}')
       elif u'|'+url+u'|' in fa_txt:
           fa_txt=fa_txt.replace(u'|'+url+u'|',u'| |')
       elif u'{'+url+u'|' in fa_txt:
           fa_txt=fa_txt.replace(u'{'+url+u'|',u'{ |')
       elif u'{'+url+u'}' in fa_txt:
           fa_txt=fa_txt.replace(u'{'+url+u'}',u)
       elif u'\n* '+url+u'\n' in fa_txt:
           fa_txt=fa_txt.replace(u'\n* '+url+u'\n',u'\n')
       elif u'\n# '+url+u'\n' in fa_txt:
           fa_txt=fa_txt.replace(u'\n# '+url+u'\n',u'\n')
       elif u'='+url in fa_txt:
           fa_txt=fa_txt.replace(u'='+url,u'=')
       elif url in fa_txt:
           wikipedia.output(u'\03{lightred}Page ='+title+u' is difficult Url='+url+u'\03{default}')
       else:
           wikipedia.output(u'\03{lightblue}Some thing is wrong the page does not have Url\03{default}')
       if fa_txt!=fa_txt_old:
           fa_txt=fa_txt.replace(u'خطای یادکرد: برچسب‌های <ref> یافته شد که درونشان محتوایی نبود. یادکرد منبع باید بین برچسب‌ها قرار گیرد. (صفحهٔ راهنما را مطالعه کنید.).

',u).replace(u'خطای یادکرد: برچسب‌های <ref> یافته شد که درونشان محتوایی نبود. یادکرد منبع باید بین برچسب‌ها قرار گیرد. (صفحهٔ راهنما را مطالعه کنید.). ',u).replace(u'خطای یادکرد: برچسب‌های <ref> یافته شد که درونشان محتوایی نبود. یادکرد منبع باید بین برچسب‌ها قرار گیرد. (صفحهٔ راهنما را مطالعه کنید.). ',u).replace(u'خطای یادکرد: برچسب‌های <ref> یافته شد که درونشان محتوایی نبود. یادکرد منبع باید بین برچسب‌ها قرار گیرد. (صفحهٔ راهنما را مطالعه کنید.). ',u).replace(u'خطای یادکرد: برچسب‌های <ref> یافته شد که درونشان محتوایی نبود. یادکرد منبع باید بین برچسب‌ها قرار گیرد. (صفحهٔ راهنما را مطالعه کنید.). ',u).replace(u'[۲]',u).replace(u'[۳]',u).replace(u'[۴]',u).replace(u'[۵]',u).replace(u'[۶]',u).replace(u'[۷]',u)

           try:
               fapage.put(fa_txt,u'ربات:حذف نشانی‌های موجود در مدیاویکی:Spam-blacklist یا meta:pam_blacklist یا نشانی اسپم')
           except:
               addtolist=u'\n# '+title+u' > ['+url+u']'
               if not addtolist in notremoved:
                   notremoved=notremoved+addtolist
               pass
       else:
           wikipedia.output(u'\03{lightred}Bot could not remove the link! Page ='+title+u' is difficult Url='+url+u'\03{default}')
           addtolist=u'\n# '+title+u' > ['+url+u']'
           if not addtolist in notremoved:
               notremoved=notremoved+addtolist
   return notremoved

fapage=wikipedia.Page(faSite,u'مدیاویکی:Spam-blacklist') Black_text=fapage.get().replace(u'\r',u)

metaSite = wikipedia.getSite('meta',fam='meta') metapage=wikipedia.Page(metaSite,u'Spam_blacklist') Black_text2=metapage.get().replace(u'\r',u) Black_text+=u'\n'+Black_text2

notremoved=u'\n' for line in Black_text.split(u'\n'):

   if u'#' in line or u'{' in line or u'[' in line or u'<' in line or u'>' in line:
       continue
   my_url=line.replace(u'\\b',u).replace(u"\\",u"").replace(u"\:",u":").replace(u"\.",u".")
   dict=get_url(my_url,1000)
   for title in dict:
       notremoved=remove_link(title,dict[title],notremoved)

with codecs.open(u'Spam_list.txt' ,mode = 'w',encoding = 'utf8' ) as f:

   f.write(notremoved)
  1. '+url+ur'
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n\n