#!/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()