Utente:BimBot/Scripts
Copiate gente, copiate! (Che poi va a fuoco il computer...) :-D
sistemaredirect.py v. 3.0
# -*- coding: utf-8 -*- ################################################################ # Questo bot permette di modificare i link ad un redirect # # perche' puntino direttamente alla pagina giusta. # # Usa il framework pywikipedia. # ################################################################ import urllib, re import wikipedia def main(): args = wikipedia.handleArgs() while 1: redirectLinks = dict() all = 0; ic = inputchoice() if ic == u'.': break if ic == u'P': name = wikipedia.input(u'Inserisci il nome della pagina da cui ricavare i redirect [punto per terminare]:') if name == u'.': break page = wikipedia.Page(wikipedia.getSite(), name) redirectLinks = getlinkstoredirectstopage(page) else: name = wikipedia.input(u'Inserisci il nome del redirect [punto per terminare]:') if name == u'.': break page = wikipedia.Page(wikipedia.getSite(), name) redirectLinks[page.title()] = page.getReferences() for i in redirectLinks: print i page = wikipedia.Page(wikipedia.getSite(), i) dest = page.getRedirectTarget() ref = redirectLinks[i] for j in ref: oldtext = j.get() print j lnks = sgamalink(i, oldtext) for k in lnks: if u'|' in k: regex = u"\[\[%s\|(.*?)\]\]" % i p = re.compile(regex, re.IGNORECASE) lst = re.findall(p, oldtext) choice = u"[[" + dest.title() + u"|" + lst[0] + u"]]" else: choice = linkchoice(dest.title(), i) if choice == u'.': exit() newtext = sistema(oldtext, page.title(), choice) wikipedia.showDiff(oldtext, newtext) choice = wikipedia.inputChoice(u'Posso procedere?', ['Yes', 'No'], ['y', 'N'], 'N') if choice in ['Y', 'y']: wikipedia.setAction(u'Correggo i link che puntano al redirect "%s"' % page.title()) j.put(newtext) wikipedia.stopme(); def getlinkstoredirectstopage(page): try: redirectLinks = dict() ref = page.getReferences() redirectList=list() for i in ref: if i.isRedirectPage(): redirectLinks[i.title()] = i.getReferences() return redirectLinks; except wikipedia.IsNotRedirectPage: print page.isRedirectPage() print u"Non e' un redirect!" return 0 except wikipedia.NoPage: print u'La pagina non esiste!' return 0 def inputchoice(): choice = wikipedia.inputChoice(u"Vuoi inserire il nome di un redirect o di una pagina a cui linkano dei redirect? [punto per terminare]", [u'Redirect', u'Page', u'.'], [u'R', u'p', u'.'], u'R') if choice == u'.': return u'.' elif choice in [u'P', u'p']: return u'P' else: return u'R' def linkchoice(newpage, oldpage): scelte = [u"[[" + newpage + u"]]", u"[[" + newpage + u"|" + newpage[0].lower() + newpage[1:] + u"]]", u"[[" + newpage + u"|" + oldpage + u"]]", u"[[" + newpage + u"|" + oldpage[0].lower() + oldpage[1:] + u"]]", u'.'] sceltecopy = scelte choice = wikipedia.inputChoice(u"Scegli una delle seguenti alternative per il link: [punto per terminare]", sceltecopy, [u'1', u'2', u'3', u'4', u'.'], u'1') if choice == u'.': return u'.' return scelte[int(choice)-1][:len(scelte[int(choice)-1])-4] def sgamalink(oldtitle, oldtext): regex = u"\[\[%s(.*?)\]\]" % oldtitle p = re.compile(regex, re.IGNORECASE) lst = re.findall(p, oldtext) return lst def sistema(text, oldtitle, choice): regex = u"\[\[%s.*?\]\]" % oldtitle p = re.compile(regex, re.IGNORECASE) text = re.sub(p, text, choice) return text if __name__==u"__main__": main()