def fetch_headshots(outdir): outdir = outdir.rstrip("/") os.makedirs(outdir, exist_ok=True) teams = [] nfl_json = get_nfl_json() for team_json in nfl_json.values(): team_json = team_json.get("roster") team_json = team_json.get("page").get("content") team_json = team_json.get("roster") athletes = [] for group in team_json.get("groups"): for athlete in group.get("athletes"): athletes.append(athlete) for player_id, athlete in enumerate(athletes): ## Main Processing headshot_url = athlete.get("headshot") player_guid = athlete.get("guid") if not "nophoto" in headshot_url: outpath = f"{outdir}/{player_guid}.png" if os.path.isfile(outpath): print(f"[*] Skipping headshot: {outpath}") continue print(f"[+] Getting {team_id}/{player_id} headshot: {headshot_url}") r = requests.get(headshot_url, timeout=10, allow_redirects=False) with open(outpath, "wb") as f: f.write(r.content)
def __init__(self): nfl_json = get_nfl_json() categories = Category() stats = [] for team_json in nfl_json.values(): team_json = team_json.get("stats") team_json = team_json.get("page").get("content") team_json = team_json.get("stats").get("dictionary") for stat_json in team_json.values(): stat_abbr = stat_json.get("abbrev") stat_name = stat_json.get("statName") stat_shortdesc = stat_json.get("shortDesc") stat_fulldesc = stat_json.get("desc") _stat_category = stat_json.get("group").title() stat_category = categories.find(_stat_category) stat = (stat_abbr, stat_name, stat_shortdesc, stat_fulldesc, stat_category) stats.append(stat) break self.values = tuple(stats) self.keys = ("abbr", "name", "shortdesc", "fulldesc", "category") self.model = "app.stat" self.key = "name"
def __init__(self): self.playernavs = [] nfl_json = get_nfl_json() positions = Position() teams = Team() players = [] for team_json in nfl_json.values(): team_json = team_json.get("roster") team_json = team_json.get("page").get("content") team_json = team_json.get("roster") _player_team = team_json.get("team").get("uid") player_team = teams.find(_player_team) groups = team_json.get("groups") for group in groups: athletes = group.get("athletes") for athlete in athletes: playernav_home = athlete.get("href") playernav_headshot = athlete.get("headshot") playernav = (playernav_home, playernav_headshot) self.playernavs.append(playernav) player_uid = athlete.get("uid") player_guid = athlete.get("guid") player_name = athlete.get("name") if "nophoto" in playernav_headshot: player_headshot = "/static/app/nophoto.jpg" else: player_headshot = f"/static/app/headshots/{player_guid}.png" _player_position = athlete.get("position") player_position = positions.find(_player_position) players.append((player_uid, player_guid, player_headshot, player_name, player_position, player_team)) self.values = tuple(players) self.keys = ("uid", "guid", "headshot", "name", "position", "team") self.model = "app.player" self.key = "guid"
def fetch_logos(outdir=""): outdir = outdir.rstrip("/") os.makedirs(outdir, exist_ok=True) nfl_json = get_nfl_json() for team_json in nfl_json.values(): json_data = team_json.get("stats") json_data = json_data.get("page").get("content") json_data = json_data.get("stats").get("team") logo_url = json_data.get("logo") abbrev = json_data.get("abbrev") outpath = f"{outdir}/{abbrev}.png" if os.path.isfile(outpath): print(f"[*] Skipping logo: {outpath}") continue cmd = f"wget {logo_url} -O {outpath} -q" print(f"[+] Getting logo: {logo_url}") os.system(cmd)
def __init__(self): self.records = [] self.profiles = [] self.colors = [] self.teamnavs = [] teams = [] nfl_json = get_nfl_json() divisions = Division() for json_data in nfl_json.values(): team_json = json_data.get("roster") team_json = team_json.get("page").get("content") profile = team_json.get("roster").get("team") uid = profile.get("uid") abbrev = profile.get("abbrev") logo = f"/static/app/logos/{abbrev}.png" standingSummary = profile.get("standingSummary") _div = standingSummary.split(" in ")[-1] div = divisions.find(_div) team = (uid, logo, div) teams.append(team) ## Record record_summary = profile.get("recordSummary") if not record_summary: self.records.append((0, 0, 0)) else: wld = [int(_) for _ in record_summary.split("-")] (win, loss) = (wld[0], wld[1]) draw = 0 if len(wld) == 2 else wld[2] self.records.append((win, loss, draw)) ## Profiles self.profiles.append( (abbrev, profile.get("location"), profile.get("shortDisplayName"), profile.get("displayName"), int(standingSummary.split(" in ")[0][0]))) ## Colors main_color = profile.get("teamColor") alt_color = profile.get("altColor") if abbrev == "MIA": alt_color = "ffffff" elif abbrev == "CLE": alt_color = "eb3624" elif abbrev == "TEN": alt_color = "ffffff" elif abbrev == "KC": alt_color = "ffffff" elif abbrev == "LAC": main_color = alt_color alt_color = "ffc313" elif abbrev == "CHI": alt_color = "f26522" elif abbrev == "ATL": alt_color = "a61d33" elif abbrev == "NO": alt_color = "c8aa76" color = (main_color, alt_color) self.colors.append(color) ## TeamNavs subnav = team_json.get("subNavigation") teamnav_list = [] for item in subnav.get("items")[:-1]: href = item.get("l").get("w").get("h") teamnav_list.append("https://www.espn.com" + href) logo_url = profile.get("logo") teamnav_list.append(logo_url) teamnav = tuple(teamnav_list) self.teamnavs.append(teamnav) self.values = tuple(teams) self.keys = ("uid", "logo", "division") self.model = "app.team"
def __init__(self): self.oppstats = [] nfl_json = get_nfl_json() stats = Stat() teams = Team() teamstats = [] for team_json in nfl_json.values(): team_json = team_json.get("stats") team_json = team_json.get("page").get("content") team_json = team_json.get("stats") _ts_team = team_json.get("team").get("uid") ts_team = teams.find(_ts_team) for ts_json in team_json.get("teamStats").get("team"): for ts_stat_json in ts_json.get("stats"): _ts_stat = ts_stat_json.get("name") if _ts_stat is not None: ts_stat = stats.find(_ts_stat) (ts_value, ts_string) = stats._eval_stat(ts_stat_json) teamstat = (ts_value, ts_string, ts_stat, ts_team) teamstats.append(teamstat) else: for ts_substat_json in ts_stat_json.get("stats"): _ts_stat = ts_substat_json.get("name") ts_stat = stats.find(_ts_stat) (ts_value, ts_string) = stats._eval_stat(ts_substat_json) teamstat = (ts_value, ts_string, ts_stat, ts_team) teamstats.append(teamstat) for os_json in team_json.get("teamStats").get("opponent"): for os_stat_json in os_json.get("stats"): _os_stat = os_stat_json.get("name") if _os_stat is not None: (os_value, os_string) = stats._eval_stat(os_stat_json) oppstat = (os_value, os_string) self.oppstats.append(oppstat) else: for os_substat_json in os_stat_json.get("stats"): (os_value, os_string) = stats._eval_stat(os_substat_json) oppstat = (os_value, os_string) self.oppstats.append(oppstat) self.values = tuple(teamstats) self.keys = ("value", "string", "stat", "team") self.model = "app.teamstat"