#!/usr/bin/python # -*- coding: utf-8 -*- # # Published by zhuyifei1999 (https://wikitech.wikimedia.org/wiki/User:Zhuyifei1999) # under the terms of Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) # https://creativecommons.org/licenses/by-sa/3.0/ import os import re import time #import Queue import threading import pywikibot import addbot #import grid from RedisQueue import RedisQueue import redisconfig def main(): pywikibot.handle_args() config = addbot.Config() queue = RedisQueue(redisconfig.KEY, host="tools-redis") metawiki = pywikibot.Site("meta", "meta") req = pywikibot.data.api.Request( site=metawiki, action='query', list='wikisets', wsfrom="Global bot wikis", wsprop='wikisincluded', wslimit=1) data = req.submit() assert data["query"]["wikisets"][0]["id"] == "2" wikis = data["query"]["wikisets"][0]["wikisincluded"] wikis = set([metawiki.fromDBName(wiki) for wiki in wikis]) for wiki in list(wikis)[:]: if wiki.family.name in config.optoutfamilies: wikis.discard(wiki) for wiki in config.approved: if isinstance(wiki, metawiki.__class__): wikis.add(wiki) for wiki in config.optout: if isinstance(wiki, metawiki.__class__): wikis.discard(wiki) for wiki in config.usecrontab: if isinstance(wiki, metawiki.__class__): wikis.discard(wiki) for wiki in sorted(wikis): if wiki.has_data_repository and not wiki.obsolete: pywikibot.output("Enqueueing " + wiki.dbName()) queue.put(wiki.dbName()) # for i in range(5): # t = BotThread(queue, i) # t.setDaemon(True) # t.start() # queue.join() # pywikibot.log("Main thread exit") # time.sleep(10) if __name__ == "__main__": try: main() finally: pywikibot.stopme()