def main(*args): site = pywikibot.Site() fetcher = CategoryFetcher(site) checker = TemplateChecker() checker.load_config("config/templates.json") checker_bot = CheckerBot(checker, site) all_categories = fetcher.get_categories() callbacks = ArticleIteratorCallbacks( category_callback=checker_bot.cb_store_category_result, article_callback=checker_bot.cb_check_article, logging_callback=pywikibot.log, ) article_iterator = ArticleIterator(callbacks, categories=all_categories) parser = ArticleIteratorArgumentParser(article_iterator, fetcher) for argument in pywikibot.handle_args(list(args)): if parser.check_argument(argument): continue elif argument.find("-outputpage:") == 0: checker_bot.outputpage = argument[12:] elif argument.find("-exclude-articles:") == 0: page = pywikibot.Page(site, argument[18:]) article_iterator.excluded_articles = load_excluded_articles_from_wiki(page) article_iterator.iterate_categories() if article_iterator.categories != all_categories: # Don't update summary page if only single categories were crawled return summary = checker_bot.generate_summary_page() if checker_bot.outputpage: checker_bot.save_wikipage(summary, checker_bot.outputpage + u"/Zusammenfassung") else: pywikibot.output(u"Zusammenfassung") pywikibot.output(u"===============") pywikibot.output(summary) pywikibot.output(checker_bot.generate_config_table())
def test_excluded_articles_are_skipped(self): article_callback = Mock() callbacks = ArticleIteratorCallbacks(article_callback=article_callback) iterator = ArticleIterator(callbacks) article1 = Mock() article2 = Mock() article1.title.return_value = "Foo" article2.title.return_value = "Bar" category = Mock() category.articles.return_value = [article1, article2] iterator.categories = [category] iterator.excluded_articles = ["Foo"] iterator.iterate_categories() article_callback.assert_called_once_with(article=article2, category=category, counter=0, article_iterator=iterator)