summaryrefslogtreecommitdiff
path: root/backup-tc.py
blob: 3e57340067c2c3734b0eb6a6c6c5646d07953b1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import json, os, sys
import requests

url = sys.argv[1]
output_dir = sys.argv[2]

settings = json.load(open(os.path.join(output_dir, 'settings.json')))

files_to_download = set()

for board in settings['BoardsScoringGroups']:
    for group in board['Value']:
        for prefix in ['d', 'sg']:
            files_to_download.add('%s%d-%d.json' % (prefix, board['Key'], group))
        files_to_download.add('p%d.html' % (board['Key']))

round_jsons = set()

for round_number in settings['RoundsNumbers']:
    round_results = 'o%d-%d.json' % (
        round_number / 1000, round_number % 1000)
    files_to_download.add(round_results)
    round_jsons.add(round_results)
    for participant in settings['ParticipantNumers']:
        files_to_download.add('h%d.json' % (participant))

def fetch_file(url, output_dir, remote_file):
    file_url = requests.compat.urljoin(url + '/', remote_file)
    try:
        with open(os.path.join(output_dir, remote_file), 'w') as output_file:
            r = requests.get(file_url)
            r.raise_for_status()
            output_file.write(r.content)
            print(file_url)
    except Exception as e:
        print 'WARNING: %s' % (e)

for remote_file in files_to_download:
    fetch_file(url, output_dir, remote_file)

files_to_download = set()

for round_json in round_jsons:
    round_data = json.load(open(os.path.join(output_dir, round_json)))
    for r in round_data['Results']:
        for s in r['Segments']:
            files_to_download.add('s%s-%d-%d-%d.json' % (
                r['TableFull'],
                round_data['Session'], round_data['Round'], s['Segment']
            ))

for remote_file in files_to_download:
    fetch_file(url, output_dir, remote_file)