Szerkesztő:DhanakBot/catremove.py
Megjelenés
#!/usr/bin/python # -*- coding: utf-8 -*- """ Ez a bot egy kategóriát szed ki bizonyos lapokból. A következő argumentumokat ismeri: -cat:kategória az adott kategória szócikkeit járja be -links:lapnév minden lapot bejár, ami a lapnév lapról hivatkozva van -file:textfájl a textfájlban hivatkozott lapokat járja be (csak a [[lapnév]] fomájú hivatkozásokat tekinti) Minden más paraméter a kiszedendő kategória címeként értelmeződik. """ import sys, re import wikipedia, pagegenerators, catlib class CategoryRemovalBot: def __init__(self, generator, removeCategory): self.generator = generator self.removeCategory = removeCategory def run(self): answer = '' for page in self.generator: try: text = page.get() except wikipedia.NoPage: wikipedia.output(u'HIBA: Nem találom a %s lapot' % page.title()) continue except wikipedia.IsRedirectPage: continue categories = page.categories() for cat in categories: if cat.title() == u"Kategória:" + self.removeCategory: categories.remove(cat) text = wikipedia.replaceCategoryLinks(text, categories) break else: wikipedia.output(u"A %s kategória nem található a %s lapon!" % (self.removeCategory, page.title())) continue if text != page.get(): wikipedia.output(u"\n>>> %s <<<" % page.title()) wikipedia.showDiff(page.get(), text) if answer != 'm': answer = wikipedia.input(u"Módosítsam a %s lapot [(i)gen/(N)em/(m)ind]?" % page.title()) if answer == 'i' or answer == 'm': page.put(text, u"Bot: %s kategória eltávolítása" % self.removeCategory) def main(): gen = None removeCat = [] for arg in sys.argv[1:]: arg = wikipedia.argHandler(arg, 'catremove') if arg: if arg.startswith('-cat:'): cat = catlib.Category(wikipedia.getSite(), u"Kategória:" + arg[5:]) gen = pagegenerators.CategorizedPageGenerator(cat) elif arg.startswith('-links:'): page = wikipedia.Page(wikipedia.getSite(), arg[7:]) gen = pagegenerators.LinkedPageGenerator(page) elif arg.startswith('-file:'): gen = pagegenerators.TextfilePageGenerator(arg[6:]) else: removeCat.append(arg) if not removeCat or not gen: wikipedia.showHelp('catremove') else: gen = pagegenerators.PreloadingGenerator(gen) CategoryRemovalBot(gen, ' '.join(removeCat)).run() if __name__ == "__main__": try: main() finally: wikipedia.stopme()