-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhl-nominations.py
147 lines (117 loc) · 4.34 KB
/
hl-nominations.py
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import argparse
import json
import sys
def main():
parser = argparse.ArgumentParser()
parser.add_argument('file')
args = parser.parse_args()
nominations_list = read_nominations_file(args.file)
teams = create_team_objects(nominations_list)
divisions = sort_teams(teams)
for name, teams in divisions.items():
create_division_report(name, teams)
def read_nominations_file(filename):
with open(filename, 'r', encoding='utf-8') as nominations_file:
nominations_list = nominations_file.readlines()
nominations_list = [line.strip()
for line in nominations_list
if line != '\n' and line != '']
return nominations_list
def create_team_objects(nominations_list):
current_team = ''
teams = {}
for line in nominations_list:
heading, data = line.split(':', 1)
heading = heading.strip()
data = data.strip()
if 'twitchtv' in data:
data = data.split("twitchtv")[1]
if 'ITUP123' in data:
data = data.split("ITUP123")[0]
if 'Team Name' in heading:
current_team = data
teams[current_team] = {}
elif 'Division' in heading:
if 'prem' in data.lower():
teams[current_team]['division'] = 'premier'
if 'inter' in data.lower():
teams[current_team]['division'] = 'intermediate'
if 'main' in data.lower():
teams[current_team]['division'] = 'main'
if 'open' in data.lower():
teams[current_team]['division'] = 'open'
elif 'Best Scout' in heading:
teams[current_team]['scout'] = data
elif 'Best Soldier' in heading:
teams[current_team]['soldier'] = data
elif 'Best Pyro' in heading:
teams[current_team]['pyro'] = data
elif 'Best Demoman' in heading:
teams[current_team]['demo'] = data
elif 'Best Heavy' in heading:
teams[current_team]['heavy'] = data
elif 'Best Engineer' in heading:
teams[current_team]['engi'] = data
elif 'Best Medic' in heading:
teams[current_team]['medic'] = data
elif "Best Sniper" in heading:
teams[current_team]['sniper'] = data
elif "Best Spy" in heading:
teams[current_team]['spy'] = data
elif 'Most Improved' in heading:
teams[current_team]['most improved'] = data
return teams
def sort_teams(teams):
divisions = {}
for team_name, data in teams.items():
team_division = data['division']
if team_division not in divisions:
divisions[team_division] = {}
# del data['division']
divisions[team_division][team_name] = data
return divisions
def create_division_report(name, teams):
awards = {
'Best Scout': 'scout',
'Best Soldier': 'soldier',
'Best Pyro': 'pyro',
'Best Demoman': 'demo',
'Best Heavy': 'heavy',
'Best Engineer': 'engi',
'Best Medic': 'medic',
'Best Sniper': 'sniper',
'Best Spy': 'spy',
'Most Improved Player': 'most improved',
'Most Improved Team': 'team award',
'Friendliest Team': 'team award'
}
mvp = []
for award, designator in awards.items():
if designator == 'team award':
canidate_list = list(teams.keys())
else:
canidate_list = get_award_list(teams, designator)
mvp += canidate_list
awards[award] = canidate_list
awards['Most Valuable Player'] = list(set(mvp))
print(name.capitalize(), 'voting')
print('=' * len(name + ' voting'))
for award, canidate_list in awards.items():
print(award + ': ', end='')
print(*canidate_list, sep=', ', end='\n')
print()
def get_award_list(teams, designator):
class_list = [team[designator]
for team in teams.values() if designator in team]
if type(class_list[0]) is list:
class_list = [
scout for scout_list in class_list for scout in scout_list]
return class_list
def prettyprint(obj):
print(json.dumps(obj, indent=4))
if __name__ == "__main__":
original = sys.stdout
sys.stdout = open('hl-nominations.txt', 'w', encoding='utf_8')
main()
sys.stdout.close()
sys.stdout = original