def main(*args): wikipedia_site = pywikibot.Site() # Use the site configured in params/user-config commons_site = pywikibot.Site("commons", "commons") checker = TemplateChecker() checker.load_config("config/templates.json") commons_bot = CommonsBot(wikipedia_site, checker) callbacks = ArticleIteratorCallbacks( logging_callback=pywikibot.log, article_callback=commons_bot.cb_check_article ) article_iterator = ArticleIterator(callbacks) article_iterator.log_every_n = 1 parser = ArticleIteratorArgumentParser(article_iterator, None) run_cmd = commons_bot.run_continuously category_name = u"Images from Wiki Loves Monuments 2015 in Germany" start_time = first_day_of_month() for argument in pywikibot.handle_args(args): if argument.find("-category:") == 0: category_name = argument[10:] continue elif parser.check_argument(argument): continue elif argument.find("-start-at:") == 0: start_time_iso = argument[10:] + "T0:00:00Z" start_time = pywikibot.Timestamp.fromISOformat(start_time_iso) elif argument.find("-sleep-seconds:") == 0 and int(argument[15:]) > 0: commons_bot.sleep_seconds = int(argument[15:]) elif argument == "-once": run_cmd = commons_bot.run_once elif argument == "-local-media": commons_site = wikipedia_site category = pywikibot.Category(commons_site, category_name) run_cmd(article_iterator, start_time, category)
def test_article_iterator_logs_every_n_articles(self): log_callback = Mock() callbacks = ArticleIteratorCallbacks(logging_callback=log_callback) iterator = ArticleIterator(callbacks) iterator.log_every_n = 1 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.iterate_categories() log_callback.assert_any_call(u"Fetching page 0 (Foo)") log_callback.assert_any_call(u"Fetching page 1 (Bar)")