پرش به محتوا

ویکی‌پدیا:درخواست‌های ربات/ربات جایگزین کننده

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

این کد بر اساس یک الگو که در همه مجموعه‌ای از مقالات هست به درون مقاله میرود و عبارتی را با عبارت دیگر جایگزین میکند.

مثال

مجوز گنو-خود>GFDL-self
مورد۱>مورد۲
مورد۳>مورد۴

<syntaxhighlight lang="python" line start=1>

  1. !/usr/bin/python
  2. -*- coding: utf-8 -*-

import wikipedia as pywikibot import re from pywikibot import * from pagegenerators import *

def replacePagesLinked(site, refered, replaceWith, contains = ""):

   """
   This function replace occurance of a string with other thing on linked pages
   to a page
   """
   mainPage = pywikibot.Page(site, refered)
   genFunc = ReferringPageGenerator(mainPage)    
   
   pagesList = []
   for page in genFunc:
       pagesList.append(page)
       
   pywikibot.output("Count of page that must retrived " + str(len(pagesList)))
   
   FromText = "%s" % (refered)
   ToText   = replaceWith
   
   wikipedia.output("Replacing %s to %s" % (FromText, ToText))
   
   for page in pagesList:
       try:
           content = page.get()
           content = content.replace(FromText, ToText)
           if (contains is not "") and (contains not in content):
               pywikibot.output(page.title() + " Skipped")
               continue
       except Exception, e:
           wikipedia.output(str(e))
       
       page.put(content, u"ربات: جایگزینی %s به %s (کد)" % (refered, replaceWith))
   
   pywikibot.output("Finished!")


def replaceDictionaryToAPage(site, templateName, replacingDictionary, showDiff = True):

   """
   This function replace texts in page retrieved from a category
   
   """
   template = pywikibot.Page(site, templateName)
   genFunc  = ReferringPageGenerator(template, onlyTemplateInclusion=True)   
   
   wikipedia.output("Replacing a dictionary")
   
   for page in genFunc:
       ns = [pywikibot.getSite("fa", "wikipedia").namespace(6, all = True)]
       try:
           re.search(u'(%s)' % '|'.join(ns), page.get(), re.I).group(1)
       except AttributeError:
           continue
       try:
           oldContent = page.get()
           
           for i in replacingDictionary:
               content = oldContent.replace(i, replacingDictionary[i])
           
           if showDiff is True:
               pywikibot.showDiff(oldContent, content)
               
           page.put(content, u"ربات: اصلاح پیوندها (کد)")
           
       except Exception, e:
           wikipedia.output(str(e))
   
   pywikibot.output("Finished!")

def main():

   site = pywikibot.getSite("fa", "wikipedia")
   config.put_throttle = 0
   pywikibot.put_throttle.setDelay()
   wikipedia.output("Running scenario2")
   scenario2(site)

def scenario2(site):

   replacingDictionary = {u"مجوز گنو-خود":u"GFDL-self",u"مورد۱":u"مورد۲",u"مورد۳":u"مورد۴" }
   replaceDictionaryToAPage(site, u"الگو:مجوز گنو-خود", replacingDictionary)

if __name__ == '__main__':

   main()