def setup(self): """Refresh generator.""" generator = pagegenerators.CategorizedPageGenerator( self.csd_cat, start=self.saved_progress) # wrap another generator around it so that we won't produce orphaned # talk pages. generator = pagegenerators.PageWithTalkPageGenerator(generator) self.generator = pagegenerators.PreloadingGenerator(generator, groupsize=20) self.saved_progress = None
def setup(self): """Read text to be added from file.""" if self.opt.textfile: with codecs.open(self.opt.textfile, 'r', config.textfile_encoding) as f: self.opt.text = f.read() else: # Translating the \\n into binary \n if given from command line self.opt.text = self.opt.text.replace('\\n', '\n') if self.opt.talk_page: self.generator = pagegenerators.PageWithTalkPageGenerator( self.generator, return_talk_only=True)
def main(*args): """ Process command line arguments and invoke bot. @param args: command line arguments @type args: list of unicode """ options = { 'subject_only': False, 'talk_only': False, 'to_subject': False, 'to_talk': False, } # Process global arguments local_args = pywikibot.handle_args(args) site = pywikibot.Site() site.login() # Parse command line arguments gen_factory = pagegenerators.GeneratorFactory(site) for arg in local_args: if gen_factory.handleArg(arg): continue arg, _, value = arg.partition(':') arg = arg[1:] if arg == 'editnotice_template': if not value: value = pywikibot.input( 'Please enter a value for {}'.format(arg), default=None) options[arg] = value else: options[arg] = True if not validate_options(options, site): pywikibot.error('Invalid options.') return False gen = gen_factory.getCombinedGenerator() if options['to_subject']: gen = page_with_subject_page_generator( gen, return_subject_only=options['subject_only']) elif options['to_talk']: gen = pagegenerators.PageWithTalkPageGenerator( gen, return_talk_only=options['talk_only']) elif options['subject_only']: gen = subject_page_generator(gen) elif options['talk_only']: gen = talk_page_generator(gen) gen = editnotice_page_generator(gen) for key in ('subject_only', 'talk_only', 'to_subject', 'to_talk'): options.pop(key, None) gen = pagegenerators.PreloadingGenerator(gen) EditnoticeDeployer(gen, site=site, **options).run() return True
def main(*args): """ Process command line arguments and invoke bot. If args is an empty list, sys.argv is used. @param args: command line arguments @type args: list of unicode """ # If none, the var is setted only for check purpose. summary = None addText = None regexSkip = None regexSkipUrl = None always = False textfile = None talkPage = False reorderEnabled = True # Put the text above or below the text? up = False # Process global args and prepare generator args parser local_args = pywikibot.handle_args(args) genFactory = pagegenerators.GeneratorFactory() # Loading the arguments for arg in local_args: if arg.startswith('-textfile'): if len(arg) == 9: textfile = pywikibot.input( u'Which textfile do you want to add?') else: textfile = arg[10:] elif arg.startswith('-text'): if len(arg) == 5: addText = pywikibot.input(u'What text do you want to add?') else: addText = arg[6:] elif arg.startswith('-summary'): if len(arg) == 8: summary = pywikibot.input(u'What summary do you want to use?') else: summary = arg[9:] elif arg.startswith('-excepturl'): if len(arg) == 10: regexSkipUrl = pywikibot.input(u'What text should I skip?') else: regexSkipUrl = arg[11:] elif arg.startswith('-except'): if len(arg) == 7: regexSkip = pywikibot.input(u'What text should I skip?') else: regexSkip = arg[8:] elif arg == '-up': up = True elif arg == '-noreorder': reorderEnabled = False elif arg == '-always': always = True elif arg == '-talk' or arg == '-talkpage': talkPage = True else: genFactory.handleArg(arg) if textfile and not addText: with codecs.open(textfile, 'r', config.textfile_encoding) as f: addText = f.read() generator = genFactory.getCombinedGenerator() if not generator: pywikibot.bot.suggest_help(missing_generator=True) return False if not addText: pywikibot.error("The text to add wasn't given.") return if talkPage: generator = pagegenerators.PageWithTalkPageGenerator(generator, True) for page in generator: (text, newtext, always) = add_text(page, addText, summary, regexSkip, regexSkipUrl, always, up, True, reorderEnabled=reorderEnabled, create=talkPage)
def main(*args: Tuple[str, ...]) -> None: """ Process command line arguments and invoke bot. If args is an empty list, sys.argv is used. @param args: command line arguments """ # If none, the var is set only for check purpose. summary = None addText = None regexSkipUrl = None always = False textfile = None talkPage = False reorderEnabled = True # Put the text above or below the text? up = False # Process global args and prepare generator args parser local_args = pywikibot.handle_args(args) genFactory = pagegenerators.GeneratorFactory() # Loading the arguments for arg in local_args: option, sep, value = arg.partition(':') if option == '-textfile': textfile = value or pywikibot.input( 'Which textfile do you want to add?') elif option == '-text': addText = value or pywikibot.input('What text do you want to add?') elif option == '-summary': summary = value or pywikibot.input( 'What summary do you want to use?') elif option == '-excepturl': regexSkipUrl = value or pywikibot.input('What text should I skip?') elif option == '-except': new_arg = ''.join(['-grepnot', sep, value]) issue_deprecation_warning(arg, new_arg, 2, ArgumentDeprecationWarning, since='20201224') genFactory.handle_arg(new_arg) elif option == '-up': up = True elif option == '-noreorder': reorderEnabled = False elif option == '-always': always = True elif option in ('-talk', '-talkpage'): talkPage = True else: genFactory.handle_arg(arg) if textfile and not addText: with codecs.open(textfile, 'r', config.textfile_encoding) as f: addText = f.read() generator = genFactory.getCombinedGenerator() additional_text = '' if addText else "The text to add wasn't given." if pywikibot.bot.suggest_help(missing_generator=not generator, additional_text=additional_text): return if talkPage: generator = pagegenerators.PageWithTalkPageGenerator(generator, True) for page in generator: (_, newtext, _) = add_text(page, addText, summary, regexSkipUrl=regexSkipUrl, always=always, up=up, reorderEnabled=reorderEnabled, create=talkPage)
def main(): # If none, the var is setted only for check purpose. summary = None addText = None regexSkip = None regexSkipUrl = None generator = None always = False textfile = None talkPage = False reorderEnabled = True namespaces = [] # Put the text above or below the text? up = False # Process global args and prepare generator args parser local_args = pywikibot.handleArgs() genFactory = pagegenerators.GeneratorFactory() # Loading the arguments for arg in local_args: if arg.startswith('-textfile'): if len(arg) == 9: textfile = pywikibot.input( u'Which textfile do you want to add?') else: textfile = arg[10:] elif arg.startswith('-text'): if len(arg) == 5: addText = pywikibot.input(u'What text do you want to add?') else: addText = arg[6:] elif arg.startswith('-summary'): if len(arg) == 8: summary = pywikibot.input(u'What summary do you want to use?') else: summary = arg[9:] elif arg.startswith('-page'): if len(arg) == 5: generator = [ pywikibot.Page( pywikibot.Site(), pywikibot.input(u'What page do you want to use?')) ] else: generator = [pywikibot.Page(pywikibot.Site(), arg[6:])] elif arg.startswith('-excepturl'): if len(arg) == 10: regexSkipUrl = pywikibot.input(u'What text should I skip?') else: regexSkipUrl = arg[11:] elif arg.startswith('-except'): if len(arg) == 7: regexSkip = pywikibot.input(u'What text should I skip?') else: regexSkip = arg[8:] elif arg == '-up': up = True elif arg == '-noreorder': reorderEnabled = False elif arg == '-always': always = True elif arg == '-talk' or arg == '-talkpage': talkPage = True else: genFactory.handleArg(arg) if textfile and not addText: f = codecs.open(textfile, 'r', config.textfile_encoding) addText = f.read() f.close() if not generator: generator = genFactory.getCombinedGenerator() if not generator: raise NoEnoughData( 'You have to specify the generator you want to use for the script!' ) if talkPage: generator = pagegenerators.PageWithTalkPageGenerator(generator) site = pywikibot.Site() for namespace in site.namespaces(): index = site.getNamespaceIndex(namespace) if index % 2 == 1 and index > 0: namespaces += [index] generator = pagegenerators.NamespaceFilterPageGenerator( generator, namespaces) for page in generator: (text, newtext, always) = add_text(page, addText, summary, regexSkip, regexSkipUrl, always, up, True, reorderEnabled=reorderEnabled, create=talkPage)