Utente:TekBot/sysredir.py

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
# -*- coding: utf-8  -*-

################################################################
# Questo bot permette di modificare i link ad un redirect      #
# perche' puntino direttamente alla pagina giusta.             #
# Usa il framework pywikipedia.                                #
# Thanks to Civvi                                              #
################################################################

import urllib, re
import wikipedia

def main():
 while 1:
  all = 0;
  name = wikipedia.input(u'Inserisci il nome del redirect [punto per terminare]:')
  if name == '.':
   break
  page = wikipedia.Page(wikipedia.getSite(), name)
  try:
   page.isRedirectPage
   dest = wikipedia.Page(wikipedia.getSite(), page.getRedirectTarget())
   print dest
   ref = page.getReferences()
   for s in ref:
    oldtext = s.get()
    print s
    newtext = sistema(oldtext, page.title(), dest.title())
    wikipedia.showDiff(oldtext, newtext)
    if not all:
     choice = wikipedia.inputChoice(u'Vuoi veramente modificare?',  ['Yes', 'No', 'all'], ['y', 'N', 'a'], 'N')
     if choice in ['A', 'a']:
      all = 1
      choice = 'Y'
    if choice in ['Y', 'y'] or all:
     wikipedia.setAction(u'Correggo i link che puntano al redirect "%s"' % page.title())
     s.put(newtext)
  except wikipedia.IsNotRedirectPage:
    print page.isRedirectPage()
    print u"Non e' un redirect!"
    continue
  except wikipedia.NoPage:
   print u'La pagina non esiste!'
 wikipedia.stopme();

def sistema(text, oldtitle, newtitle):
 regex = u'\[\[%s' % oldtitle
 p = re.compile(regex, re.IGNORECASE)
 nuovotesto = "[[%s" % newtitle
 new = re.sub(p, nuovotesto, text)
 return new

if __name__=="__main__":
    main()