You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.1 KiB
Python

from datetime import datetime
import json
import crawers
def get_crawer(ojname: str):
if not hasattr(get_crawer, "list"):
get_crawer.list = {
"vjudge": crawers.vjudge_crawer
}
return get_crawer.list[ojname]
def load_users():
with open("users.json") as f:
users_raw = json.load(f)
return users_raw['users']
def save_users(users):
with open("result.json", "w") as f:
json.dump({"version": int(datetime.now().timestamp() * 1000), "users": users}, f)
def merge_result(results: list):
solved = {}
for result in results:
for oj in result:
if oj not in solved:
solved[oj] = set()
solved[oj] = solved[oj].union(result[oj])
ret = {}
for oj in solved:
ret[oj.lower()] = list(solved[oj])
return ret
def __main__():
users = load_users()
for user in users:
print(user['uid'], user['name'], ':')
user['result'] = merge_result([get_crawer(rec['oj'])(rec['id']) for rec in user['ids']])
save_users(users)
if __name__ == '__main__':
__main__()