Guest User

Untitled

a guest
Oct 22nd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.18 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8  -*-
  3.  
  4. #######################################################################################################################
  5.  
  6. #######################################################################################################################
  7.  
  8.  
  9. __version__ = '$Id$'
  10. testodamettere = "Lista generata con Makelist.\n"
  11.  
  12. import wikipedia as pywikibot
  13. import pagegenerators
  14. import sys
  15. import urllib
  16. import re
  17.  
  18. class AppURLopener(urllib.FancyURLopener):
  19.     #User-Agent
  20.     version = "GeenMakelistBot"
  21.  
  22.  
  23.  
  24.  
  25. docuReplacements = {
  26.     '&params;': pagegenerators.parameterHelp
  27. }
  28.  
  29. class BasicBot:
  30.     #Ciò che scriverà il bot per ogetto delle modifiche.
  31.     msg = {
  32.         'it': u'Bot: Makelist',
  33.     }
  34.  
  35.     def __init__(self, generator, dry):
  36.         self.generator = generator
  37.         self.dry = dry
  38.         self.summary = pywikibot.translate(pywikibot.getSite(), self.msg)
  39.         i = 0
  40.         self.pattern = []
  41.         self.escludi = []
  42.         regexInput = raw_input("Cosa vuoi cercare? [Attenzione, usa le regex!]\n")
  43.         self.pattern.append(re.compile("(" + regexInput + ")"))
  44.         while(regexInput != ""):
  45.            i = i + 1;
  46.            regexInput = raw_input("Vuoi inserire un'altra regex? [Lascia vuoto per proseguire.]\n")
  47.            self.pattern.append(re.compile("(" + regexInput + ")"))
  48.  
  49.         del self.pattern[i]
  50.         regexInput = raw_input("Vuoi escludere una regex? [Inserisci la regex o lascia vuoto.]\n")
  51.         self.escludi.append(re.compile("(" + regexInput + ")"))
  52.         i = 0
  53.         while(regexInput != ""):
  54.            i = i + 1;
  55.            regexInput = raw_input("Vuoi escludere un'altra regex? [Lascia vuoto per proseguire.]\n")
  56.            self.escludi.append(re.compile("(" + regexInput + ")"))
  57.  
  58.         del self.escludi[i]
  59.  
  60.     def run(self):
  61.         for page in self.generator:
  62.            escludi = 0
  63.            for pattern in self.escludi:
  64.               localEscludi = pattern.findall(self.load(page))
  65.               if localEscludi:
  66.                   escludi = 1
  67.  
  68.            if not escludi:
  69.               paginagiatrovata = 0
  70.               for pattern in self.pattern:
  71.                 localMatch = pattern.findall(self.load(page))
  72.                 if localMatch:
  73.                   if not paginagiatrovata:
  74.                     print('Trovato in ' + str(page))
  75.                     titolo = str(page).replace("[[", "")
  76.                     titolo = titolo.replace("]]", "").decode("utf-8")
  77.                     globals()["testodamettere"] = globals()["testodamettere"] + "# '''[[:" + titolo + "]]''' ([{{fullurl:" + titolo + "|action=edit}} modifica])\n"
  78.                   paginagiatrovata = 1
  79.                   i = 0
  80.                   for match in localMatch:
  81.                       i = i + 1
  82.                       if type(match) is list or type(match) is tuple:
  83.                           risultato = match[0].replace("<nowiki>", "").replace("</nowiki>", "")
  84.                        
  85.                       else:
  86.                           risultato = match.replace("<nowiki>", "").replace("</nowiki>", "")
  87.                    
  88.                       globals()["testodamettere"] = globals()["testodamettere"] + "#*" + str(i) + ": ''<nowiki>" + risultato + "</nowiki>''\n"              
  89.  
  90.  
  91.  
  92.     def treat(self, page, text):
  93.         if not self.save(text, page, self.summary):
  94.             pywikibot.output(u'Page %s not saved.' % page.aslink())
  95.  
  96.     def load(self, page):
  97.         try:
  98.             text = page.get()
  99.         except pywikibot.NoPage:
  100.             pywikibot.output(u"Page %s does not exist; skipping."
  101.                              % page.aslink())
  102.         except pywikibot.IsRedirectPage:
  103.             pywikibot.output(u"Page %s is a redirect; skipping."
  104.                              % page.aslink())
  105.         else:
  106.             return text
  107.         return None
  108.  
  109.     def save(self, text, page, comment, minorEdit=True, botflag=True):
  110.         if text != page.get():
  111.             pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"
  112.                              % page.title())
  113.             pywikibot.showDiff(page.get(), text)
  114.             pywikibot.output(u'Comment: %s' %comment)
  115.             if not self.dry:
  116.                 choice = pywikibot.inputChoice(
  117.                     u'Do you want to accept these changes?',
  118.                     ['Yes', 'No'], ['y', 'N'], 'N')
  119.                 if choice == 'y':
  120.                     try:
  121.                         page.put(text, comment=comment,
  122.                                  minorEdit=minorEdit, botflag=botflag)
  123.                     except pywikibot.LockedPage:
  124.                         pywikibot.output(u"Page %s is locked; skipping."
  125.                                          % page.aslink())
  126.                     except pywikibot.EditConflict:
  127.                         pywikibot.output(
  128.                             u'Skipping %s because of edit conflict'
  129.                             % (page.title()))
  130.                     except pywikibot.SpamfilterError, error:
  131.                         pywikibot.output(
  132. u'Cannot change %s because of spam blacklist entry %s'
  133.                             % (page.title(), error.url))
  134.                     else:
  135.                         return True
  136.         return False
  137.  
  138. def main():
  139.     genFactory = pagegenerators.GeneratorFactory()
  140.     gen = None
  141.     pageTitleParts = []
  142.     dry = False
  143.  
  144.     for arg in pywikibot.handleArgs():
  145.         if arg.startswith("-dry"):
  146.             dry = True
  147.         else:
  148.             if not genFactory.handleArg(arg):
  149.                 pageTitleParts.append(arg)
  150.  
  151.     if pageTitleParts != []:
  152.         pageTitle = ' '.join(pageTitleParts)
  153.         page = pywikibot.Page(pywikibot.getSite(), pageTitle)
  154.         gen = iter([page])
  155.  
  156.     if not gen:
  157.         gen = genFactory.getCombinedGenerator()
  158.     if gen:
  159.         gen = pagegenerators.PreloadingGenerator(gen)
  160.         bot = BasicBot(gen, dry)
  161.         bot.run()
  162.     else:
  163.         pywikibot.showHelp()
  164.  
  165. if __name__ == "__main__":
  166.     try:
  167.         main()
  168.     finally:
  169.         pywikibot.stopme()
  170.  
  171.  
  172. page = pywikibot.Page(pywikibot.getSite(), str(raw_input("\nDove vuoi salvare?\n")))
  173. page.put(testodamettere, "Bot: genero lista", 1, 1)
Add Comment
Please, Sign In to add comment