|
|
@ -49,16 +49,67 @@ class DiscussionParserBot( |
|
|
|
onlyinclude_re = re.compile( |
|
|
|
jogobot.config["redundances"]["reddiscs_onlyinclude_re"] ) |
|
|
|
|
|
|
|
def __init__( self, generator ): |
|
|
|
def __init__( self, genFactory, **kwargs ): |
|
|
|
""" |
|
|
|
Constructor |
|
|
|
|
|
|
|
Parameters: |
|
|
|
@param generator: The page generator that determines on which pages |
|
|
|
to work. |
|
|
|
@type generator: generator. |
|
|
|
@param genFactory GenFactory with parsed pagegenerator args to |
|
|
|
build generator |
|
|
|
@type genFactory pagegenerators.GeneratorFactory |
|
|
|
@param **kwargs Additional args |
|
|
|
@type iterable |
|
|
|
""" |
|
|
|
super( DiscussionParserBot, self ).__init__(generator=generator) |
|
|
|
|
|
|
|
# Copy needed args |
|
|
|
self.genFactory = genFactory |
|
|
|
|
|
|
|
# Build generator with genFactory |
|
|
|
self.build_generator() |
|
|
|
|
|
|
|
# Run super class init with builded generator |
|
|
|
super( DiscussionParserBot, self ).__init__(generator=self.gen) |
|
|
|
|
|
|
|
def build_generator(self): |
|
|
|
""" |
|
|
|
Builds generator to work on, based on self.genFactory |
|
|
|
""" |
|
|
|
# Check wether there are generators waiting for factoring, if not |
|
|
|
# use configured categories |
|
|
|
if not self.genFactory.gens: |
|
|
|
self.apply_conf_cat_generators() |
|
|
|
|
|
|
|
# Create combined Generator (Union of all Generators) |
|
|
|
gen = self.genFactory.getCombinedGenerator() |
|
|
|
|
|
|
|
if gen: |
|
|
|
# The preloading generator is responsible for downloading multiple |
|
|
|
# pages from the wiki simultaneously. |
|
|
|
self.gen = pagegenerators.PreloadingGenerator(gen) |
|
|
|
|
|
|
|
else: |
|
|
|
pywikibot.showHelp() |
|
|
|
|
|
|
|
def apply_conf_cat_generators( self ): |
|
|
|
""" |
|
|
|
Builds generators for categories which are read from jogobot.config |
|
|
|
|
|
|
|
Parameters: |
|
|
|
@param genFactory: The GeneratorFactory to which the builded |
|
|
|
generators should be added. |
|
|
|
@type genFactory: pagegenerators.GeneratorFactory |
|
|
|
""" |
|
|
|
# Create Generators for configured Categories |
|
|
|
for category in jogobot.config["redundances"]["redpage_cats"]: |
|
|
|
gen = self.genFactory.getCategoryGen( |
|
|
|
category, gen_func=pagegenerators.CategorizedPageGenerator) |
|
|
|
|
|
|
|
# If there is one, append to genFactory |
|
|
|
if gen: |
|
|
|
self.genFactory.gens.append(gen) |
|
|
|
|
|
|
|
# Reset gen for next iteration |
|
|
|
gen = None |
|
|
|
|
|
|
|
def run( self ): |
|
|
|
""" |
|
|
|