-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfinal.py
114 lines (87 loc) · 3.42 KB
/
final.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
#!/usr/bin/env python3
"""
Combine the user, player, roster & transaction data to show current rosters & salaries
& save to a json file.
Written by: Al Scherer 2022-11-04
"""
import argparse
import json
import requests
import time
import datetime
import sys
# ---------------------------------------------------------
USER_DATA = "data/2024/users.json"
PLAYER_DATA = "data/2024/parsed_players.json"
ROSTER_DATA = "data/2024/rosters-20241101.json"
TRANSACTION_DATA = "data/2024/transactions.json"
# ---------------------------------------------------------
def get_args():
"""Get command-line arguments"""
parser = argparse.ArgumentParser(
description='final <json player file>',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-o',
'--outfile',
help='Output filename (default: )',
metavar='outfile',
type=str,
default='')
parser.add_argument('-v',
'--verbose',
help='Be chatty',
action='store_true')
args = parser.parse_args()
return args
# ---------------------------------------------------------
def get_data(file_name):
''' get data from json file '''
with open(file_name,'r') as data_file:
data = data_file.read()
details = json.loads(data)
return details
# ---------------------------------------------------------
def combine_data(users, players, rosters, transactions):
''' combine all this stuff '''
final_data = []
# Start by looking at rosters
for roster_info in rosters:
owner_id = roster_info['owner_id']
roster_data = {}
# roster_data['owner_id'] = owner_id
# roster_data['roster_id'] = roster_info['roster_id']
roster_data['owner_name'] = users[owner_id]['display_name']
roster_data['fantasy_team'] = users[owner_id]['team_name']
roster_players = roster_info['players']
# rosters is the list of player data
roster_data['players'] = []
for player_id in roster_players:
player_data = {}
# player_data['player_id'] = player_id
player_info = players[player_id]
player_data['full_name'] = player_info['full_name']
player_data['nfl_team'] = player_info['team']
player_data['positions'] = player_info['positions']
player_data['salary'] = transactions[player_id][0]['price']
roster_data['players'].append(player_data)
final_data.append(roster_data)
return final_data
# ---------------------------------------------------------
def main() -> None:
""" Main function of app """
args = get_args()
verbose = args.verbose
users = get_data(USER_DATA)
players = get_data(PLAYER_DATA)
rosters = get_data(ROSTER_DATA)
transactions = get_data(TRANSACTION_DATA)
final_data = combine_data(users, players, rosters, transactions)
out_fh = open(args.outfile,'wt') if args.outfile else sys.stdout
if verbose:
print (json.dumps(final_data, sort_keys=True, indent=2))
out_fh.write(json.dumps(final_data, sort_keys=True))
print('\nRun at {:%Y%m%d-%H%M%S}'.format(datetime.datetime.now()))
out_fh.close()
# ---------------------------------------------------------
if __name__ == '__main__':
main()