Python:Edpdelinker.py

From Botwiki

Jump to: navigation, search
#!/usr/bin/python
# -*- coding: utf-8  -*-
"""
Program to delink EDP image for User namespace, written by Filnik
"""
 
import wikipedia
 
def main():
    site = wikipedia.getSite()
    pagina = wikipedia.Page(site, 'Template:EDP')
    acceptall = False
    for image in pagina.getReferences(False, True, True):
        if not 'Immagine:' in image.title():
            wikipedia.output(u'%s is not an image...' % image.title())
            continue
        else:
            wikipedia.output(u'Fixing %s...' % image.title())
            realimage = image.title().split('Immagine:')[-1].replace(' ', '_')
            for paginaref in image.getReferences():
                pagename = paginaref.title()
                wikipedia.output(u'Fixing %s...' % pagename)
                if 'utente:alfiobot' in pagename.lower():
                    wikipedia.output(u'AlfioBot report, skip!')
                    continue
                if 'utente' in pagename.lower():
                    try:
                        oldtext = paginaref.get()
                    except wikipedia.NoPage:
                        wikipedia.output(u"%s doesn't exist, skip." % pagename)
                        continue
                    except wikipedia.IsRedirectPage:
                        wikipedia.output(u"%s รจ un redirect! Skip." % pagename)
                        continue
                    new_text = paginaref.removeImage(realimage, False)
                    fixed = False
                    if '[[:]]' in new_text:
                        new_text = re.sub('\[\[:\]\]', '[[:%s]]' % image.title(), new_text)
                        fixed = True
                    if oldtext == new_text:
                        continue
                    wikipedia.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % pagename)
                    wikipedia.showDiff(oldtext, new_text)
                    if not acceptall:
                        choice = wikipedia.inputChoice(u'Do you want to accept these changes?', ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
                        if choice in ['a', 'A']:
                           acceptall = True
                    if acceptall or choice in ['y', 'Y']:
                        try:
                            paginaref.put(new_text, 'Bot: Tolgo immagine EDP dal namespace utente')
                        except wikipedia.EditConflict:
                            wikipedia.output(u'Skipping %s because of edit conflict' % (page.title(),))
                        except wikipedia.SpamfilterError, e:
                            wikipedia.output(u'Cannot change %s because of blacklist entry %s' % (page.title(), e.url))
                        except wikipedia.LockedPage:
                            wikipedia.output(u'Skipping %s (locked page)' % (page.title(),))
                else:
                    continue
if __name__ == "__main__":
    try:
        main()
    finally:
        wikipedia.stopme()
Personal tools