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: str """ # Process global args and prepare generator args parser local_args = pywikibot.handle_args(args) gen_factory = GeneratorFactory() bot_args = {} for arg in local_args: if arg == '-always': bot_args['always'] = True else: gen_factory.handle_arg(arg) gen = gen_factory.getCombinedGenerator(preload=True) if not gen: pywikibot.bot.suggest_help(missing_generator=True) return bot = SelflinkBot(gen, **bot_args) bot.run()
def main(*args): options = {} local_args = pywikibot.handle_args(args) site = pywikibot.Site() genFactory = GeneratorFactory(site=site) for arg in local_args: if genFactory.handle_arg(arg): continue if arg.startswith('-'): arg, sep, value = arg.partition(':') if value != '': options[arg[1:]] = value if not value.isdigit() else int(value) else: options[arg[1:]] = True generator = genFactory.getCombinedGenerator() if not generator: generator = page_with_property_generator('displaytitle', site=site) if genFactory.namespaces: generator = NamespaceFilterPageGenerator(generator, genFactory.namespaces, site=site) bot = LabelSettingBot(generator=generator, site=site, **options) bot.run()
def main(*args): options = {} local_args = pywikibot.handle_args(args) site = pywikibot.Site() genFactory = GeneratorFactory(site=site) for arg in local_args: if genFactory.handle_arg(arg): continue if arg.startswith('-'): arg, sep, value = arg.partition(':') if value != '': options[arg[1:]] = value if not value.isdigit() else int(value) else: options[arg[1:]] = True generator = genFactory.getCombinedGenerator() bot = WikidataRedirectsFixingBot(generator=generator, site=site, **options) bot.run()
def main(*args): options = {} local_args = pywikibot.handle_args(args) site = pywikibot.Site() genFactory = GeneratorFactory(site=site) for arg in local_args: if genFactory.handle_arg(arg): continue if arg.startswith('-'): arg, sep, value = arg.partition(':') if value != '': options[arg[1:]] = int(value) if value.isdigit() else value else: options[arg[1:]] = True generator = genFactory.getCombinedGenerator(preload=True) if generator: bot = MappingDescriptionBot(generator=generator, site=site, **options) else: bot = MissingDescriptionBot(site=site, **options) bot.run()
def main(*args): options = {} local_args = pywikibot.handle_args(args) site = pywikibot.Site() genFactory = GeneratorFactory(site=site) for arg in local_args: if genFactory.handle_arg(arg): continue if arg.startswith('-'): arg, sep, value = arg.partition(':') if arg == '-prop': options.setdefault('props', []).append( value or pywikibot.input('Which property should be treated?')) elif value: options[arg[1:]] = int(value) if value.isdigit() else value else: options[arg[1:]] = True generator = genFactory.getCombinedGenerator() bot = DuplicateDatesBot(generator=generator, site=site, **options) bot.run()
def main(*args: str) -> None: """ Process command line arguments and invoke bot. If args is an empty list, sys.argv is used. :param args: command line arguments """ notitle = False fmt = '1' outputlang = None page_get = False base_dir = None encoding = config.textfile_encoding page_target = None overwrite = False summary = 'listpages-save-list' # Process global args and prepare generator args parser local_args = pywikibot.handle_args(args) gen_factory = GeneratorFactory() for arg in local_args: option, sep, value = arg.partition(':') if option == '-notitle': notitle = True elif option == '-format': fmt = value.replace('\\03{{', '\03{{') if not fmt.strip(): notitle = True elif option == '-outputlang': outputlang = value elif option == '-get': page_get = True elif option == '-save': base_dir = value or '.' elif option == '-encode': encoding = value elif option == '-put': page_target = value elif option == '-overwrite': overwrite = True elif option == '-summary': summary = value else: gen_factory.handle_arg(arg) if base_dir: base_dir = os.path.expanduser(base_dir) if not os.path.isabs(base_dir): base_dir = os.path.normpath(os.path.join(os.getcwd(), base_dir)) if not os.path.exists(base_dir): pywikibot.output('Directory "{}" does not exist.'.format(base_dir)) choice = pywikibot.input_yn( 'Do you want to create it ("No" to continue without saving)?') if choice: os.makedirs(base_dir, mode=0o744) else: base_dir = None elif not os.path.isdir(base_dir): # base_dir is a file. pywikibot.warning('Not a directory: "{}"\n' 'Skipping saving ...'.format(base_dir)) base_dir = None if page_target: site = pywikibot.Site() page_target = pywikibot.Page(site, page_target) if not overwrite and page_target.exists(): pywikibot.bot.suggest_help( additional_text='Page {} already exists.\n' 'You can use the -overwrite argument to ' 'replace the content of this page.'.format( page_target.title(as_link=True))) return if re.match('[a-z_-]+$', summary): summary = i18n.twtranslate(site, summary) gen = gen_factory.getCombinedGenerator() if gen: i = 0 output_list = [] for i, page in enumerate(gen, start=1): if not notitle: page_fmt = Formatter(page, outputlang) output_list += [page_fmt.output(num=i, fmt=fmt)] if page_get: if output_list: pywikibot.stdout(output_list.pop(-1)) try: pywikibot.stdout(page.text) except Error as err: pywikibot.output(err) if base_dir: filename = os.path.join(base_dir, page.title(as_filename=True)) pywikibot.output('Saving {} to {}'.format( page.title(), filename)) with open(filename, mode='wb') as f: f.write(page.text.encode(encoding)) text = '\n'.join(output_list) if page_target: page_target.text = text page_target.save(summary=summary) pywikibot.stdout(text) pywikibot.output('{} page(s) found'.format(i)) else: pywikibot.bot.suggest_help(missing_generator=True)