예제 #1
0
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)")