diff --git a/.github/workflows/generate_docs.yml b/.github/workflows/generate_docs.yml index 1ee099a..a9c6232 100644 --- a/.github/workflows/generate_docs.yml +++ b/.github/workflows/generate_docs.yml @@ -28,4 +28,4 @@ jobs: if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: run Python Script run: | - python pdoc cfbd_json_py -o ./docs + pdoc cfbd_json_py -o ./docs diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d87e73..06abeb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ ## 0.0.8: The "Games" Update +- Implemented `cfbd_json_py.games.get_cfbd_player_advanced_game_stats()`, a function that allows a user to get advanced player game stats for actual CFB games in a specific timeframe, from the CFBD API. +- Implemented `cfbd_json_py.games.get_cfbd_player_game_stats()`, a function that allows a user to get player game stats for actual CFB games in a specific timeframe, from the CFBD API. +- Implemented `cfbd_json_py.games.get_cfbd_game_media_info()`, a function that allows a user to get a list of known broadcasters for actual CFB games in a specific timeframe, from the CFBD API. +- Implemented `cfbd_json_py.games.get_cfbd_season_weeks()`, a function that allows a user to get a list of weeks that occured in a given CFB season from the CFBD API. +- Implemented `cfbd_json_py.games.get_cfbd_team_records()`, a function that allows a user to get team records data from the CFBD API. +- Fixed multiple bugs that would prevent a user from properly calling `cfbd_json_py.games.get_cfbd_games()` in certian edge cases. +- Attempted a fix for the `generate_docs.yml` GitHub Workflow to allow it to call `pdoc` properly within GitHub Actions. +- Updated the package version to `0.0.8`. + ## 0.0.7: The "Infrastructure" Update. - Implemented `cfbd_json_py.games.get_cfbd_games()`, a function that allows a user to get game/schedule data from the CFBD API. diff --git a/cfbd_json_py/drives.py b/cfbd_json_py/drives.py index 392853e..8a395fb 100644 --- a/cfbd_json_py/drives.py +++ b/cfbd_json_py/drives.py @@ -90,7 +90,7 @@ def get_cfbd_drives_info( `conference_abv` (str, optional): Optional argument. If you only want CFB drive data from games - involving teams a specific confrence, + involving teams from a specific confrence, set `conference_abv` to the abbreviation of the conference you want CFB drive data from. For a list of confrences, diff --git a/cfbd_json_py/games.py b/cfbd_json_py/games.py index 6f9936c..949b42a 100644 --- a/cfbd_json_py/games.py +++ b/cfbd_json_py/games.py @@ -11,6 +11,7 @@ import pandas as pd import requests +from tqdm import tqdm from cfbd_json_py.utls import get_cfbd_api_token @@ -126,6 +127,12 @@ def get_cfbd_games( If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get game information just for that game ID. + `return_as_dict` (bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandas `DataFrame` object, + set `return_as_dict` to `True`. + Usage ---------- ``` @@ -377,7 +384,7 @@ def get_cfbd_games( raise ValueError( "An invalid NCAA Division was inputted when calling this function." + "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + - f"\n\nYou entered:\n{ncaa_division}" + f"\n\nYou entered: \n{ncaa_division}" ) # URL builder @@ -392,7 +399,7 @@ def get_cfbd_games( if team != None or home_team != None \ or away_team != None or conference_abv != None \ - or ncaa_division != None or week != None: + or week != None: logging.warning( "When calling `cfbd_json_py.games.get_cfbd_games()`, " + "and setting `game_id` to a non-null value, " + @@ -408,7 +415,7 @@ def get_cfbd_games( url += f"&week={week}" if team != None: - url += f"&year={season}" + url += f"&team={team}" if home_team != None: url += f"&home={home_team}" @@ -446,7 +453,7 @@ def get_cfbd_games( if return_as_dict == True: return json_data - for game in json_data: + for game in tqdm(json_data): g_id = game['id'] row_df = pd.DataFrame( { @@ -471,7 +478,7 @@ def get_cfbd_games( row_df['home_conference'] = game['home_conference'] row_df['home_division'] = game['home_division'] row_df['home_points'] = game['home_points'] - row_df['home_line_scores'] = game['home_line_scores'] + row_df['home_line_scores'] = str(game['home_line_scores']) row_df['home_post_win_prob'] = game['home_post_win_prob'] row_df['home_pregame_elo'] = game['home_pregame_elo'] row_df['home_postgame_elo'] = game['home_postgame_elo'] @@ -480,7 +487,7 @@ def get_cfbd_games( row_df['away_conference'] = game['away_conference'] row_df['away_division'] = game['away_division'] row_df['away_points'] = game['away_points'] - row_df['away_line_scores'] = game['away_line_scores'] + row_df['away_line_scores'] = str(game['away_line_scores']) row_df['away_post_win_prob'] = game['away_post_win_prob'] row_df['away_pregame_elo'] = game['away_pregame_elo'] row_df['away_postgame_elo'] = game['away_postgame_elo'] @@ -488,7 +495,7 @@ def get_cfbd_games( row_df['highlights'] = game['highlights'] row_df['notes'] = game['notes'] - cfb_games_df = pd.DataFrame([cfb_games_df, row_df], ignore_index=True) + cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) del row_df if len(cfb_games_df) == 0: @@ -509,116 +516,3021 @@ def get_cfbd_team_records( conference_abv: str = None, return_as_dict: bool = False): """ + Get a team, or multiple team's record (wins, losses, ties) for home games, away games, + confrence games, and the team's record for that season. - """ + Parameters + ---------- - raise NotImplementedError( - 'This function has yet to be implemented by this version.' - ) + `api_key` (str, optional): + Semi-optional argument. + If `api_key` is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + If `api_key` is not null, this function will automatically assume that the + inputted `api_key` is a valid CFBD API key. + `api_key_dir` (str, optional): + Optional argument. + If `api_key` is set to a string non-empty string, this variable is ignored. + If `api_key_dir` is null, and `api_key` is null, + this function will try to find a CFBD API key file in this user's home directory. + If `api_key_dir` is set to a string, and `api_key` is null, + this function will assume that `api_key_dir` is a directory, + and will try to find a CFBD API key file in that directory. -def get_cfbd_season_weeks( - season: int, - api_key: str = None, - api_key_dir: str = None, - return_as_dict: bool = False): - """ + `season` (int, optional): + Semi-optional argument. + Specifies the season you want CFB team records data from. + You MUST set `season` or `team` to a non-null value for + this function to work. If you don't, a `ValueError()` + will be raised. - """ + `team` (str, optional): + Semi-ptional argument. + If you only want CFB team records data for a specific team, + set `team` to the name of the team you want CFB drive data from. + You MUST set `season` or `team` to a non-null value for + this function to work. If you don't, a `ValueError()` + will be raised. - raise NotImplementedError( - 'This function has yet to be implemented by this version.' - ) + `conference_abv` (str, optional): + Optional argument. + If you only want CFB team records data from games + involving teams from a specific confrence, + set `conference_abv` to the abbreviation + of the conference you want CFB team records data from. + For a list of confrences, + use the `cfbd_json_py.conferences.get_cfbd_conference_info()` + function. + `return_as_dict` (bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandas `DataFrame` object, + set `return_as_dict` to `True`. -def get_cfbd_game_media_info( - season: int, - api_key: str = None, - api_key_dir: str = None, - season_type: str = "regular", # "regular", "postseason", or "both" - week: int = None, - team: str = None, - conference_abv: str = None, - media_type: str = "all", # "tv", "radio", "web", "ppv", or "mobile" - ncaa_division: str = "fbs", + Usage + ---------- + ``` + import time - return_as_dict: bool = False): - """ + from cfbd_json_py.games import get_cfbd_team_records - """ - raise NotImplementedError( - 'This function has yet to be implemented by this version.' - ) + cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") -def get_cfbd_player_game_stats( - season: int, - api_key: str = None, - api_key_dir: str = None, - season_type: str = "regular", # "regular" or "postseason" - week: int = None, - team: str = None, - conference_abv: str = None, - # `week`, `team`, and/or conference - # must be not null for this function to work. - stat_category: str = None, - game_id: int = None, - return_as_dict: bool = False): - """ + # Get CFB team records from the 2020 CFB season. + print("Get CFB team records from the 2020 CFB season.") + json_data = get_cfbd_team_records( + api_key=cfbd_key, + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get team records from football teams fielded by the University of Cincinnati. + print("Get team records from football teams fielded by the University of Cincinnati.") + json_data = get_cfbd_team_records( + api_key=cfbd_key, + team="Cincinnati" + ) + print(json_data) + time.sleep(5) + + # Get team records from football teams that played in the Big 10 (B1G) Confrence + # in the 2017 CFB season + print("Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season") + json_data = get_cfbd_team_records( + api_key=cfbd_key, + season=2017, + conference_abv="B1G" + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_team_records( + season=2020, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + + else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get CFB team records from the 2020 CFB season. + print("Get CFB team records from the 2020 CFB season.") + json_data = get_cfbd_team_records( + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get team records from football teams fielded by the University of Cincinnati. + print("Get team records from football teams fielded by the University of Cincinnati.") + json_data = get_cfbd_team_records( + team="Cincinnati" + ) + print(json_data) + time.sleep(5) + + # Get team records from football teams that played in the Big 10 (B1G) Confrence + # in the 2017 CFB season + print("Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season") + json_data = get_cfbd_team_records( + season=2017, + conference_abv="B1G" + ) + print(json_data) + time.sleep(5) + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_team_records( + season=2020, + return_as_dict=True + ) + print(json_data) + + ``` + + Returns + ---------- + A pandas `DataFrame` object with CFB team records data, + or (if `return_as_dict` is set to `True`) + a dictionary object with CFB team records data. """ - raise NotImplementedError( - 'This function has yet to be implemented by this version.' - ) + now = datetime.now() + cfb_records_df = pd.DataFrame() + row_df = pd.DataFrame() + url = "https://api.collegefootballdata.com/records" + ######################################################################################################################################################################################################## -def get_cfbd_advanced_game_stats( - game_id: int, + if api_key != None: + real_api_key = api_key + del api_key + else: + real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) + + if real_api_key == "tigersAreAwsome": + raise ValueError( + "You actually need to change `cfbd_key` to your CFBD API key.") + elif "Bearer " in real_api_key: + pass + elif "Bearer" in real_api_key: + real_api_key = real_api_key.replace('Bearer', 'Bearer ') + else: + real_api_key = "Bearer " + real_api_key + + if season != None and season > now.year: + raise ValueError(f"`season` cannot be greater than {season}.") + elif season != None and season < 1869: + raise ValueError(f"`season` cannot be less than 1869.") + + if season == None and team == None: + raise ValueError( + f"If you call `cfbd_json_py.games.get_cfbd_team_records()`, you must specifiy at least a team or CFB season.") + + # URL builder + ######################################################################################################################################################################################################## + url_elements = 0 + + if season != None and url_elements == 0: + url += f"?year={season}" + url_elements += 1 + elif season != None: + url += f"&year={season}" + url_elements += 1 + + if team != None and url_elements == 0: + url += f"?team={team}" + url_elements += 1 + elif team != None: + url += f"&team={team}" + url_elements += 1 + + if conference_abv != None and url_elements == 0: + url += f"?conference={conference_abv}" + url_elements += 1 + elif conference_abv != None: + url += f"&conference={conference_abv}" + url_elements += 1 + + headers = { + 'Authorization': f'{real_api_key}', + 'accept': 'application/json' + } + + response = requests.get(url, headers=headers) + time.sleep(0.1) + + if response.status_code == 200: + pass + elif response.status_code == 401: + raise ConnectionRefusedError( + f'Could not connect. The connection was refused.\nHTTP Status Code 401.' + ) + else: + raise ConnectionError( + f'Could not connect.\nHTTP Status code {response.status_code}' + ) + + json_data = response.json() + + if return_as_dict == True: + return json_data + + for team in json_data: + team_year = team['year'] + row_df = pd.DataFrame( + {"season": team_year}, + index=[0] + ) + row_df['team_id'] = team['teamId'] + row_df['team_name'] = team['team'] + row_df['conference_name'] = team['conference'] + if team['division'] == "" or team['division'] == None: + row_df['conference_division'] = None + else: + row_df['conference_division'] = team['division'] + + row_df['expected_wins'] = team['expectedWins'] + row_df['total_games'] = team['total']['games'] + row_df['total_wins'] = team['total']['wins'] + row_df['total_losses'] = team['total']['losses'] + row_df['total_ties'] = team['total']['ties'] + row_df['conference_games'] = team['conferenceGames']['games'] + row_df['conference_wins'] = team['conferenceGames']['wins'] + row_df['conference_losses'] = team['conferenceGames']['losses'] + row_df['conference_ties'] = team['conferenceGames']['ties'] + row_df['home_games'] = team['homeGames']['games'] + row_df['home_wins'] = team['homeGames']['wins'] + row_df['home_losses'] = team['homeGames']['losses'] + row_df['home_ties'] = team['homeGames']['ties'] + row_df['away_games'] = team['awayGames']['games'] + row_df['away_wins'] = team['awayGames']['wins'] + row_df['away_losses'] = team['awayGames']['losses'] + row_df['away_ties'] = team['awayGames']['ties'] + + cfb_records_df = pd.concat([cfb_records_df, row_df], ignore_index=True) + del row_df + + return cfb_records_df + + +def get_cfbd_season_weeks( + season: int, api_key: str = None, api_key_dir: str = None, return_as_dict: bool = False): """ - """ + Retrives a list of weeks that occured in a given CFB season. - raise NotImplementedError( - 'This function has yet to be implemented by this version.' - ) + Parameters + ---------- + `season` (int, mandatory): + Required argument. + Specifies the season you want a list of weeks that occured in a given CFB season information from. + This must be specified, otherwise this package, and by extension + the CFBD API, will not accept the request to get a list of weeks that occured in a given CFB season information. -#################################################################################################### -# Patreon Only Functions. -# No cacheing, because the entire point of these functions are to get people -# data ASAP, and right before kickoff. -#################################################################################################### + `api_key` (str, optional): + Semi-optional argument. + If `api_key` is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + If `api_key` is not null, this function will automatically assume that the + inputted `api_key` is a valid CFBD API key. + + `api_key_dir` (str, optional): + Optional argument. + If `api_key` is set to a string non-empty string, this variable is ignored. + If `api_key_dir` is null, and `api_key` is null, + this function will try to find a CFBD API key file in this user's home directory. + If `api_key_dir` is set to a string, and `api_key` is null, + this function will assume that `api_key_dir` is a directory, + and will try to find a CFBD API key file in that directory. + `return_as_dict` (bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandas `DataFrame` object, + set `return_as_dict` to `True`. -def get_cfbd_live_scoreboard( - api_key: str = None, - api_key_dir: str = None, - ncaa_division: str = "fbs", - conference: str = None): - """ - """ + Usage + ---------- + ``` + import time - raise NotImplementedError( - 'This function has yet to be implemented by this version.' - ) + from cfbd_json_py.games import get_cfbd_season_weeks -def get_cfbd_weather_info( - api_key: str = None, - api_key_dir: str = None, - ncaa_division: str = "fbs", - game_id: int = None, - # `game_id` and/or `year` must be not null for this function to work. - season: int = None, - week: int = None, - season_type: str = "regular", # "regular", "postseason", or "both" - conference: str = None): - """ + cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + + if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + # Get a list of weeks in the 2020 CFB season. + print("Get a list of weeks in the 2020 CFB season.") + json_data = get_cfbd_season_weeks( + api_key=cfbd_key, + season=2020 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_season_weeks( + season=2020, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + + else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get a list of weeks in the 2020 CFB season. + print("Get a list of weeks in the 2020 CFB season.") + json_data = get_cfbd_season_weeks( + season=2020 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_season_weeks( + season=2020, + return_as_dict=True + ) + print(json_data) + + ``` + + Returns + ---------- + A pandas `DataFrame` object with a list of valid weeks in a given CFB season, + or (if `return_as_dict` is set to `True`) + a dictionary object with a list of valid weeks in a given CFB season. + + + """ + + now = datetime.now() + cfb_weeks_df = pd.DataFrame() + row_df = pd.DataFrame() + url = "https://api.collegefootballdata.com/calendar" + + ######################################################################################################################################################################################################## + + if api_key != None: + real_api_key = api_key + del api_key + else: + real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) + + if real_api_key == "tigersAreAwsome": + raise ValueError( + "You actually need to change `cfbd_key` to your CFBD API key.") + elif "Bearer " in real_api_key: + pass + elif "Bearer" in real_api_key: + real_api_key = real_api_key.replace('Bearer', 'Bearer ') + else: + real_api_key = "Bearer " + real_api_key + + if season == None: + # This should never happen without user tampering, but if it does, + # we need to raise an error, because the CFBD API will refuse this call without a valid season. + raise SystemError( + "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + + " and the function got to this point in the code." + + "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + + "https://github.com/armstjc/cfbd-json-py/issues" + ) + elif season > now.year: + raise ValueError(f"`season` cannot be greater than {season}.") + elif season < 1869: + raise ValueError(f"`season` cannot be less than 1869.") + + # URL builder + ######################################################################################################################################################################################################## + + # Required by API + url += f"?year={season}" + + headers = { + 'Authorization': f'{real_api_key}', + 'accept': 'application/json' + } + + response = requests.get(url, headers=headers) + time.sleep(0.1) + + if response.status_code == 200: + pass + elif response.status_code == 401: + raise ConnectionRefusedError( + f'Could not connect. The connection was refused.\nHTTP Status Code 401.' + ) + else: + raise ConnectionError( + f'Could not connect.\nHTTP Status code {response.status_code}' + ) + + json_data = response.json() + + if return_as_dict == True: + return json_data + + for week in json_data: + row_df = pd.DataFrame( + {"season": season}, + index=[0] + ) + row_df['week'] = week['week'] + row_df['season_type'] = week['seasonType'] + row_df['first_game_start'] = week['firstGameStart'] + row_df['last_game_start'] = week['lastGameStart'] + + cfb_weeks_df = pd.concat([cfb_weeks_df, row_df], ignore_index=True) + del row_df + + return cfb_weeks_df + + +def get_cfbd_game_media_info( + season: int, + api_key: str = None, + api_key_dir: str = None, + season_type: str = "regular", # "regular", "postseason", or "both" + week: int = None, + team: str = None, + conference_abv: str = None, + media_type: str = "all", # "tv", "radio", "web", "ppv", or "mobile" + ncaa_division: str = "fbs", + return_as_dict: bool = False): + """ + Gets known media information for CFB games in a given CFB season. + + Parameters + ---------- + `season` (int, mandatory): + Required argument. + Specifies the season you want CFB media information from. + This must be specified, otherwise this package, and by extension + the CFBD API, will not accept the request to get CFB media information. + + `api_key` (str, optional): + Semi-optional argument. + If `api_key` is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + If `api_key` is not null, this function will automatically assume that the + inputted `api_key` is a valid CFBD API key. + + `api_key_dir` (str, optional): + Optional argument. + If `api_key` is set to a string non-empty string, this variable is ignored. + If `api_key_dir` is null, and `api_key` is null, + this function will try to find a CFBD API key file in this user's home directory. + If `api_key_dir` is set to a string, and `api_key` is null, + this function will assume that `api_key_dir` is a directory, + and will try to find a CFBD API key file in that directory. + + `season_type` (str, semi-optional): + Semi-optional argument. + By defualt, this will be set to "regular", for the CFB regular season. + If you want CFB media information for non-regular season games, + set `season_type` to "postseason". + If you want both "regular" and "postseason" games retunred, + set `season_type` to "both" + If `season_type` is set to anything but "regular" or "postseason", + a `ValueError()` will be raised. + + `week` (int, optional): + Optional argument. + If `week` is set to an integer, this function will attempt + to load CFB media information from games in that season, and in that week. + + `team` (str, optional): + Optional argument. + If you only want CFB media information for a team, + regardless if they are the home/away team, + set `team` to the name of the team you want CFB media information from. + + `conference_abv` (str, optional): + Optional argument. + If you only want media information from games + involving teams a specific confrence, + set `conference_abv` to the abbreviation + of the conference you want game information from. + + `media_type` (str, semi-optional): + Semi-optional argument. + If you only want game broadcast information for a specific type of broadcast, + set this to the type of broadcast. + + Valid inputs are: + - `all` (default): Returns all games, and all known broadcasters for those games. + - `tv`: Returns all known TV broadcasters for CFB games in the requested timeframe. + - `radio`: Returns all known radio broadcasters + for CFB games in the requested timeframe. + - `web`: Returns all known web broadcasts (like ESPN+) + for CFB games in the requested timeframe. + - `ppv`: Returns all known Pay Per View (PPV) broadcasts + for CFB games in the requested timeframe. + - `mobile`: Returns all known broadcasters that only broadcasted + games on mobile devices (?) + + `ncaa_division` (str, semi-optional): + Semi-optional argument. + By default, `ncaa_division` will be set to "fbs", + short for the Football Bowl Subdivision (FBS), + formerly known as D1-A (read as "division one single A"), + the highest level in the NCAA football pyramid, + where teams can scolarship up to 85 players + on their football team soley for athletic ability, + and often have the largest athletics budgets + within the NCAA. + + Other valid inputs are: + - "fcs": Football Championship Subdivision (FCS), + formerly known as D1-AA (read as "division one double A"). + An FCS school is still in the 1st division of the NCAA, + making them elligable for the March Madness tournament, + but may not have the resources to compete at the FBS level + at this time. FCS schools are limited to 63 athletic scolarships + for football. + - "ii": NCAA Division II. Schools in this and D3 are not + elligable for the March Madness tournament, + and are limited to 36 athletic scolarships for their football team. + - "iii": NCAA Division III. The largest single division within the + NCAA football pyramid. + D3 schools have the distinction of being part of + the only NCAA division that cannot give out scolarships soley + for athletic ability. + + `return_as_dict` (bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandas `DataFrame` object, + set `return_as_dict` to `True`. + + Usage + ---------- + ``` + import time + + from cfbd_json_py.games import get_cfbd_game_media_info + + + cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + + if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get a media information for the 2020 CFB season. + print("Get a media information for the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get a media information for postseason games in the 2020 CFB season. + print("Get a media information for the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + season_type="postseason" + ) + print(json_data) + time.sleep(5) + + # Get a media information for week 10 games in the 2020 CFB season. + print("Get a media information for week 10 games in the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season. + print("Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + team="Ohio State" + ) + print(json_data) + time.sleep(5) + + # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season. + print("Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + conference_abv="AAC" + ) + print(json_data) + time.sleep(5) + + # Get all known radio broadcasters for games in the the 2020 CFB season. + print("Get all known radio broadcasters for games in the the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + media_type="radio" + ) + print(json_data) + time.sleep(5) + + # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season. + print("Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + ncaa_division="fcs" + ) + print(json_data) + time.sleep(5) + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_game_media_info( + season=2020, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + + else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get a media information for the 2020 CFB season. + print("Get a media information for the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get a media information for postseason games in the 2020 CFB season. + print("Get a media information for the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + season_type="postseason" + ) + print(json_data) + time.sleep(5) + + # Get a media information for week 10 games in the 2020 CFB season. + print("Get a media information for week 10 games in the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season. + print("Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + team="Ohio State" + ) + print(json_data) + time.sleep(5) + + # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season. + print("Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + conference_abv="AAC" + ) + print(json_data) + time.sleep(5) + + # Get all known radio broadcasters for games in the the 2020 CFB season. + print("Get all known radio broadcasters for games in the the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + media_type="radio" + ) + print(json_data) + time.sleep(5) + + # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season. + print("Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + ncaa_division="fcs" + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_game_media_info( + season=2020, + return_as_dict=True + ) + print(json_data) + + ``` + Returns + ---------- + A pandas `DataFrame` object with college football media information, + or (if `return_as_dict` is set to `True`) + a dictionary object with college football media information. + + """ + + now = datetime.now() + cfb_games_df = pd.DataFrame() + row_df = pd.DataFrame() + url = "https://api.collegefootballdata.com/games/media" + + ######################################################################################################################################################################################################## + + if api_key != None: + real_api_key = api_key + del api_key + else: + real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) + + if real_api_key == "tigersAreAwsome": + raise ValueError( + "You actually need to change `cfbd_key` to your CFBD API key.") + elif "Bearer " in real_api_key: + pass + elif "Bearer" in real_api_key: + real_api_key = real_api_key.replace('Bearer', 'Bearer ') + else: + real_api_key = "Bearer " + real_api_key + + if season == None: + # This should never happen without user tampering, but if it does, + # we need to raise an error, because the CFBD API will refuse this call without a valid season. + raise SystemError( + "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + + " and the function got to this point in the code." + + "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + + "https://github.com/armstjc/cfbd-json-py/issues" + ) + elif season > now.year: + raise ValueError(f"`season` cannot be greater than {season}.") + elif season < 1869: + raise ValueError(f"`season` cannot be less than 1869.") + + if season_type != "both" and season_type != "regular" and season_type != "postseason": + raise ValueError( + "`season_type` must be set to \"both\", \"regular\", or \"postseason\" for this function to work.") + + if media_type != "all" and media_type != "tv" and media_type != "radio" and media_type != "web" and media_type != "ppv" and media_type != "mobile": + raise ValueError( + "`media_type` must be set to one of the following values for this function to work:" + + "\n\t- `all`" + + "\n\t- `tv`" + + "\n\t- `radio`" + + "\n\t- `web`" + + "\n\t- `ppv`" + + "\n\t- `mobile`" + ) + + if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ + or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": + pass + else: + raise ValueError( + "An invalid NCAA Division was inputted when calling this function." + + "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + + f"\n\nYou entered: \n{ncaa_division}" + ) + + # URL builder + ######################################################################################################################################################################################################## + + # Required by API + url += f"?year={season}" + + if week != None: + url += f"&week={week}" + + if team != None: + url += f"&team={team}" + + if conference_abv != None: + url += f"&conference={conference_abv}" + + if season_type != None: + url += f"&seasonType={season_type}" + + if media_type == "all": + # If we don't care about what media type we want back, + # we don't need to add anything to the URL. + pass + elif media_type != None: + url += f"&mediaType={media_type}" + + if ncaa_division != None: + url += f"&classification={ncaa_division}" + + headers = { + 'Authorization': f'{real_api_key}', + 'accept': 'application/json' + } + + response = requests.get(url, headers=headers) + time.sleep(0.1) + + if response.status_code == 200: + pass + elif response.status_code == 401: + raise ConnectionRefusedError( + f'Could not connect. The connection was refused.\nHTTP Status Code 401.' + ) + else: + raise ConnectionError( + f'Could not connect.\nHTTP Status code {response.status_code}' + ) + + json_data = response.json() + + if return_as_dict == True: + return json_data + + for game in tqdm(json_data): + row_df = pd.DataFrame( + {"season": season}, + index=[0] + ) + row_df['week'] = game['week'] + row_df['game_id'] = game['id'] + row_df['season_type'] = game['seasonType'] + row_df['game_start_time'] = game['startTime'] + row_df['is_start_time_tbd'] = game['isStartTimeTBD'] + row_df['home_team'] = game['homeTeam'] + row_df['home_conference'] = game['homeConference'] + row_df['away_team'] = game['awayTeam'] + row_df['away_conference'] = game['awayConference'] + row_df['media_type'] = game['mediaType'] + row_df['outlet'] = game['outlet'] + + cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) + del row_df + + return cfb_games_df + + +def get_cfbd_player_game_stats( + season: int, + api_key: str = None, + api_key_dir: str = None, + season_type: str = "regular", # "regular" or "postseason" + week: int = None, + team: str = None, + conference_abv: str = None, + # `week`, `team`, and/or `conference` + # must be not null for this function to work. + stat_category: str = None, + game_id: int = None, + return_as_dict: bool = False): + """ + Retrives player game stats for a given time frame. + + Parameters + ---------- + `season` (int, mandatory): + Required argument. + Specifies the season you want CFB media information from. + This must be specified, otherwise this package, and by extension + the CFBD API, will not accept the request to get CFB media information. + + `api_key` (str, optional): + Semi-optional argument. + If `api_key` is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + If `api_key` is not null, this function will automatically assume that the + inputted `api_key` is a valid CFBD API key. + + `api_key_dir` (str, optional): + Optional argument. + If `api_key` is set to a string non-empty string, this variable is ignored. + If `api_key_dir` is null, and `api_key` is null, + this function will try to find a CFBD API key file in this user's home directory. + If `api_key_dir` is set to a string, and `api_key` is null, + this function will assume that `api_key_dir` is a directory, + and will try to find a CFBD API key file in that directory. + + `season_type` (str, semi-optional): + Semi-optional argument. + By defualt, this will be set to "regular", for the CFB regular season. + If you want CFB media information for non-regular season games, + set `season_type` to "postseason". + If `season_type` is set to anything but "regular" or "postseason", + a `ValueError()` will be raised. + + **For the following three variables, + at least one must be set to a non-null variable when calling this function.** + + `week` (int, optional): + Optional argument. + If `week` is set to an integer, this function will attempt + to load CFB media information from games in that season, and in that week. + + `team` (str, optional): + Optional argument. + If you only want CFB media information for a team, + regardless if they are the home/away team, + set `team` to the name of the team you want CFB media information from. + + `conference_abv` (str, optional): + Optional argument. + If you only want media information from games + involving teams a specific confrence, + set `conference_abv` to the abbreviation + of the conference you want game information from. + + `stat_category` (str, optional): + Optional argument. + If only want stats for a specific stat category, + set this variable to that category. + + Valid inputs are: + - `passing` + - `rushing` + - `receiving` + - `fumbles` + - `defensive` + - `interceptions` + - `punting` + - `kicking` + - `kickReturns` + - `puntReturns` + + `game_id` (int, optional): + Optional argument. + If `game_id` is set to a game ID, `get_cfbd_player_game_stats()` will try to get + player game stats just for that game ID. + + `return_as_dict` (bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandas `DataFrame` object, + set `return_as_dict` to `True`. + + Usage + ---------- + ``` + import time + + from cfbd_json_py.games import get_cfbd_player_game_stats + + + cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + + if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get player game stats for week 10 of the 2020 CFB season. + print("Get player game stats for week 10 of the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get postseason player game stats for the 2020 CFB season. + print("Get postseason player game stats for the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2020, + season_type="postseason", + week=1 + ) + print(json_data) + time.sleep(5) + + # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season. + print("Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2018, + team="Alabama" + ) + print(json_data) + time.sleep(5) + + # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season. + print("Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2020, + conference_abv="ACC" + ) + print(json_data) + time.sleep(5) + + # Get get passing stats from players who played in week 7 of the 2017 CFB season. + print("Get get passing stats from players who played in week 7 of the 2017 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2017, + week=7, + stat_category="pasing" + ) + print(json_data) + time.sleep(5) + + # Get player game stats from the 2021 Virbo Citrus Bowl, + # a bowl game that happened in the 2020 CFB season. + print("Get player game stats from the 2021 Virbo Citrus Bowl, a bowl game that happened in the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2020, + game_id=401256199 + ) + print(json_data) + time.sleep(5) + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_player_game_stats( + season=2020, + week=10, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + + else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get player game stats for week 10 of the 2020 CFB season. + print("Get player game stats for week 10 of the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get postseason player game stats for the 2020 CFB season. + print("Get postseason player game stats for the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2020, + season_type="postseason", + week=1 + ) + print(json_data) + time.sleep(5) + + # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season. + print("Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2018, + team="Alabama" + ) + print(json_data) + time.sleep(5) + + # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season. + print("Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2020, + conference_abv="ACC" + ) + print(json_data) + time.sleep(5) + + # Get get passing stats from players who played in week 7 of the 2017 CFB season. + print("Get get passing stats from players who played in week 7 of the 2017 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2017, + week=7, + stat_category="passing" + ) + print(json_data) + time.sleep(5) + + # Get player game stats from the 2021 Virbo Citrus Bowl, + # a bowl game that happened in the 2020 CFB season, + # between the Aubrun Tigers, and the Northwestern Wildcats. + print("Get player game stats from the 2021 Virbo Citrus Bowl, "+ + "a bowl game that happened in the 2020 CFB season between the Aubrun Tigers, and the Northwestern Wildcats.") + json_data = get_cfbd_player_game_stats( + season=2020, + game_id=401256199 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_player_game_stats( + season=2020, + week=10, + return_as_dict=True + ) + print(json_data) + + ``` + Returns + ---------- + A pandas `DataFrame` object with player game stats data, + or (if `return_as_dict` is set to `True`) + a dictionary object with player game stats data. + + """ + + rebuilt_json = {} + now = datetime.now() + cfb_games_df = pd.DataFrame() + row_df = pd.DataFrame() + url = "https://api.collegefootballdata.com/games/players" + stat_columns = [ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # PASS + 'passing_C/ATT', + 'passing_COMP', + 'passing_ATT', + 'passing_YDS', + 'passing_AVG', + 'passing_TD', + 'passing_INT', + 'passing_QBR', + # RUSH + 'rushing_CAR', + 'rushing_YDS', + 'rushing_AVG', + 'rushing_TD', + 'rushing_LONG', + # REC + 'receiving_REC', + 'receiving_YDS', + 'receiving_AVG', + 'receiving_TD', + 'receiving_LONG', + # FUM + 'fumbles_FUM', + 'fumbles_LOST', + 'fumbles_REC', + # DEFENSE + 'defensive_TOT', + 'defensive_SOLO', + 'defensive_TFL', + 'defensive_QB HUR', + 'defensive_SACKS', + 'defensive_PD', + 'defensive_TD', + # INT + 'interceptions_INT', + 'interceptions_YDS', + 'interceptions_TD', + # PUNT + 'punting_NO', + 'punting_YDS', + 'punting_AVG', + 'punting_TB', + 'punting_In 20', + 'punting_LONG', + # KICK + 'kicking_FG', + 'kicking_FGM', + 'kicking_FGA', + 'kicking_PCT', + 'kicking_LONG', + 'kicking_XP', + 'kicking_XPM', + 'kicking_XPA', + 'kicking_PTS', + # KR + 'kickReturns_NO', + 'kickReturns_YDS', + 'kickReturns_AVG', + 'kickReturns_TD', + 'kickReturns_LONG', + # PR + 'puntReturns_NO', + 'puntReturns_YDS', + 'puntReturns_AVG', + 'puntReturns_TD', + 'puntReturns_LONG' + ] + + ######################################################################################################################################################################################################## + + if api_key != None: + real_api_key = api_key + del api_key + else: + real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) + + if real_api_key == "tigersAreAwsome": + raise ValueError( + "You actually need to change `cfbd_key` to your CFBD API key.") + elif "Bearer " in real_api_key: + pass + elif "Bearer" in real_api_key: + real_api_key = real_api_key.replace('Bearer', 'Bearer ') + else: + real_api_key = "Bearer " + real_api_key + + if season == None: + # This should never happen without user tampering, but if it does, + # we need to raise an error, because the CFBD API will refuse this call without a valid season. + raise SystemError( + "I don't know how, I don't know why, " + + "but you managed to call this function while `season` was `None` (NULL)," + + " and the function got to this point in the code." + + "\nIf you have a GitHub account, " + + "please raise an issue on this python package's GitHub page:\n" + + "https://github.com/armstjc/cfbd-json-py/issues" + ) + elif season > now.year: + raise ValueError(f"`season` cannot be greater than {season}.") + elif season < 1869: + raise ValueError(f"`season` cannot be less than 1869.") + + if season_type != "regular" and season_type != "postseason": + raise ValueError( + "`season_type` must be set to either \"regular\" or " + + "\"postseason\" for this function to work." + ) + + # `week`, `team`, and/or `conference` + # must be not null for this function to work. + + if week == None and team == None and conference_abv == None and game_id == None: + raise ValueError( + "To use `get_cfbd_player_game_stats()`," + + " `week`, `team`, and/or `conference_abv` need to be set to a non-null value." + ) + + filter_by_stat_category = False + + if stat_category == None: + pass + elif stat_category == "passing": + filter_by_stat_category = True + elif stat_category == "rushing": + filter_by_stat_category = True + elif stat_category == "receiving": + filter_by_stat_category = True + elif stat_category == "fumbles": + filter_by_stat_category = True + elif stat_category == "passing": + filter_by_stat_category = True + elif stat_category == "defensive": + filter_by_stat_category = True + elif stat_category == "interceptions": + filter_by_stat_category = True + elif stat_category == "punting": + filter_by_stat_category = True + elif stat_category == "kicking": + filter_by_stat_category = True + elif stat_category == "kickReturns": + filter_by_stat_category = True + elif stat_category == "puntReturns": + filter_by_stat_category = True + else: + raise ValueError( + "Invalid input for `stat_category`." + + "\nValid inputs are:" + + """ + - `passing` + - `rushing` + - `receiving` + - `fumbles` + - `defensive` + - `interceptions` + - `punting` + - `kicking` + - `kickReturns` + - `puntReturns` + """ + ) + + # URL builder + ######################################################################################################################################################################################################## + + # Required by the API + url += f"?year={season}" + + if game_id != None: + url += f"&gameId={game_id}" + + if stat_category != None: + url += f"&category={stat_category}" + + if week != None or team != None or conference_abv != None: + logging.warning( + "When calling `cfbd_json_py.games.get_cfbd_player_game_stats()`, " + + "and setting `game_id` to a non-null value, " + + "only `season`, `stat_category`, and `game_id` are considered " + + "when calling the CFBD API." + ) + else: + if season_type != None: + url += f"&seasonType={season_type}" + + if week != None: + url += f"&week={week}" + + if team != None: + url += f"&team={team}" + + if conference_abv != None: + url += f"&conference={conference_abv}" + + headers = { + 'Authorization': f'{real_api_key}', + 'accept': 'application/json' + } + + response = requests.get(url, headers=headers) + time.sleep(0.1) + + if response.status_code == 200: + pass + elif response.status_code == 401: + raise ConnectionRefusedError( + f'Could not connect. The connection was refused.\nHTTP Status Code 401.' + ) + else: + raise ConnectionError( + f'Could not connect.\nHTTP Status code {response.status_code}' + ) + + json_data = response.json() + + if return_as_dict == True: + return json_data + + for game in tqdm(json_data): + game_id = game['id'] + + for team in game['teams']: + team_name = team['school'] + team_confrence = team['conference'] + home_away = team['homeAway'] + + for s_category in team['categories']: + if s_category['name'] == "passing": + for stat in s_category['types']: + + if stat['name'] == "C/ATT": # passing_C/ATT + + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = i['stat'] + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['passing_C/ATT'] = player_stat + + elif stat['name'] == "YDS": # passing_YDS + + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['passing_YDS'] = player_stat + + elif stat['name'] == "AVG": # passing_AVG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['passing_AVG'] = player_stat + + elif stat['name'] == "TD": # passing_TD + + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['passing_TD'] = player_stat + + elif stat['name'] == "INT": # passing_INT + + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['passing_INT'] = player_stat + + elif stat['name'] == "QBR": # passing_QBR + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + try: + player_stat = float(i['stat']) + except: + player_stat = None + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['passing_QBR'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + # passing_df = pd.DataFrame(s_category['types']) + elif s_category['name'] == "rushing": + for stat in s_category['types']: + if stat['name'] == "CAR": # rushing_CAR + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['rushing_CAR'] = player_stat + + elif stat['name'] == "YDS": # rushing_YDS + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['rushing_YDS'] = player_stat + + elif stat['name'] == "AVG": # rushing_AVG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['rushing_AVG'] = player_stat + + elif stat['name'] == "TD": # rushing_TD + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['rushing_TD'] = player_stat + + elif stat['name'] == "LONG": # rushing_LONG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['rushing_LONG'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + elif s_category['name'] == "receiving": + for stat in s_category['types']: + if stat['name'] == "REC": # receiving_REC + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['receiving_REC'] = player_stat + + elif stat['name'] == "YDS": # receiving_YDS + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['receiving_YDS'] = player_stat + + elif stat['name'] == "AVG": # receiving_AVG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['receiving_AVG'] = player_stat + + elif stat['name'] == "TD": # receiving_TD + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['receiving_TD'] = player_stat + + elif stat['name'] == "LONG": # receiving_LONG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['receiving_LONG'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + elif s_category['name'] == "fumbles": + for stat in s_category['types']: + if stat['name'] == "FUM": # fumbles_FUM + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['fumbles_FUM'] = player_stat + + elif stat['name'] == "LOST": # fumbles_LOST + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['fumbles_LOST'] = player_stat + + elif stat['name'] == "REC": # fumbles_REC + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['fumbles_REC'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + elif s_category['name'] == "defensive": + for stat in s_category['types']: + if stat['name'] == "TOT": # defensive_TOT + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['defensive_TOT'] = player_stat + + elif stat['name'] == "SOLO": # defensive_SOLO + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['defensive_SOLO'] = player_stat + + elif stat['name'] == "TFL": # defensive_TFL + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['defensive_TFL'] = player_stat + + elif stat['name'] == "QB HUR": # defensive_QB HUR + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['defensive_QB HUR'] = player_stat + + elif stat['name'] == "SACKS": # defensive_SACKS + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['defensive_SACKS'] = player_stat + + elif stat['name'] == "PD": # defensive_PD + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['defensive_PD'] = player_stat + + elif stat['name'] == "TD": # defensive_TD + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['defensive_TD'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + elif s_category['name'] == "interceptions": + for stat in s_category['types']: + if stat['name'] == "INT": # interceptions_INT + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['interceptions_INT'] = player_stat + + elif stat['name'] == "YDS": # interceptions_YDS + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['interceptions_YDS'] = player_stat + + elif stat['name'] == "TD": # interceptions_TD + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['interceptions_TD'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + elif s_category['name'] == "punting": + for stat in s_category['types']: + if stat['name'] == "NO": # punting_NO + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['punting_NO'] = player_stat + + elif stat['name'] == "YDS": # punting_YDS + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['punting_YDS'] = player_stat + + elif stat['name'] == "AVG": # punting_AVG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['punting_AVG'] = player_stat + + elif stat['name'] == "TB": # punting_TB + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['punting_TB'] = player_stat + + elif stat['name'] == "In 20": # punting_In 20 + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['punting_In 20'] = player_stat + + elif stat['name'] == "LONG": # punting_LONG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['punting_LONG'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + elif s_category['name'] == "kicking": + for stat in s_category['types']: + if stat['name'] == "FG": # kicking_FG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = i['stat'] + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kicking_FG'] = player_stat + + elif stat['name'] == "TOT": # kicking_FG, special case + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = i['stat'] + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kicking_FG'] = player_stat + + elif stat['name'] == "PCT": # kicking_PCT + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kicking_PCT'] = player_stat + + elif stat['name'] == "LONG": # kicking_LONG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kicking_LONG'] = player_stat + + elif stat['name'] == "XP": # kicking_XP + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = i['stat'] + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kicking_XP'] = player_stat + + elif stat['name'] == "PTS": # kicking_PTS + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kicking_PTS'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + elif s_category['name'] == "kickReturns": + for stat in s_category['types']: + if stat['name'] == "NO": # kickReturns_NO + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kickReturns_NO'] = player_stat + + elif stat['name'] == "YDS": # kickReturns_YDS + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kickReturns_YDS'] = player_stat + + elif stat['name'] == "AVG": # kickReturns_AVG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kickReturns_AVG'] = player_stat + + elif stat['name'] == "TD": # kickReturns_TD + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kickReturns_TD'] = player_stat + + elif stat['name'] == "LONG": # kickReturns_LONG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['kickReturns_LONG'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + elif s_category['name'] == "puntReturns": + for stat in s_category['types']: + if stat['name'] == "NO": # puntReturns_NO + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['puntReturns_NO'] = player_stat + + elif stat['name'] == "YDS": # puntReturns_YDS + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['puntReturns_YDS'] = player_stat + + elif stat['name'] == "AVG": # puntReturns_AVG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = float(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['puntReturns_AVG'] = player_stat + + elif stat['name'] == "TD": # puntReturns_TD + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['puntReturns_TD'] = player_stat + + elif stat['name'] == "LONG": # puntReturns_LONG + for i in stat['athletes']: + player_id = int(i['id']) + player_name = i['name'] + player_stat = int(i['stat']) + + if rebuilt_json.get(player_id) == None: + rebuilt_json[player_id] = {} + + rebuilt_json[player_id]['game_id'] = game_id + rebuilt_json[player_id]['team_name'] = team_name + rebuilt_json[player_id]['team_confrence'] = team_confrence + rebuilt_json[player_id]['player_id'] = player_id + rebuilt_json[player_id]['player_name'] = player_name + rebuilt_json[player_id]['home_away'] = home_away + rebuilt_json[player_id]['puntReturns_LONG'] = player_stat + + else: + raise IndexError( + f"Unhandled stat: \t{stat['name']}") + + else: + raise IndexError(f"Unhandled stat category: \t{ + s_category['name']}") + + for key, value in tqdm(rebuilt_json.items()): + # print(key) + + # print(value) + game_id = value['game_id'] + team_name = value['team_name'] + team_confrence = value['team_confrence'] + player_id = value['player_id'] + player_name = value['player_name'] + home_away = value['home_away'] + + row_df = pd.DataFrame( + { + "game_id": game_id, + "team_name": team_name, + "team_confrence": team_confrence, + "player_id": player_id, + "player_name": player_name, + "home_away": home_away + }, + index=[0] + ) + # Passing + if value.get('passing_C/ATT') != None: + row_df['passing_C/ATT'] = value['passing_C/ATT'] + + if value.get('passing_YDS') != None: + row_df['passing_YDS'] = value['passing_YDS'] + + if value.get('passing_AVG') != None: + row_df['passing_AVG'] = value['passing_AVG'] + + if value.get('passing_TD') != None: + row_df['passing_TD'] = value['passing_TD'] + + if value.get('passing_INT') != None: + row_df['passing_INT'] = value['passing_INT'] + + if value.get('passing_QBR') != None: + row_df['passing_QBR'] = value['passing_QBR'] + + # Rushing + if value.get('rushing_CAR') != None: + row_df['rushing_CAR'] = value['rushing_CAR'] + + if value.get('rushing_YDS') != None: + row_df['rushing_YDS'] = value['rushing_YDS'] + + if value.get('rushing_AVG') != None: + row_df['rushing_AVG'] = value['rushing_AVG'] + + if value.get('rushing_TD') != None: + row_df['rushing_TD'] = value['rushing_TD'] + + if value.get('rushing_LONG') != None: + row_df['rushing_LONG'] = value['rushing_LONG'] + + # Receiving + if value.get('receiving_REC') != None: + row_df['receiving_REC'] = value['receiving_REC'] + + if value.get('receiving_YDS') != None: + row_df['receiving_YDS'] = value['receiving_YDS'] + + if value.get('receiving_AVG') != None: + row_df['receiving_AVG'] = value['receiving_AVG'] + + if value.get('receiving_TD') != None: + row_df['receiving_TD'] = value['receiving_TD'] + + if value.get('receiving_LONG') != None: + row_df['receiving_LONG'] = value['receiving_LONG'] + + # Fumbles + if value.get('fumbles_FUM') != None: + row_df['fumbles_FUM'] = value['fumbles_FUM'] + + if value.get('fumbles_LOST') != None: + row_df['fumbles_LOST'] = value['fumbles_LOST'] + + if value.get('fumbles_REC') != None: + row_df['fumbles_REC'] = value['fumbles_REC'] + + # Defense + if value.get('defensive_TOT') != None: + row_df['defensive_TOT'] = value['defensive_TOT'] + + if value.get('defensive_SOLO') != None: + row_df['defensive_SOLO'] = value['defensive_SOLO'] + + if value.get('defensive_TFL') != None: + row_df['defensive_TFL'] = value['defensive_TFL'] + + if value.get('defensive_QB HUR') != None: + row_df['defensive_QB HUR'] = value['defensive_QB HUR'] + + if value.get('defensive_SACKS') != None: + row_df['defensive_SACKS'] = value['defensive_SACKS'] + + if value.get('defensive_PD') != None: + row_df['defensive_PD'] = value['defensive_PD'] + + if value.get('defensive_TD') != None: + row_df['defensive_TD'] = value['defensive_TD'] + + # interceptions + if value.get('interceptions_INT') != None: + row_df['interceptions_INT'] = value['interceptions_INT'] + + if value.get('interceptions_YDS') != None: + row_df['interceptions_YDS'] = value['interceptions_YDS'] + + if value.get('interceptions_TD') != None: + row_df['interceptions_TD'] = value['interceptions_TD'] + + # punting + if value.get('punting_NO') != None: + row_df['punting_NO'] = value['punting_NO'] + + if value.get('punting_YDS') != None: + row_df['punting_YDS'] = value['punting_YDS'] + + if value.get('punting_AVG') != None: + row_df['punting_AVG'] = value['punting_AVG'] + + if value.get('punting_TB') != None: + row_df['punting_TB'] = value['punting_TB'] + + if value.get('punting_In 20') != None: + row_df['punting_In 20'] = value['punting_In 20'] + + if value.get('punting_LONG') != None: + row_df['punting_LONG'] = value['punting_LONG'] + + # kicking + if value.get('kicking_FG') != None: + row_df['kicking_FG'] = value['kicking_FG'] + + if value.get('kicking_PCT') != None: + row_df['kicking_PCT'] = value['kicking_PCT'] + + if value.get('kicking_LONG') != None: + row_df['kicking_LONG'] = value['kicking_LONG'] + + if value.get('kicking_XP') != None: + row_df['kicking_XP'] = value['kicking_XP'] + + if value.get('kicking_PTS') != None: + row_df['kicking_PTS'] = value['kicking_PTS'] + + # kickReturns + if value.get('kickReturns_NO') != None: + row_df['kickReturns_NO'] = value['kickReturns_NO'] + + if value.get('kickReturns_YDS') != None: + row_df['kickReturns_YDS'] = value['kickReturns_YDS'] + + if value.get('kickReturns_AVG') != None: + row_df['kickReturns_AVG'] = value['kickReturns_AVG'] + + if value.get('kickReturns_TD') != None: + row_df['kickReturns_TD'] = value['kickReturns_TD'] + + if value.get('kickReturns_LONG') != None: + row_df['kickReturns_LONG'] = value['kickReturns_LONG'] + + # puntReturns + if value.get('puntReturns_NO') != None: + row_df['puntReturns_NO'] = value['puntReturns_NO'] + + if value.get('puntReturns_YDS') != None: + row_df['puntReturns_YDS'] = value['puntReturns_YDS'] + + if value.get('puntReturns_AVG') != None: + row_df['puntReturns_AVG'] = value['puntReturns_AVG'] + + if value.get('puntReturns_TD') != None: + row_df['puntReturns_TD'] = value['puntReturns_TD'] + + if value.get('puntReturns_LONG') != None: + row_df['puntReturns_LONG'] = value['puntReturns_LONG'] + + cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) + del row_df + + cfb_games_df[['passing_COMP', 'passing_ATT'] + ] = cfb_games_df['passing_C/ATT'].str.split('/', expand=True) + + cfb_games_df[['kicking_FGM', 'kicking_FGA'] + ] = cfb_games_df['kicking_FG'].str.split('/', expand=True) + cfb_games_df[['kicking_XPM', 'kicking_XPA'] + ] = cfb_games_df['kicking_XP'].str.split('/', expand=True) + + cfb_games_df = cfb_games_df.fillna(0) + + cfb_games_df = cfb_games_df.astype({ + "passing_COMP": "int", + "passing_ATT": "int", + "kicking_FGM": "int", + "kicking_FGA": "int", + "kicking_XPM": "int", + "kicking_XPA": "int" + }) + # print(cfb_games_df.columns) + + if filter_by_stat_category == False: + cfb_games_df = cfb_games_df.reindex(columns=stat_columns) + + elif filter_by_stat_category == True and stat_category == "passing": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # PASS + 'passing_C/ATT', + 'passing_COMP', + 'passing_ATT', + 'passing_YDS', + 'passing_AVG', + 'passing_TD', + 'passing_INT', + 'passing_QBR' + ]] + + elif filter_by_stat_category == True and stat_category == "rushing": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # RUSH + 'rushing_CAR', + 'rushing_YDS', + 'rushing_AVG', + 'rushing_TD', + 'rushing_LONG', + ]] + + elif filter_by_stat_category == True and stat_category == "receiving": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # REC + 'receiving_REC', + 'receiving_YDS', + 'receiving_AVG', + 'receiving_TD', + 'receiving_LONG' + ]] + + elif filter_by_stat_category == True and stat_category == "fumbles": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # FUM + 'fumbles_FUM', + 'fumbles_LOST', + 'fumbles_REC' + ]] + + elif filter_by_stat_category == True and stat_category == "defensive": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # DEFENSE + 'defensive_TOT', + 'defensive_SOLO', + 'defensive_TFL', + 'defensive_QB HUR', + 'defensive_SACKS', + 'defensive_PD', + 'defensive_TD' + ]] + + elif filter_by_stat_category == True and stat_category == "interceptions": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # INT + 'interceptions_INT', + 'interceptions_YDS', + 'interceptions_TD', + ]] + + elif filter_by_stat_category == True and stat_category == "punting": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # PUNT + 'punting_NO', + 'punting_YDS', + 'punting_AVG', + 'punting_TB', + 'punting_In 20', + 'punting_LONG' + ]] + + elif filter_by_stat_category == True and stat_category == "kicking": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # KICK + 'kicking_FG', + 'kicking_FGM', + 'kicking_FGA', + 'kicking_PCT', + 'kicking_LONG', + 'kicking_XP', + 'kicking_XPM', + 'kicking_XPA', + 'kicking_PTS' + ]] + + elif filter_by_stat_category == True and stat_category == "kickReturns": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # KR + 'kickReturns_NO', + 'kickReturns_YDS', + 'kickReturns_AVG', + 'kickReturns_TD', + 'kickReturns_LONG' + ]] + + elif filter_by_stat_category == True and stat_category == "puntReturns": + cfb_games_df = cfb_games_df[[ + 'game_id', + 'team_name', + 'team_confrence', + 'player_id', + 'player_name', + 'home_away', + # KR + 'puntReturns_NO', + 'puntReturns_YDS', + 'puntReturns_AVG', + 'puntReturns_TD', + 'puntReturns_LONG' + ]] + + return cfb_games_df + + +def get_cfbd_player_advanced_game_stats( + game_id: int, + api_key: str = None, + api_key_dir: str = None, + return_as_dict: bool = False): + """ + Retrives advanced game stats from the CFBD API. + + Parameters + ---------- + + `api_key` (str, optional): + Semi-optional argument. + If `api_key` is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + If `api_key` is not null, this function will automatically assume that the + inputted `api_key` is a valid CFBD API key. + + `api_key_dir` (str, optional): + Optional argument. + If `api_key` is set to a string non-empty string, this variable is ignored. + If `api_key_dir` is null, and `api_key` is null, + this function will try to find a CFBD API key file in this user's home directory. + If `api_key_dir` is set to a string, and `api_key` is null, + this function will assume that `api_key_dir` is a directory, + and will try to find a CFBD API key file in that directory. + + `return_as_dict` (bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandas `DataFrame` object, + set `return_as_dict` to `True`. + + Usage + ---------- + ``` + import time + + from cfbd_json_py.games import get_cfbd_player_advanced_game_stats + + + cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + + if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, + # and the Oklahoma Sooners Football Program. + print("Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.") + json_data = get_cfbd_player_advanced_game_stats( + api_key=cfbd_key, + game_id=401135278 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_player_advanced_game_stats( + api_key=cfbd_key, + game_id=401135278, + return_as_dict=True + ) + print(json_data) + + else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, + # and the Oklahoma Sooners Football Program. + print("Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.") + json_data = get_cfbd_player_advanced_game_stats( + game_id=401135278 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_player_advanced_game_stats( + game_id=401135278, + return_as_dict=True + ) + print(json_data) + + ``` + Returns + ---------- + A pandas `DataFrame` object with college football game information, + or (if `return_as_dict` is set to `True`) + a dictionary object with college football game information. + """ + + #now = datetime.now() + usage_df = pd.DataFrame() + ppa_df = pd.DataFrame() + adv_stats_df = pd.DataFrame() + row_df = pd.DataFrame() + url = "https://api.collegefootballdata.com/game/box/advanced" + + ######################################################################################################################################################################################################## + + if api_key != None: + real_api_key = api_key + del api_key + else: + real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) + + if real_api_key == "tigersAreAwsome": + raise ValueError( + "You actually need to change `cfbd_key` to your CFBD API key.") + elif "Bearer " in real_api_key: + pass + elif "Bearer" in real_api_key: + real_api_key = real_api_key.replace('Bearer', 'Bearer ') + else: + real_api_key = "Bearer " + real_api_key + + # URL builder + ######################################################################################################################################################################################################## + + # Required by API + url += f"?gameId={game_id}" + + headers = { + 'Authorization': f'{real_api_key}', + 'accept': 'application/json' + } + + response = requests.get(url, headers=headers) + time.sleep(0.1) + + if response.status_code == 200: + pass + elif response.status_code == 401: + raise ConnectionRefusedError( + f'Could not connect. The connection was refused.\nHTTP Status Code 401.' + ) + else: + raise ConnectionError( + f'Could not connect.\nHTTP Status code {response.status_code}' + ) + + json_data = response.json() + + if return_as_dict == True: + return json_data + + home_team_name = json_data['gameInfo']['homeTeam'] + home_points = json_data['gameInfo']['homePoints'] + home_win_prob = json_data['gameInfo']['homeWinProb'] + away_team_name = json_data['gameInfo']['awayTeam'] + away_points = json_data['gameInfo']['awayPoints'] + away_win_prob = json_data['gameInfo']['awayWinProb'] + home_winner = json_data['gameInfo']['homeWinner'] + game_excitement_score = json_data['gameInfo']['excitement'] + + + # Parsing Usage + print("Parsing player usage data.") + for player in tqdm(json_data['players']['usage']): + row_df = pd.DataFrame( + { + "game_id":game_id + }, + index=[0] + ) + row_df['player_name'] = player['player'] + row_df['team'] = player['team'] + row_df['position'] = player['position'] + + row_df['total_usage'] = player['total'] + row_df['q1_usage'] = player['quarter1'] + row_df['q2_usage'] = player['quarter2'] + row_df['q3_usage'] = player['quarter3'] + row_df['q4_usage'] = player['quarter4'] + row_df['rushing_usage'] = player['rushing'] + row_df['passing_usage'] = player['passing'] + + usage_df = pd.concat([usage_df,row_df],ignore_index=True) + del row_df + + # Parsing PPA + print("Parsing player PPA data.") + for player in tqdm(json_data['players']['ppa']): + row_df = pd.DataFrame( + { + "game_id":game_id + }, + index=[0] + ) + row_df['player_name'] = player['player'] + row_df['team'] = player['team'] + row_df['position'] = player['position'] + + row_df['average_ppa_total'] = player['average']['total'] + row_df['average_ppa_q1'] = player['average']['quarter1'] + row_df['average_ppa_q2'] = player['average']['quarter2'] + row_df['average_ppa_q3'] = player['average']['quarter3'] + row_df['average_ppa_q4'] = player['average']['quarter4'] + row_df['average_ppa_rushing'] = player['average']['rushing'] + row_df['average_ppa_passing'] = player['average']['passing'] + + row_df['cumulative_ppa_total'] = player['cumulative']['total'] + row_df['cumulative_ppa_q1'] = player['cumulative']['quarter1'] + row_df['cumulative_ppa_q2'] = player['cumulative']['quarter2'] + row_df['cumulative_ppa_q3'] = player['cumulative']['quarter3'] + row_df['cumulative_ppa_q4'] = player['cumulative']['quarter4'] + row_df['cumulative_ppa_rushing'] = player['cumulative']['rushing'] + row_df['cumulative_ppa_passing'] = player['cumulative']['passing'] + + ppa_df = pd.concat([ppa_df,row_df],ignore_index=True) + + # Join `usage_df` and `ppa_df` together + adv_stats_df = pd.merge( + left=usage_df, + right=ppa_df, + how="outer", + on=["game_id","player_name","team","position"] + ) + + # Add in these columns for completeness. + + adv_stats_df.loc[adv_stats_df["team"]==home_team_name,"home_away"] = "home" + adv_stats_df.loc[adv_stats_df["team"]==home_team_name,"opponent"] = away_team_name + + adv_stats_df.loc[adv_stats_df["team"]==away_team_name,"home_away"] = "away" + adv_stats_df.loc[adv_stats_df["team"]==away_team_name,"opponent"] = home_team_name + + adv_stats_df['home_team'] = home_team_name + adv_stats_df['away_team'] = away_team_name + + adv_stats_df['home_win_prob'] = home_win_prob + adv_stats_df['away_win_prob'] = away_win_prob + + adv_stats_df['home_points'] = home_points + adv_stats_df['away_points'] = away_points + + adv_stats_df['home_winner'] = home_winner + adv_stats_df['game_excitement_score'] = game_excitement_score + + return adv_stats_df + + +#################################################################################################### +# Patreon Only Functions. +# No cacheing, because the entire point of these functions are to get people +# data ASAP, and right before kickoff. +#################################################################################################### + + +def get_cfbd_live_scoreboard( + api_key: str = None, + api_key_dir: str = None, + ncaa_division: str = "fbs", + conference: str = None): + """ + YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! + To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata + + + """ + + raise NotImplementedError( + 'This function has yet to be implemented by this version.' + ) + + +def get_cfbd_weather_info( + api_key: str = None, + api_key_dir: str = None, + ncaa_division: str = "fbs", + game_id: int = None, + # `game_id` and/or `year` must be not null for this function to work. + season: int = None, + week: int = None, + season_type: str = "regular", # "regular", "postseason", or "both" + conference: str = None): + """ + YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! + To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata """ raise NotImplementedError( diff --git a/cfbd_json_py/venues.py b/cfbd_json_py/venues.py index 5a38609..0e193ba 100644 --- a/cfbd_json_py/venues.py +++ b/cfbd_json_py/venues.py @@ -8,7 +8,6 @@ def get_cfbd_venues( api_key: str = None, api_key_dir: str = None, - return_as_dict: bool = False): """ diff --git a/docs/cfbd_json_py.html b/docs/cfbd_json_py.html index 66082fe..fecaa73 100644 --- a/docs/cfbd_json_py.html +++ b/docs/cfbd_json_py.html @@ -62,7 +62,7 @@
1# Creation Date: 08/30/2023 01:13 EDT - 2# Last Updated Date: + 2# Last Updated Date: 10/06/2023 08:06 PM EDT 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) 4# File Name: __init__.py 5# Purpose: Allows for the python package to function, diff --git a/docs/cfbd_json_py/_early_access.html b/docs/cfbd_json_py/_early_access.html index 302a2fd..c40d295 100644 --- a/docs/cfbd_json_py/_early_access.html +++ b/docs/cfbd_json_py/_early_access.html @@ -55,20 +55,21 @@
@@ -84,11 +85,11 @@1# Creation Date: 10/06/2023 07:33 PM EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: _early_access.py - 4# Purpose: Houses functions that have yet to be implemented yet for the - 5#################################################################################################### - 6 + 2# Last Updated Date: 10/06/2023 08:00 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: _early_access.py + 5# Purpose: Houses functions that have yet to be implemented yet for the + 6#################################################################################################### 7 - 8def about_early_access_functions(): - 9 print( -10 "Early Access functions are functions generated by a generator script " + -11 "when an API endpoint is created, but not implemented yet by this python package." -12 ) -13 + 8 + 9def about_early_access_functions(): +10 print( +11 "Early Access functions are functions generated by a generator script " + +12 "when an API endpoint is created, but not implemented yet by this python package." +13 ) 14 -15# TODO: Create a code generator if a function doesn't exist. +15 +16# TODO: Create a code generator if a function doesn't exist.
9def about_early_access_functions(): -10 print( -11 "Early Access functions are functions generated by a generator script " + -12 "when an API endpoint is created, but not implemented yet by this python package." -13 ) +diff --git a/docs/cfbd_json_py/betting.html b/docs/cfbd_json_py/betting.html index 18d485a..66ed8d7 100644 --- a/docs/cfbd_json_py/betting.html +++ b/docs/cfbd_json_py/betting.html @@ -55,407 +55,408 @@10def about_early_access_functions(): +11 print( +12 "Early Access functions are functions generated by a generator script " + +13 "when an API endpoint is created, but not implemented yet by this python package." +14 )
@@ -471,391 +472,391 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: betting.py - 4# Purpose: Houses functions pertaining to betting data within the CFBD API. - 5#################################################################################################### - 6 - 7import time - 8import warnings - 9# from datetime import datetime - 10 - 11import pandas as pd - 12import requests - 13from tqdm import tqdm - 14 - 15from cfbd_json_py.utls import get_cfbd_api_token - 16 + 2# Last Updated Date: 10/06/2023 07:52 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: betting.py + 5# Purpose: Houses functions pertaining to betting data within the CFBD API. + 6#################################################################################################### + 7 + 8import time + 9import warnings + 10# from datetime import datetime + 11 + 12import pandas as pd + 13import requests + 14from tqdm import tqdm + 15 + 16from cfbd_json_py.utls import get_cfbd_api_token 17 - 18def get_cfbd_betting_lines( - 19 season: int, - 20 api_key: str = None, - 21 api_key_dir: str = None, - 22 game_id: int = None, - 23 week: int = None, - 24 season_type: str = "regular", # "regular" or "postseason" - 25 team: str = None, - 26 home_team: str = None, - 27 away_team: str = None, - 28 conference_abv: str = None, - 29 # cache_data: bool = False, - 30 # cache_dir: str = None, - 31 return_as_dict: bool = False): - 32 """ - 33 Retrives betting information from the CFBD API for a given season, - 34 or you could only get betting information for a single game. - 35 - 36 Parameters - 37 ---------- - 38 - 39 `season` (int, mandatory): - 40 The season you want to retrive betting information from. - 41 - 42 `api_key` (str, optional): - 43 Semi-optional argument. - 44 If `api_key` is null, this function will attempt to load a CFBD API key - 45 from the python environment, or from a file on this computer. - 46 If `api_key` is not null, this function will automatically assume that the - 47 inputted `api_key` is a valid CFBD API key. - 48 - 49 `api_key_dir` (str, optional): - 50 Optional argument. - 51 If `api_key` is set to a string non-empty string, this variable is ignored. - 52 If `api_key_dir` is null, and `api_key` is null, - 53 this function will try to find a CFBD API key file in this user's home directory. - 54 If `api_key_dir` is set to a string, and `api_key` is null, - 55 this function will assume that `api_key_dir` is a directory, - 56 and will try to find a CFBD API key file in that directory. - 57 - 58 `game_id` (int, optional): - 59 Optional argument. - 60 If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get - 61 all betting informaiton for that game ID. - 62 - 63 `week` (int, optional): - 64 Optional argument. - 65 If `week` is set to an integer, this function will attempt - 66 to load betting data from games in that season, and that week. - 67 - 68 `season_type` (str, semi-optional): - 69 Semi-optional argument. - 70 By defualt, this will be set to "regular", for the CFB regular season. - 71 If you want postseason betting data, set `season_type` to "postseason". - 72 If `season_type` is set to anything but "regular" or "postseason", - 73 a `ValueError()` will be raised. - 74 - 75 `team` (str, optional): - 76 Optional argument. - 77 If you only want betting information for a team, - 78 regardless if they are the home/away team, - 79 set `team` to the name of the team you want game-level betting data from. - 80 - 81 `home_team` (str, optional): - 82 Optional argument. - 83 If you only want betting information for a team, - 84 where that team was the home team in this season, - 85 set `home_team` to the name of the team you want game-level betting data from. - 86 - 87 `away_team` (str, optional): - 88 Optional argument. - 89 If you only want betting information for a team, - 90 where that team was the away team in this season, - 91 set `away_team` to the name of the team you want game-level betting data from. - 92 - 93 `conference_abv` (str, optional): - 94 Optional argument. - 95 If you only want betting information from games - 96 involving teams a specific confrence, - 97 set `conference_abv` to the abbreviation - 98 of the conference you want betting informaiton from. - 99 -100 `return_as_dict` (bool, semi-optional): -101 Semi-optional argument. -102 If you want this function to return the data as a dictionary (read: JSON object), -103 instead of a pandas `DataFrame` object, -104 set `return_as_dict` to `True`. -105 -106 Usage -107 ---------- -108 ``` -109 import time -110 -111 from cfbd_json_py.betting import get_cfbd_betting_lines -112 -113 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. -114 -115 if cfbd_key != "tigersAreAwsome": -116 print("Using the user's API key declared in this script for this example.") -117 -118 # Gets all available betting info for the 2020 CFB season. -119 print("Gets all available betting info for the 2020 CFB season.") -120 json_data = get_cfbd_betting_lines( -121 api_key=cfbd_key, -122 season=2020 -123 ) -124 print(json_data) -125 time.sleep(5) -126 -127 # Gets all available betting info for the 2020 CFB season, in week 2. -128 print("Gets all available betting info for the 2020 CFB season, in week 2.") -129 json_data = get_cfbd_betting_lines( -130 api_key=cfbd_key, -131 season=2020, -132 week=2 -133 ) -134 print(json_data) -135 time.sleep(5) -136 # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.). -137 print("Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).") -138 json_data = get_cfbd_betting_lines( -139 api_key=cfbd_key, -140 season=2020, -141 season_type="postseason" -142 ) -143 print(json_data) -144 time.sleep(5) -145 # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season. -146 print("Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.") -147 json_data = get_cfbd_betting_lines( -148 api_key=cfbd_key, -149 season=2020, -150 team="Cincinnati" -151 ) -152 print(json_data) -153 time.sleep(5) -154 # Gets all betting info for Ohio Bobcats home games the 2020 CFB season. -155 print("Gets all betting info for Ohio Bobcats home games the 2020 CFB season.") -156 json_data = get_cfbd_betting_lines( -157 api_key=cfbd_key, -158 season=2020, -159 home_team="Ohio" -160 ) -161 print(json_data) -162 time.sleep(5) -163 # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season. -164 print("Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.") -165 json_data = get_cfbd_betting_lines( -166 api_key=cfbd_key, -167 season=2020, -168 away_team="Ohio State" -169 ) -170 -171 # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season. -172 print("Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.") -173 json_data = get_cfbd_betting_lines( -174 api_key=cfbd_key, -175 season=2020, -176 conference_abv="ACC" -177 ) -178 print(json_data) -179 time.sleep(5) -180 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -181 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -182 json_data = get_cfbd_betting_lines( -183 api_key=cfbd_key, -184 season=2020, -185 return_as_dict=True -186 ) -187 print(json_data) -188 -189 else: -190 # Alternatively, if the CFBD API key exists in this python environment, -191 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -192 # you could just call these functions directly, without setting the API key -193 # in the script. -194 print("Using the user's API key suposedly loaded into this python environment for this example.") -195 -196 # Gets all available betting info for the 2020 CFB season. -197 print("Gets all available betting info for the 2020 CFB season.") -198 json_data = get_cfbd_betting_lines( -199 season=2020 -200 ) -201 print(json_data) -202 time.sleep(5) -203 # Gets all available betting info for the 2020 CFB season, in week 2. -204 print("Gets all available betting info for the 2020 CFB season, in week 2.") -205 json_data = get_cfbd_betting_lines( -206 season=2020, -207 week=2 -208 ) -209 print(json_data) -210 time.sleep(5) -211 # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.). -212 print("Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).") -213 json_data = get_cfbd_betting_lines( -214 season=2020, -215 season_type="postseason" -216 ) -217 print(json_data) -218 time.sleep(5) -219 # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season. -220 print("Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.") -221 json_data = get_cfbd_betting_lines( -222 season=2020, -223 team="Cincinnati" -224 ) -225 print(json_data) -226 time.sleep(5) -227 # Gets all betting info for Ohio Bobcats home games the 2020 CFB season. -228 print("Gets all betting info for Ohio Bobcats home games the 2020 CFB season.") -229 json_data = get_cfbd_betting_lines( -230 season=2020, -231 home_team="Ohio" -232 ) -233 print(json_data) -234 time.sleep(5) -235 # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season. -236 print("Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.") -237 json_data = get_cfbd_betting_lines( -238 -239 season=2020, -240 away_team="Ohio State" -241 ) -242 -243 # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season. -244 print("Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.") -245 json_data = get_cfbd_betting_lines( -246 season=2020, -247 conference_abv="ACC" -248 ) -249 print(json_data) -250 time.sleep(5) -251 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -252 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -253 json_data = get_cfbd_betting_lines( -254 season=2020, -255 return_as_dict=True -256 ) -257 print(json_data) -258 + 18 + 19def get_cfbd_betting_lines( + 20 season: int, + 21 api_key: str = None, + 22 api_key_dir: str = None, + 23 game_id: int = None, + 24 week: int = None, + 25 season_type: str = "regular", # "regular" or "postseason" + 26 team: str = None, + 27 home_team: str = None, + 28 away_team: str = None, + 29 conference_abv: str = None, + 30 # cache_data: bool = False, + 31 # cache_dir: str = None, + 32 return_as_dict: bool = False): + 33 """ + 34 Retrives betting information from the CFBD API for a given season, + 35 or you could only get betting information for a single game. + 36 + 37 Parameters + 38 ---------- + 39 + 40 `season` (int, mandatory): + 41 The season you want to retrive betting information from. + 42 + 43 `api_key` (str, optional): + 44 Semi-optional argument. + 45 If `api_key` is null, this function will attempt to load a CFBD API key + 46 from the python environment, or from a file on this computer. + 47 If `api_key` is not null, this function will automatically assume that the + 48 inputted `api_key` is a valid CFBD API key. + 49 + 50 `api_key_dir` (str, optional): + 51 Optional argument. + 52 If `api_key` is set to a string non-empty string, this variable is ignored. + 53 If `api_key_dir` is null, and `api_key` is null, + 54 this function will try to find a CFBD API key file in this user's home directory. + 55 If `api_key_dir` is set to a string, and `api_key` is null, + 56 this function will assume that `api_key_dir` is a directory, + 57 and will try to find a CFBD API key file in that directory. + 58 + 59 `game_id` (int, optional): + 60 Optional argument. + 61 If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get + 62 all betting informaiton for that game ID. + 63 + 64 `week` (int, optional): + 65 Optional argument. + 66 If `week` is set to an integer, this function will attempt + 67 to load betting data from games in that season, and that week. + 68 + 69 `season_type` (str, semi-optional): + 70 Semi-optional argument. + 71 By defualt, this will be set to "regular", for the CFB regular season. + 72 If you want postseason betting data, set `season_type` to "postseason". + 73 If `season_type` is set to anything but "regular" or "postseason", + 74 a `ValueError()` will be raised. + 75 + 76 `team` (str, optional): + 77 Optional argument. + 78 If you only want betting information for a team, + 79 regardless if they are the home/away team, + 80 set `team` to the name of the team you want game-level betting data from. + 81 + 82 `home_team` (str, optional): + 83 Optional argument. + 84 If you only want betting information for a team, + 85 where that team was the home team in this season, + 86 set `home_team` to the name of the team you want game-level betting data from. + 87 + 88 `away_team` (str, optional): + 89 Optional argument. + 90 If you only want betting information for a team, + 91 where that team was the away team in this season, + 92 set `away_team` to the name of the team you want game-level betting data from. + 93 + 94 `conference_abv` (str, optional): + 95 Optional argument. + 96 If you only want betting information from games + 97 involving teams a specific confrence, + 98 set `conference_abv` to the abbreviation + 99 of the conference you want betting informaiton from. +100 +101 `return_as_dict` (bool, semi-optional): +102 Semi-optional argument. +103 If you want this function to return the data as a dictionary (read: JSON object), +104 instead of a pandas `DataFrame` object, +105 set `return_as_dict` to `True`. +106 +107 Usage +108 ---------- +109 ``` +110 import time +111 +112 from cfbd_json_py.betting import get_cfbd_betting_lines +113 +114 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +115 +116 if cfbd_key != "tigersAreAwsome": +117 print("Using the user's API key declared in this script for this example.") +118 +119 # Gets all available betting info for the 2020 CFB season. +120 print("Gets all available betting info for the 2020 CFB season.") +121 json_data = get_cfbd_betting_lines( +122 api_key=cfbd_key, +123 season=2020 +124 ) +125 print(json_data) +126 time.sleep(5) +127 +128 # Gets all available betting info for the 2020 CFB season, in week 2. +129 print("Gets all available betting info for the 2020 CFB season, in week 2.") +130 json_data = get_cfbd_betting_lines( +131 api_key=cfbd_key, +132 season=2020, +133 week=2 +134 ) +135 print(json_data) +136 time.sleep(5) +137 # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.). +138 print("Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).") +139 json_data = get_cfbd_betting_lines( +140 api_key=cfbd_key, +141 season=2020, +142 season_type="postseason" +143 ) +144 print(json_data) +145 time.sleep(5) +146 # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season. +147 print("Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.") +148 json_data = get_cfbd_betting_lines( +149 api_key=cfbd_key, +150 season=2020, +151 team="Cincinnati" +152 ) +153 print(json_data) +154 time.sleep(5) +155 # Gets all betting info for Ohio Bobcats home games the 2020 CFB season. +156 print("Gets all betting info for Ohio Bobcats home games the 2020 CFB season.") +157 json_data = get_cfbd_betting_lines( +158 api_key=cfbd_key, +159 season=2020, +160 home_team="Ohio" +161 ) +162 print(json_data) +163 time.sleep(5) +164 # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season. +165 print("Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.") +166 json_data = get_cfbd_betting_lines( +167 api_key=cfbd_key, +168 season=2020, +169 away_team="Ohio State" +170 ) +171 +172 # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season. +173 print("Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.") +174 json_data = get_cfbd_betting_lines( +175 api_key=cfbd_key, +176 season=2020, +177 conference_abv="ACC" +178 ) +179 print(json_data) +180 time.sleep(5) +181 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +182 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +183 json_data = get_cfbd_betting_lines( +184 api_key=cfbd_key, +185 season=2020, +186 return_as_dict=True +187 ) +188 print(json_data) +189 +190 else: +191 # Alternatively, if the CFBD API key exists in this python environment, +192 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +193 # you could just call these functions directly, without setting the API key +194 # in the script. +195 print("Using the user's API key suposedly loaded into this python environment for this example.") +196 +197 # Gets all available betting info for the 2020 CFB season. +198 print("Gets all available betting info for the 2020 CFB season.") +199 json_data = get_cfbd_betting_lines( +200 season=2020 +201 ) +202 print(json_data) +203 time.sleep(5) +204 # Gets all available betting info for the 2020 CFB season, in week 2. +205 print("Gets all available betting info for the 2020 CFB season, in week 2.") +206 json_data = get_cfbd_betting_lines( +207 season=2020, +208 week=2 +209 ) +210 print(json_data) +211 time.sleep(5) +212 # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.). +213 print("Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).") +214 json_data = get_cfbd_betting_lines( +215 season=2020, +216 season_type="postseason" +217 ) +218 print(json_data) +219 time.sleep(5) +220 # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season. +221 print("Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.") +222 json_data = get_cfbd_betting_lines( +223 season=2020, +224 team="Cincinnati" +225 ) +226 print(json_data) +227 time.sleep(5) +228 # Gets all betting info for Ohio Bobcats home games the 2020 CFB season. +229 print("Gets all betting info for Ohio Bobcats home games the 2020 CFB season.") +230 json_data = get_cfbd_betting_lines( +231 season=2020, +232 home_team="Ohio" +233 ) +234 print(json_data) +235 time.sleep(5) +236 # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season. +237 print("Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.") +238 json_data = get_cfbd_betting_lines( +239 +240 season=2020, +241 away_team="Ohio State" +242 ) +243 +244 # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season. +245 print("Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.") +246 json_data = get_cfbd_betting_lines( +247 season=2020, +248 conference_abv="ACC" +249 ) +250 print(json_data) +251 time.sleep(5) +252 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +253 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +254 json_data = get_cfbd_betting_lines( +255 season=2020, +256 return_as_dict=True +257 ) +258 print(json_data) 259 -260 ``` -261 Returns -262 ---------- -263 A pandas `DataFrame` object with college football betting data, -264 or (if `return_as_dict` is set to `True`) -265 a dictionary object with college football betting data. -266 """ -267 -268 # now = datetime.now() -269 betting_df = pd.DataFrame() -270 row_df = pd.DataFrame() -271 url = "https://api.collegefootballdata.com/lines?" -272 -273 # Input validation -274 ######################################################################################################################################################################################################## -275 if game_id != None and season != None: -276 warnings.warn( -277 "If you are getting betting information for a single game, only set `game_id` to the game ID, and leave `season` as `NULL`.") -278 -279 if season_type == "regular" or season_type == "postseason": -280 url += f"seasonType={season_type}" -281 else: -282 raise ValueError( -283 "`season_type` must be set to either \"regular\" or \"postseason\".") -284 -285 if (game_id == None) and (season == None) and (week != None): -286 raise ValueError( -287 "When setting a value for `week`, `season` cannot be null.") -288 -289 # if cache_data == True and ((team != None) or (home_team != None) or (away_team != None) or (conference_abv != None)): -290 # logging.warning( -291 # "When caching data is enabled for this function, the following inputs are ignored when making the API call:\n-`team`\n-`home_team`\n-`away_team`\n-`conference_abv`") -292 -293 if api_key != None: -294 real_api_key = api_key -295 del api_key -296 else: -297 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -298 -299 if real_api_key == "tigersAreAwsome": -300 raise ValueError( -301 "You actually need to change `cfbd_key` to your CFBD API key.") -302 elif "Bearer " in real_api_key: -303 pass -304 elif "Bearer" in real_api_key: -305 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -306 else: -307 real_api_key = "Bearer " + real_api_key -308 -309 # URL builder -310 ######################################################################################################################################################################################################## -311 -312 if game_id != None: -313 url += f"&gameId={game_id}" -314 -315 if season != None: -316 url += f"&year={season}" -317 -318 if week != None: -319 url += f"&week={week}" -320 -321 if team != None: -322 url += f"&team={team}" -323 -324 if home_team != None: -325 url += f"&home={home_team}" -326 -327 if away_team != None: -328 url += f"&away={away_team}" -329 -330 if conference_abv != None: -331 url += f"&conference={conference_abv}" -332 -333 headers = { -334 'Authorization': f'{real_api_key}', -335 'accept': 'application/json' -336 } -337 -338 response = requests.get(url, headers=headers) -339 time.sleep(0.1) -340 -341 if response.status_code == 200: -342 pass -343 elif response.status_code == 401: -344 raise ConnectionRefusedError( -345 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -346 ) -347 else: -348 raise ConnectionError( -349 f'Could not connect.\nHTTP Status code {response.status_code}' -350 ) -351 -352 json_data = response.json() -353 -354 if return_as_dict == True: -355 return json_data -356 -357 for game in tqdm(json_data): -358 gameId = game['id'] -359 season = game['id'] -360 seasonType = game['seasonType'] -361 startDate = game['startDate'] -362 homeTeam = game['homeTeam'] -363 homeConference = game['homeConference'] -364 homeScore = game['homeScore'] -365 awayTeam = game['awayTeam'] -366 awayConference = game['awayConference'] -367 awayScore = game['awayScore'] -368 -369 for line in game['lines']: -370 row_df = pd.DataFrame( -371 { -372 "game_id": gameId, -373 "season": season, -374 "season_type": seasonType, -375 "start_date": startDate, -376 "home_team": homeTeam, -377 "home_conference": homeConference, -378 "home_score": homeScore, -379 "away_team": awayTeam, -380 "away_conference": awayConference, -381 "away_score": awayScore -382 }, -383 index=[0] -384 ) -385 -386 row_df["line_provider"] = line['provider'] -387 row_df["spread"] = line['spread'] -388 row_df["formatted_spread"] = line['formattedSpread'] -389 row_df["spread_open"] = line['spreadOpen'] -390 row_df["over_under"] = line['overUnder'] -391 row_df["over_under_open"] = line['overUnderOpen'] -392 row_df["home_moneyline"] = line['homeMoneyline'] -393 row_df["away_moneyline"] = line['awayMoneyline'] -394 -395 betting_df = pd.concat([betting_df, row_df], ignore_index=True) -396 del row_df -397 -398 del gameId, seasonType, startDate, homeTeam, \ -399 homeConference, homeScore, awayTeam, \ -400 awayConference, awayScore -401 -402 return betting_df +260 +261 ``` +262 Returns +263 ---------- +264 A pandas `DataFrame` object with college football betting data, +265 or (if `return_as_dict` is set to `True`) +266 a dictionary object with college football betting data. +267 """ +268 +269 # now = datetime.now() +270 betting_df = pd.DataFrame() +271 row_df = pd.DataFrame() +272 url = "https://api.collegefootballdata.com/lines?" +273 +274 # Input validation +275 ######################################################################################################################################################################################################## +276 if game_id != None and season != None: +277 warnings.warn( +278 "If you are getting betting information for a single game, only set `game_id` to the game ID, and leave `season` as `NULL`.") +279 +280 if season_type == "regular" or season_type == "postseason": +281 url += f"seasonType={season_type}" +282 else: +283 raise ValueError( +284 "`season_type` must be set to either \"regular\" or \"postseason\".") +285 +286 if (game_id == None) and (season == None) and (week != None): +287 raise ValueError( +288 "When setting a value for `week`, `season` cannot be null.") +289 +290 # if cache_data == True and ((team != None) or (home_team != None) or (away_team != None) or (conference_abv != None)): +291 # logging.warning( +292 # "When caching data is enabled for this function, the following inputs are ignored when making the API call:\n-`team`\n-`home_team`\n-`away_team`\n-`conference_abv`") +293 +294 if api_key != None: +295 real_api_key = api_key +296 del api_key +297 else: +298 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +299 +300 if real_api_key == "tigersAreAwsome": +301 raise ValueError( +302 "You actually need to change `cfbd_key` to your CFBD API key.") +303 elif "Bearer " in real_api_key: +304 pass +305 elif "Bearer" in real_api_key: +306 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +307 else: +308 real_api_key = "Bearer " + real_api_key +309 +310 # URL builder +311 ######################################################################################################################################################################################################## +312 +313 if game_id != None: +314 url += f"&gameId={game_id}" +315 +316 if season != None: +317 url += f"&year={season}" +318 +319 if week != None: +320 url += f"&week={week}" +321 +322 if team != None: +323 url += f"&team={team}" +324 +325 if home_team != None: +326 url += f"&home={home_team}" +327 +328 if away_team != None: +329 url += f"&away={away_team}" +330 +331 if conference_abv != None: +332 url += f"&conference={conference_abv}" +333 +334 headers = { +335 'Authorization': f'{real_api_key}', +336 'accept': 'application/json' +337 } +338 +339 response = requests.get(url, headers=headers) +340 time.sleep(0.1) +341 +342 if response.status_code == 200: +343 pass +344 elif response.status_code == 401: +345 raise ConnectionRefusedError( +346 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +347 ) +348 else: +349 raise ConnectionError( +350 f'Could not connect.\nHTTP Status code {response.status_code}' +351 ) +352 +353 json_data = response.json() +354 +355 if return_as_dict == True: +356 return json_data +357 +358 for game in tqdm(json_data): +359 gameId = game['id'] +360 season = game['id'] +361 seasonType = game['seasonType'] +362 startDate = game['startDate'] +363 homeTeam = game['homeTeam'] +364 homeConference = game['homeConference'] +365 homeScore = game['homeScore'] +366 awayTeam = game['awayTeam'] +367 awayConference = game['awayConference'] +368 awayScore = game['awayScore'] +369 +370 for line in game['lines']: +371 row_df = pd.DataFrame( +372 { +373 "game_id": gameId, +374 "season": season, +375 "season_type": seasonType, +376 "start_date": startDate, +377 "home_team": homeTeam, +378 "home_conference": homeConference, +379 "home_score": homeScore, +380 "away_team": awayTeam, +381 "away_conference": awayConference, +382 "away_score": awayScore +383 }, +384 index=[0] +385 ) +386 +387 row_df["line_provider"] = line['provider'] +388 row_df["spread"] = line['spread'] +389 row_df["formatted_spread"] = line['formattedSpread'] +390 row_df["spread_open"] = line['spreadOpen'] +391 row_df["over_under"] = line['overUnder'] +392 row_df["over_under_open"] = line['overUnderOpen'] +393 row_df["home_moneyline"] = line['homeMoneyline'] +394 row_df["away_moneyline"] = line['awayMoneyline'] +395 +396 betting_df = pd.concat([betting_df, row_df], ignore_index=True) +397 del row_df +398 +399 del gameId, seasonType, startDate, homeTeam, \ +400 homeConference, homeScore, awayTeam, \ +401 awayConference, awayScore +402 +403 return betting_df
19def get_cfbd_betting_lines( - 20 season: int, - 21 api_key: str = None, - 22 api_key_dir: str = None, - 23 game_id: int = None, - 24 week: int = None, - 25 season_type: str = "regular", # "regular" or "postseason" - 26 team: str = None, - 27 home_team: str = None, - 28 away_team: str = None, - 29 conference_abv: str = None, - 30 # cache_data: bool = False, - 31 # cache_dir: str = None, - 32 return_as_dict: bool = False): - 33 """ - 34 Retrives betting information from the CFBD API for a given season, - 35 or you could only get betting information for a single game. - 36 - 37 Parameters - 38 ---------- - 39 - 40 `season` (int, mandatory): - 41 The season you want to retrive betting information from. - 42 - 43 `api_key` (str, optional): - 44 Semi-optional argument. - 45 If `api_key` is null, this function will attempt to load a CFBD API key - 46 from the python environment, or from a file on this computer. - 47 If `api_key` is not null, this function will automatically assume that the - 48 inputted `api_key` is a valid CFBD API key. - 49 - 50 `api_key_dir` (str, optional): - 51 Optional argument. - 52 If `api_key` is set to a string non-empty string, this variable is ignored. - 53 If `api_key_dir` is null, and `api_key` is null, - 54 this function will try to find a CFBD API key file in this user's home directory. - 55 If `api_key_dir` is set to a string, and `api_key` is null, - 56 this function will assume that `api_key_dir` is a directory, - 57 and will try to find a CFBD API key file in that directory. - 58 - 59 `game_id` (int, optional): - 60 Optional argument. - 61 If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get - 62 all betting informaiton for that game ID. - 63 - 64 `week` (int, optional): - 65 Optional argument. - 66 If `week` is set to an integer, this function will attempt - 67 to load betting data from games in that season, and that week. - 68 - 69 `season_type` (str, semi-optional): - 70 Semi-optional argument. - 71 By defualt, this will be set to "regular", for the CFB regular season. - 72 If you want postseason betting data, set `season_type` to "postseason". - 73 If `season_type` is set to anything but "regular" or "postseason", - 74 a `ValueError()` will be raised. - 75 - 76 `team` (str, optional): - 77 Optional argument. - 78 If you only want betting information for a team, - 79 regardless if they are the home/away team, - 80 set `team` to the name of the team you want game-level betting data from. - 81 - 82 `home_team` (str, optional): - 83 Optional argument. - 84 If you only want betting information for a team, - 85 where that team was the home team in this season, - 86 set `home_team` to the name of the team you want game-level betting data from. - 87 - 88 `away_team` (str, optional): - 89 Optional argument. - 90 If you only want betting information for a team, - 91 where that team was the away team in this season, - 92 set `away_team` to the name of the team you want game-level betting data from. - 93 - 94 `conference_abv` (str, optional): - 95 Optional argument. - 96 If you only want betting information from games - 97 involving teams a specific confrence, - 98 set `conference_abv` to the abbreviation - 99 of the conference you want betting informaiton from. -100 -101 `return_as_dict` (bool, semi-optional): -102 Semi-optional argument. -103 If you want this function to return the data as a dictionary (read: JSON object), -104 instead of a pandas `DataFrame` object, -105 set `return_as_dict` to `True`. -106 -107 Usage -108 ---------- -109 ``` -110 import time -111 -112 from cfbd_json_py.betting import get_cfbd_betting_lines -113 -114 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. -115 -116 if cfbd_key != "tigersAreAwsome": -117 print("Using the user's API key declared in this script for this example.") -118 -119 # Gets all available betting info for the 2020 CFB season. -120 print("Gets all available betting info for the 2020 CFB season.") -121 json_data = get_cfbd_betting_lines( -122 api_key=cfbd_key, -123 season=2020 -124 ) -125 print(json_data) -126 time.sleep(5) -127 -128 # Gets all available betting info for the 2020 CFB season, in week 2. -129 print("Gets all available betting info for the 2020 CFB season, in week 2.") -130 json_data = get_cfbd_betting_lines( -131 api_key=cfbd_key, -132 season=2020, -133 week=2 -134 ) -135 print(json_data) -136 time.sleep(5) -137 # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.). -138 print("Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).") -139 json_data = get_cfbd_betting_lines( -140 api_key=cfbd_key, -141 season=2020, -142 season_type="postseason" -143 ) -144 print(json_data) -145 time.sleep(5) -146 # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season. -147 print("Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.") -148 json_data = get_cfbd_betting_lines( -149 api_key=cfbd_key, -150 season=2020, -151 team="Cincinnati" -152 ) -153 print(json_data) -154 time.sleep(5) -155 # Gets all betting info for Ohio Bobcats home games the 2020 CFB season. -156 print("Gets all betting info for Ohio Bobcats home games the 2020 CFB season.") -157 json_data = get_cfbd_betting_lines( -158 api_key=cfbd_key, -159 season=2020, -160 home_team="Ohio" -161 ) -162 print(json_data) -163 time.sleep(5) -164 # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season. -165 print("Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.") -166 json_data = get_cfbd_betting_lines( -167 api_key=cfbd_key, -168 season=2020, -169 away_team="Ohio State" -170 ) -171 -172 # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season. -173 print("Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.") -174 json_data = get_cfbd_betting_lines( -175 api_key=cfbd_key, -176 season=2020, -177 conference_abv="ACC" -178 ) -179 print(json_data) -180 time.sleep(5) -181 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -182 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -183 json_data = get_cfbd_betting_lines( -184 api_key=cfbd_key, -185 season=2020, -186 return_as_dict=True -187 ) -188 print(json_data) -189 -190 else: -191 # Alternatively, if the CFBD API key exists in this python environment, -192 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -193 # you could just call these functions directly, without setting the API key -194 # in the script. -195 print("Using the user's API key suposedly loaded into this python environment for this example.") -196 -197 # Gets all available betting info for the 2020 CFB season. -198 print("Gets all available betting info for the 2020 CFB season.") -199 json_data = get_cfbd_betting_lines( -200 season=2020 -201 ) -202 print(json_data) -203 time.sleep(5) -204 # Gets all available betting info for the 2020 CFB season, in week 2. -205 print("Gets all available betting info for the 2020 CFB season, in week 2.") -206 json_data = get_cfbd_betting_lines( -207 season=2020, -208 week=2 -209 ) -210 print(json_data) -211 time.sleep(5) -212 # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.). -213 print("Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).") -214 json_data = get_cfbd_betting_lines( -215 season=2020, -216 season_type="postseason" -217 ) -218 print(json_data) -219 time.sleep(5) -220 # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season. -221 print("Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.") -222 json_data = get_cfbd_betting_lines( -223 season=2020, -224 team="Cincinnati" -225 ) -226 print(json_data) -227 time.sleep(5) -228 # Gets all betting info for Ohio Bobcats home games the 2020 CFB season. -229 print("Gets all betting info for Ohio Bobcats home games the 2020 CFB season.") -230 json_data = get_cfbd_betting_lines( -231 season=2020, -232 home_team="Ohio" -233 ) -234 print(json_data) -235 time.sleep(5) -236 # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season. -237 print("Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.") -238 json_data = get_cfbd_betting_lines( -239 -240 season=2020, -241 away_team="Ohio State" -242 ) -243 -244 # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season. -245 print("Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.") -246 json_data = get_cfbd_betting_lines( -247 season=2020, -248 conference_abv="ACC" -249 ) -250 print(json_data) -251 time.sleep(5) -252 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -253 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -254 json_data = get_cfbd_betting_lines( -255 season=2020, -256 return_as_dict=True -257 ) -258 print(json_data) -259 +diff --git a/docs/cfbd_json_py/coaches.html b/docs/cfbd_json_py/coaches.html index 9f35510..960b0eb 100644 --- a/docs/cfbd_json_py/coaches.html +++ b/docs/cfbd_json_py/coaches.html @@ -55,400 +55,401 @@20def get_cfbd_betting_lines( + 21 season: int, + 22 api_key: str = None, + 23 api_key_dir: str = None, + 24 game_id: int = None, + 25 week: int = None, + 26 season_type: str = "regular", # "regular" or "postseason" + 27 team: str = None, + 28 home_team: str = None, + 29 away_team: str = None, + 30 conference_abv: str = None, + 31 # cache_data: bool = False, + 32 # cache_dir: str = None, + 33 return_as_dict: bool = False): + 34 """ + 35 Retrives betting information from the CFBD API for a given season, + 36 or you could only get betting information for a single game. + 37 + 38 Parameters + 39 ---------- + 40 + 41 `season` (int, mandatory): + 42 The season you want to retrive betting information from. + 43 + 44 `api_key` (str, optional): + 45 Semi-optional argument. + 46 If `api_key` is null, this function will attempt to load a CFBD API key + 47 from the python environment, or from a file on this computer. + 48 If `api_key` is not null, this function will automatically assume that the + 49 inputted `api_key` is a valid CFBD API key. + 50 + 51 `api_key_dir` (str, optional): + 52 Optional argument. + 53 If `api_key` is set to a string non-empty string, this variable is ignored. + 54 If `api_key_dir` is null, and `api_key` is null, + 55 this function will try to find a CFBD API key file in this user's home directory. + 56 If `api_key_dir` is set to a string, and `api_key` is null, + 57 this function will assume that `api_key_dir` is a directory, + 58 and will try to find a CFBD API key file in that directory. + 59 + 60 `game_id` (int, optional): + 61 Optional argument. + 62 If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get + 63 all betting informaiton for that game ID. + 64 + 65 `week` (int, optional): + 66 Optional argument. + 67 If `week` is set to an integer, this function will attempt + 68 to load betting data from games in that season, and that week. + 69 + 70 `season_type` (str, semi-optional): + 71 Semi-optional argument. + 72 By defualt, this will be set to "regular", for the CFB regular season. + 73 If you want postseason betting data, set `season_type` to "postseason". + 74 If `season_type` is set to anything but "regular" or "postseason", + 75 a `ValueError()` will be raised. + 76 + 77 `team` (str, optional): + 78 Optional argument. + 79 If you only want betting information for a team, + 80 regardless if they are the home/away team, + 81 set `team` to the name of the team you want game-level betting data from. + 82 + 83 `home_team` (str, optional): + 84 Optional argument. + 85 If you only want betting information for a team, + 86 where that team was the home team in this season, + 87 set `home_team` to the name of the team you want game-level betting data from. + 88 + 89 `away_team` (str, optional): + 90 Optional argument. + 91 If you only want betting information for a team, + 92 where that team was the away team in this season, + 93 set `away_team` to the name of the team you want game-level betting data from. + 94 + 95 `conference_abv` (str, optional): + 96 Optional argument. + 97 If you only want betting information from games + 98 involving teams a specific confrence, + 99 set `conference_abv` to the abbreviation +100 of the conference you want betting informaiton from. +101 +102 `return_as_dict` (bool, semi-optional): +103 Semi-optional argument. +104 If you want this function to return the data as a dictionary (read: JSON object), +105 instead of a pandas `DataFrame` object, +106 set `return_as_dict` to `True`. +107 +108 Usage +109 ---------- +110 ``` +111 import time +112 +113 from cfbd_json_py.betting import get_cfbd_betting_lines +114 +115 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +116 +117 if cfbd_key != "tigersAreAwsome": +118 print("Using the user's API key declared in this script for this example.") +119 +120 # Gets all available betting info for the 2020 CFB season. +121 print("Gets all available betting info for the 2020 CFB season.") +122 json_data = get_cfbd_betting_lines( +123 api_key=cfbd_key, +124 season=2020 +125 ) +126 print(json_data) +127 time.sleep(5) +128 +129 # Gets all available betting info for the 2020 CFB season, in week 2. +130 print("Gets all available betting info for the 2020 CFB season, in week 2.") +131 json_data = get_cfbd_betting_lines( +132 api_key=cfbd_key, +133 season=2020, +134 week=2 +135 ) +136 print(json_data) +137 time.sleep(5) +138 # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.). +139 print("Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).") +140 json_data = get_cfbd_betting_lines( +141 api_key=cfbd_key, +142 season=2020, +143 season_type="postseason" +144 ) +145 print(json_data) +146 time.sleep(5) +147 # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season. +148 print("Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.") +149 json_data = get_cfbd_betting_lines( +150 api_key=cfbd_key, +151 season=2020, +152 team="Cincinnati" +153 ) +154 print(json_data) +155 time.sleep(5) +156 # Gets all betting info for Ohio Bobcats home games the 2020 CFB season. +157 print("Gets all betting info for Ohio Bobcats home games the 2020 CFB season.") +158 json_data = get_cfbd_betting_lines( +159 api_key=cfbd_key, +160 season=2020, +161 home_team="Ohio" +162 ) +163 print(json_data) +164 time.sleep(5) +165 # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season. +166 print("Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.") +167 json_data = get_cfbd_betting_lines( +168 api_key=cfbd_key, +169 season=2020, +170 away_team="Ohio State" +171 ) +172 +173 # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season. +174 print("Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.") +175 json_data = get_cfbd_betting_lines( +176 api_key=cfbd_key, +177 season=2020, +178 conference_abv="ACC" +179 ) +180 print(json_data) +181 time.sleep(5) +182 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +183 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +184 json_data = get_cfbd_betting_lines( +185 api_key=cfbd_key, +186 season=2020, +187 return_as_dict=True +188 ) +189 print(json_data) +190 +191 else: +192 # Alternatively, if the CFBD API key exists in this python environment, +193 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +194 # you could just call these functions directly, without setting the API key +195 # in the script. +196 print("Using the user's API key suposedly loaded into this python environment for this example.") +197 +198 # Gets all available betting info for the 2020 CFB season. +199 print("Gets all available betting info for the 2020 CFB season.") +200 json_data = get_cfbd_betting_lines( +201 season=2020 +202 ) +203 print(json_data) +204 time.sleep(5) +205 # Gets all available betting info for the 2020 CFB season, in week 2. +206 print("Gets all available betting info for the 2020 CFB season, in week 2.") +207 json_data = get_cfbd_betting_lines( +208 season=2020, +209 week=2 +210 ) +211 print(json_data) +212 time.sleep(5) +213 # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.). +214 print("Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).") +215 json_data = get_cfbd_betting_lines( +216 season=2020, +217 season_type="postseason" +218 ) +219 print(json_data) +220 time.sleep(5) +221 # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season. +222 print("Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.") +223 json_data = get_cfbd_betting_lines( +224 season=2020, +225 team="Cincinnati" +226 ) +227 print(json_data) +228 time.sleep(5) +229 # Gets all betting info for Ohio Bobcats home games the 2020 CFB season. +230 print("Gets all betting info for Ohio Bobcats home games the 2020 CFB season.") +231 json_data = get_cfbd_betting_lines( +232 season=2020, +233 home_team="Ohio" +234 ) +235 print(json_data) +236 time.sleep(5) +237 # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season. +238 print("Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.") +239 json_data = get_cfbd_betting_lines( +240 +241 season=2020, +242 away_team="Ohio State" +243 ) +244 +245 # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season. +246 print("Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.") +247 json_data = get_cfbd_betting_lines( +248 season=2020, +249 conference_abv="ACC" +250 ) +251 print(json_data) +252 time.sleep(5) +253 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +254 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +255 json_data = get_cfbd_betting_lines( +256 season=2020, +257 return_as_dict=True +258 ) +259 print(json_data) 260 -261 ``` -262 Returns -263 ---------- -264 A pandas `DataFrame` object with college football betting data, -265 or (if `return_as_dict` is set to `True`) -266 a dictionary object with college football betting data. -267 """ -268 -269 # now = datetime.now() -270 betting_df = pd.DataFrame() -271 row_df = pd.DataFrame() -272 url = "https://api.collegefootballdata.com/lines?" -273 -274 # Input validation -275 ######################################################################################################################################################################################################## -276 if game_id != None and season != None: -277 warnings.warn( -278 "If you are getting betting information for a single game, only set `game_id` to the game ID, and leave `season` as `NULL`.") -279 -280 if season_type == "regular" or season_type == "postseason": -281 url += f"seasonType={season_type}" -282 else: -283 raise ValueError( -284 "`season_type` must be set to either \"regular\" or \"postseason\".") -285 -286 if (game_id == None) and (season == None) and (week != None): -287 raise ValueError( -288 "When setting a value for `week`, `season` cannot be null.") -289 -290 # if cache_data == True and ((team != None) or (home_team != None) or (away_team != None) or (conference_abv != None)): -291 # logging.warning( -292 # "When caching data is enabled for this function, the following inputs are ignored when making the API call:\n-`team`\n-`home_team`\n-`away_team`\n-`conference_abv`") -293 -294 if api_key != None: -295 real_api_key = api_key -296 del api_key -297 else: -298 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -299 -300 if real_api_key == "tigersAreAwsome": -301 raise ValueError( -302 "You actually need to change `cfbd_key` to your CFBD API key.") -303 elif "Bearer " in real_api_key: -304 pass -305 elif "Bearer" in real_api_key: -306 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -307 else: -308 real_api_key = "Bearer " + real_api_key -309 -310 # URL builder -311 ######################################################################################################################################################################################################## -312 -313 if game_id != None: -314 url += f"&gameId={game_id}" -315 -316 if season != None: -317 url += f"&year={season}" -318 -319 if week != None: -320 url += f"&week={week}" -321 -322 if team != None: -323 url += f"&team={team}" -324 -325 if home_team != None: -326 url += f"&home={home_team}" -327 -328 if away_team != None: -329 url += f"&away={away_team}" -330 -331 if conference_abv != None: -332 url += f"&conference={conference_abv}" -333 -334 headers = { -335 'Authorization': f'{real_api_key}', -336 'accept': 'application/json' -337 } -338 -339 response = requests.get(url, headers=headers) -340 time.sleep(0.1) -341 -342 if response.status_code == 200: -343 pass -344 elif response.status_code == 401: -345 raise ConnectionRefusedError( -346 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -347 ) -348 else: -349 raise ConnectionError( -350 f'Could not connect.\nHTTP Status code {response.status_code}' -351 ) -352 -353 json_data = response.json() -354 -355 if return_as_dict == True: -356 return json_data -357 -358 for game in tqdm(json_data): -359 gameId = game['id'] -360 season = game['id'] -361 seasonType = game['seasonType'] -362 startDate = game['startDate'] -363 homeTeam = game['homeTeam'] -364 homeConference = game['homeConference'] -365 homeScore = game['homeScore'] -366 awayTeam = game['awayTeam'] -367 awayConference = game['awayConference'] -368 awayScore = game['awayScore'] -369 -370 for line in game['lines']: -371 row_df = pd.DataFrame( -372 { -373 "game_id": gameId, -374 "season": season, -375 "season_type": seasonType, -376 "start_date": startDate, -377 "home_team": homeTeam, -378 "home_conference": homeConference, -379 "home_score": homeScore, -380 "away_team": awayTeam, -381 "away_conference": awayConference, -382 "away_score": awayScore -383 }, -384 index=[0] -385 ) -386 -387 row_df["line_provider"] = line['provider'] -388 row_df["spread"] = line['spread'] -389 row_df["formatted_spread"] = line['formattedSpread'] -390 row_df["spread_open"] = line['spreadOpen'] -391 row_df["over_under"] = line['overUnder'] -392 row_df["over_under_open"] = line['overUnderOpen'] -393 row_df["home_moneyline"] = line['homeMoneyline'] -394 row_df["away_moneyline"] = line['awayMoneyline'] -395 -396 betting_df = pd.concat([betting_df, row_df], ignore_index=True) -397 del row_df -398 -399 del gameId, seasonType, startDate, homeTeam, \ -400 homeConference, homeScore, awayTeam, \ -401 awayConference, awayScore -402 -403 return betting_df +261 +262 ``` +263 Returns +264 ---------- +265 A pandas `DataFrame` object with college football betting data, +266 or (if `return_as_dict` is set to `True`) +267 a dictionary object with college football betting data. +268 """ +269 +270 # now = datetime.now() +271 betting_df = pd.DataFrame() +272 row_df = pd.DataFrame() +273 url = "https://api.collegefootballdata.com/lines?" +274 +275 # Input validation +276 ######################################################################################################################################################################################################## +277 if game_id != None and season != None: +278 warnings.warn( +279 "If you are getting betting information for a single game, only set `game_id` to the game ID, and leave `season` as `NULL`.") +280 +281 if season_type == "regular" or season_type == "postseason": +282 url += f"seasonType={season_type}" +283 else: +284 raise ValueError( +285 "`season_type` must be set to either \"regular\" or \"postseason\".") +286 +287 if (game_id == None) and (season == None) and (week != None): +288 raise ValueError( +289 "When setting a value for `week`, `season` cannot be null.") +290 +291 # if cache_data == True and ((team != None) or (home_team != None) or (away_team != None) or (conference_abv != None)): +292 # logging.warning( +293 # "When caching data is enabled for this function, the following inputs are ignored when making the API call:\n-`team`\n-`home_team`\n-`away_team`\n-`conference_abv`") +294 +295 if api_key != None: +296 real_api_key = api_key +297 del api_key +298 else: +299 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +300 +301 if real_api_key == "tigersAreAwsome": +302 raise ValueError( +303 "You actually need to change `cfbd_key` to your CFBD API key.") +304 elif "Bearer " in real_api_key: +305 pass +306 elif "Bearer" in real_api_key: +307 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +308 else: +309 real_api_key = "Bearer " + real_api_key +310 +311 # URL builder +312 ######################################################################################################################################################################################################## +313 +314 if game_id != None: +315 url += f"&gameId={game_id}" +316 +317 if season != None: +318 url += f"&year={season}" +319 +320 if week != None: +321 url += f"&week={week}" +322 +323 if team != None: +324 url += f"&team={team}" +325 +326 if home_team != None: +327 url += f"&home={home_team}" +328 +329 if away_team != None: +330 url += f"&away={away_team}" +331 +332 if conference_abv != None: +333 url += f"&conference={conference_abv}" +334 +335 headers = { +336 'Authorization': f'{real_api_key}', +337 'accept': 'application/json' +338 } +339 +340 response = requests.get(url, headers=headers) +341 time.sleep(0.1) +342 +343 if response.status_code == 200: +344 pass +345 elif response.status_code == 401: +346 raise ConnectionRefusedError( +347 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +348 ) +349 else: +350 raise ConnectionError( +351 f'Could not connect.\nHTTP Status code {response.status_code}' +352 ) +353 +354 json_data = response.json() +355 +356 if return_as_dict == True: +357 return json_data +358 +359 for game in tqdm(json_data): +360 gameId = game['id'] +361 season = game['id'] +362 seasonType = game['seasonType'] +363 startDate = game['startDate'] +364 homeTeam = game['homeTeam'] +365 homeConference = game['homeConference'] +366 homeScore = game['homeScore'] +367 awayTeam = game['awayTeam'] +368 awayConference = game['awayConference'] +369 awayScore = game['awayScore'] +370 +371 for line in game['lines']: +372 row_df = pd.DataFrame( +373 { +374 "game_id": gameId, +375 "season": season, +376 "season_type": seasonType, +377 "start_date": startDate, +378 "home_team": homeTeam, +379 "home_conference": homeConference, +380 "home_score": homeScore, +381 "away_team": awayTeam, +382 "away_conference": awayConference, +383 "away_score": awayScore +384 }, +385 index=[0] +386 ) +387 +388 row_df["line_provider"] = line['provider'] +389 row_df["spread"] = line['spread'] +390 row_df["formatted_spread"] = line['formattedSpread'] +391 row_df["spread_open"] = line['spreadOpen'] +392 row_df["over_under"] = line['overUnder'] +393 row_df["over_under_open"] = line['overUnderOpen'] +394 row_df["home_moneyline"] = line['homeMoneyline'] +395 row_df["away_moneyline"] = line['awayMoneyline'] +396 +397 betting_df = pd.concat([betting_df, row_df], ignore_index=True) +398 del row_df +399 +400 del gameId, seasonType, startDate, homeTeam, \ +401 homeConference, homeScore, awayTeam, \ +402 awayConference, awayScore +403 +404 return betting_df
@@ -464,385 +465,385 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: coaches.py - 4# Purpose: Houses functions pertaining to coaching data within the CFBD API. - 5#################################################################################################### - 6 - 7import logging - 8import time - 9 - 10import pandas as pd - 11import requests - 12from tqdm import tqdm - 13 - 14from cfbd_json_py.utls import get_cfbd_api_token - 15 + 2# Last Updated Date: 10/09/2023 08:00 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: coaches.py + 5# Purpose: Houses functions pertaining to coaching data within the CFBD API. + 6#################################################################################################### + 7 + 8import logging + 9import time + 10 + 11import pandas as pd + 12import requests + 13from tqdm import tqdm + 14 + 15from cfbd_json_py.utls import get_cfbd_api_token 16 - 17def get_cfbd_coaches_info( - 18 api_key: str = None, - 19 api_key_dir: str = None, - 20 first_name: str = None, - 21 last_name: str = None, - 22 team: str = None, - 23 season: int = None, - 24 min_season: int = None, - 25 max_season: int = None, - 26 - 27 return_as_dict: bool = False): - 28 """ - 29 Retrives information from the CFBD API on CFB Head Coaches. - 30 - 31 Parameters - 32 ---------- - 33 `api_key` (str, optional): - 34 Semi-optional argument. - 35 If `api_key` is null, this function will attempt to load a CFBD API key - 36 from the python environment, or from a file on this computer. - 37 If `api_key` is not null, this function will automatically assume that the - 38 inputted `api_key` is a valid CFBD API key. - 39 - 40 `api_key_dir` (str, optional): - 41 Optional argument. - 42 If `api_key` is set to a string non-empty string, this variable is ignored. - 43 If `api_key_dir` is null, and `api_key` is null, - 44 this function will try to find a CFBD API key file in this user's home directory. - 45 If `api_key_dir` is set to a string, and `api_key` is null, - 46 this function will assume that `api_key_dir` is a directory, - 47 and will try to find a CFBD API key file in that directory. - 48 - 49 `first_name` (str, optional): - 50 Optional argument. - 51 If you want to only look up coaches with a specific first name, - 52 set this variable to that specific first name, and this function - 53 will attempt to look up coaches with that specific first name. - 54 - 55 `last_name` (str, optional): - 56 Optional argument. - 57 If you want to only look up coaches with a specific last name, - 58 set this variable to that specific first name, and this function - 59 will attempt to look up coaches with that specific last name. - 60 - 61 `team` (str, optional): - 62 Optional argument. - 63 If you want to filter and drill down to coaches who coached a specific - 64 CFB team, set this - 65 - 66 `season` (int, optional): - 67 Optional argument. - 68 If you only want coaches from a specific season, set this variable to that season. - 69 - 70 `min_season` (int, optional): - 71 Optional argument. - 72 Similar to `year`, but used in tandem with `max_season` to get coaches who coached with in a range of seasons. - 73 - 74 `max_season` (int, optional): - 75 Optional argument. - 76 Similar to `year`, but used in tandem with `min_season` to get coaches who coached with in a range of seasons. - 77 - 78 `return_as_dict` (bool, semi-optional): - 79 Semi-optional argument. - 80 If you want this function to return the data as a dictionary (read: JSON object), - 81 instead of a pandas `DataFrame` object, - 82 set `return_as_dict` to `True`. - 83 - 84 Usage - 85 ---------- - 86 ``` - 87 import time - 88 - 89 from cfbd_json_py.coaches import get_cfbd_coaches_info - 90 - 91 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. - 92 - 93 if cfbd_key != "tigersAreAwsome": - 94 print("Using the user's API key declared in this script for this example.") - 95 - 96 # Getting all coaches in the 2020 CFB season - 97 print("Getting every coach in the 2020 CFB season.") - 98 json_data = get_cfbd_coaches_info( - 99 api_key=cfbd_key, -100 season=2020 -101 ) -102 print(f"{json_data}") -103 time.sleep(5) -104 -105 # Getting all coaches in the 2020 CFB season, with a first name of "Luke" -106 print("Getting every coach in the 2020 CFB season, with a first name of \"Luke\".") -107 json_data = get_cfbd_coaches_info( -108 api_key=cfbd_key, -109 season=2020, -110 first_name="Luke" -111 ) -112 print(f"{json_data}") -113 time.sleep(5) -114 + 17 + 18def get_cfbd_coaches_info( + 19 api_key: str = None, + 20 api_key_dir: str = None, + 21 first_name: str = None, + 22 last_name: str = None, + 23 team: str = None, + 24 season: int = None, + 25 min_season: int = None, + 26 max_season: int = None, + 27 + 28 return_as_dict: bool = False): + 29 """ + 30 Retrives information from the CFBD API on CFB Head Coaches. + 31 + 32 Parameters + 33 ---------- + 34 `api_key` (str, optional): + 35 Semi-optional argument. + 36 If `api_key` is null, this function will attempt to load a CFBD API key + 37 from the python environment, or from a file on this computer. + 38 If `api_key` is not null, this function will automatically assume that the + 39 inputted `api_key` is a valid CFBD API key. + 40 + 41 `api_key_dir` (str, optional): + 42 Optional argument. + 43 If `api_key` is set to a string non-empty string, this variable is ignored. + 44 If `api_key_dir` is null, and `api_key` is null, + 45 this function will try to find a CFBD API key file in this user's home directory. + 46 If `api_key_dir` is set to a string, and `api_key` is null, + 47 this function will assume that `api_key_dir` is a directory, + 48 and will try to find a CFBD API key file in that directory. + 49 + 50 `first_name` (str, optional): + 51 Optional argument. + 52 If you want to only look up coaches with a specific first name, + 53 set this variable to that specific first name, and this function + 54 will attempt to look up coaches with that specific first name. + 55 + 56 `last_name` (str, optional): + 57 Optional argument. + 58 If you want to only look up coaches with a specific last name, + 59 set this variable to that specific first name, and this function + 60 will attempt to look up coaches with that specific last name. + 61 + 62 `team` (str, optional): + 63 Optional argument. + 64 If you want to filter and drill down to coaches who coached a specific + 65 CFB team, set this + 66 + 67 `season` (int, optional): + 68 Optional argument. + 69 If you only want coaches from a specific season, set this variable to that season. + 70 + 71 `min_season` (int, optional): + 72 Optional argument. + 73 Similar to `year`, but used in tandem with `max_season` to get coaches who coached with in a range of seasons. + 74 + 75 `max_season` (int, optional): + 76 Optional argument. + 77 Similar to `year`, but used in tandem with `min_season` to get coaches who coached with in a range of seasons. + 78 + 79 `return_as_dict` (bool, semi-optional): + 80 Semi-optional argument. + 81 If you want this function to return the data as a dictionary (read: JSON object), + 82 instead of a pandas `DataFrame` object, + 83 set `return_as_dict` to `True`. + 84 + 85 Usage + 86 ---------- + 87 ``` + 88 import time + 89 + 90 from cfbd_json_py.coaches import get_cfbd_coaches_info + 91 + 92 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 93 + 94 if cfbd_key != "tigersAreAwsome": + 95 print("Using the user's API key declared in this script for this example.") + 96 + 97 # Getting all coaches in the 2020 CFB season + 98 print("Getting every coach in the 2020 CFB season.") + 99 json_data = get_cfbd_coaches_info( +100 api_key=cfbd_key, +101 season=2020 +102 ) +103 print(f"{json_data}") +104 time.sleep(5) +105 +106 # Getting all coaches in the 2020 CFB season, with a first name of "Luke" +107 print("Getting every coach in the 2020 CFB season, with a first name of \"Luke\".") +108 json_data = get_cfbd_coaches_info( +109 api_key=cfbd_key, +110 season=2020, +111 first_name="Luke" +112 ) +113 print(f"{json_data}") +114 time.sleep(5) 115 -116 # Getting all coaches in the 2020 CFB season, with a last name of "Day" -117 print("Getting all coaches in the 2020 CFB season, with a last name of \"Day\".") -118 json_data = get_cfbd_coaches_info( -119 api_key=cfbd_key, -120 season=2020, -121 last_name="Day" -122 ) -123 print(f"{json_data}") -124 time.sleep(5) -125 +116 +117 # Getting all coaches in the 2020 CFB season, with a last name of "Day" +118 print("Getting all coaches in the 2020 CFB season, with a last name of \"Day\".") +119 json_data = get_cfbd_coaches_info( +120 api_key=cfbd_key, +121 season=2020, +122 last_name="Day" +123 ) +124 print(f"{json_data}") +125 time.sleep(5) 126 -127 # Getting every head coach for the 2020 Southern Mississippi Golden Eagles -128 print("Getting every head coach for the 2020 Southern Mississippi Golden Eagles.") -129 json_data = get_cfbd_coaches_info( -130 api_key=cfbd_key, -131 season=2020, -132 team="Southern Mississippi" -133 ) -134 print(f"{json_data}") -135 time.sleep(5) -136 +127 +128 # Getting every head coach for the 2020 Southern Mississippi Golden Eagles +129 print("Getting every head coach for the 2020 Southern Mississippi Golden Eagles.") +130 json_data = get_cfbd_coaches_info( +131 api_key=cfbd_key, +132 season=2020, +133 team="Southern Mississippi" +134 ) +135 print(f"{json_data}") +136 time.sleep(5) 137 -138 # Getting every head coach between the 2019 and 2022 CFB seasons -139 print("Getting every head coach between the 2019 and 2022 CFB seasons") -140 json_data = get_cfbd_coaches_info( -141 api_key=cfbd_key, -142 min_season=2019, -143 max_season=2022 -144 ) -145 print(f"{json_data}") -146 time.sleep(5) -147 +138 +139 # Getting every head coach between the 2019 and 2022 CFB seasons +140 print("Getting every head coach between the 2019 and 2022 CFB seasons") +141 json_data = get_cfbd_coaches_info( +142 api_key=cfbd_key, +143 min_season=2019, +144 max_season=2022 +145 ) +146 print(f"{json_data}") +147 time.sleep(5) 148 -149 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -150 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -151 json_data = get_cfbd_coaches_info( -152 api_key=cfbd_key, -153 season=2022, -154 team="Cincinnati", -155 return_as_dict=True -156 ) -157 print(f"{json_data}") -158 -159 else: -160 # Alternatively, if the CFBD API key exists in this python environment, -161 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -162 # you could just call these functions directly, without setting the API key -163 # in the script. -164 print("Using the user's API key suposedly loaded into this python environment for this example.") -165 -166 # Getting every coach in the 2020 CFB season. -167 print("Getting every coach in the 2020 CFB season.") -168 json_data = get_cfbd_coaches_info(season=2020) -169 print(f"{json_data}") -170 time.sleep(5) -171 +149 +150 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +151 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +152 json_data = get_cfbd_coaches_info( +153 api_key=cfbd_key, +154 season=2022, +155 team="Cincinnati", +156 return_as_dict=True +157 ) +158 print(f"{json_data}") +159 +160 else: +161 # Alternatively, if the CFBD API key exists in this python environment, +162 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +163 # you could just call these functions directly, without setting the API key +164 # in the script. +165 print("Using the user's API key suposedly loaded into this python environment for this example.") +166 +167 # Getting every coach in the 2020 CFB season. +168 print("Getting every coach in the 2020 CFB season.") +169 json_data = get_cfbd_coaches_info(season=2020) +170 print(f"{json_data}") +171 time.sleep(5) 172 -173 # Getting every coach in the 2020 CFB season, with a first name of "Luke". -174 print("Getting every coach in the 2020 CFB season, with a first name of \"Luke\".") -175 json_data = get_cfbd_coaches_info( -176 season=2020, -177 first_name="Luke" -178 ) -179 print(f"{json_data}") -180 time.sleep(5) -181 +173 +174 # Getting every coach in the 2020 CFB season, with a first name of "Luke". +175 print("Getting every coach in the 2020 CFB season, with a first name of \"Luke\".") +176 json_data = get_cfbd_coaches_info( +177 season=2020, +178 first_name="Luke" +179 ) +180 print(f"{json_data}") +181 time.sleep(5) 182 -183 # Getting every coach in the 2020 CFB season, with a last name of "Day". -184 print("Getting every coach in the 2020 CFB season, with a last name of \"Day\".") -185 json_data = get_cfbd_coaches_info( -186 season=2020, -187 last_name="Day" -188 ) -189 print(f"{json_data}") -190 time.sleep(5) -191 +183 +184 # Getting every coach in the 2020 CFB season, with a last name of "Day". +185 print("Getting every coach in the 2020 CFB season, with a last name of \"Day\".") +186 json_data = get_cfbd_coaches_info( +187 season=2020, +188 last_name="Day" +189 ) +190 print(f"{json_data}") +191 time.sleep(5) 192 -193 # Getting every head coach for the 2020 Southern Mississippi Golden Eagles. -194 print("Getting every head coach for the 2020 Southern Mississippi Golden Eagles.") -195 json_data = get_cfbd_coaches_info( -196 season=2020, -197 team="Southern Mississippi" -198 ) -199 print(f"{json_data}") -200 time.sleep(5) -201 +193 +194 # Getting every head coach for the 2020 Southern Mississippi Golden Eagles. +195 print("Getting every head coach for the 2020 Southern Mississippi Golden Eagles.") +196 json_data = get_cfbd_coaches_info( +197 season=2020, +198 team="Southern Mississippi" +199 ) +200 print(f"{json_data}") +201 time.sleep(5) 202 -203 # Getting every head coach between the 2019 and 2022 CFB seasons. -204 print("Getting every head coach between the 2019 and 2022 CFB seasons.") -205 json_data = get_cfbd_coaches_info( -206 min_season=2019, -207 max_season=2022 -208 ) -209 print(f"{json_data}") -210 time.sleep(5) -211 +203 +204 # Getting every head coach between the 2019 and 2022 CFB seasons. +205 print("Getting every head coach between the 2019 and 2022 CFB seasons.") +206 json_data = get_cfbd_coaches_info( +207 min_season=2019, +208 max_season=2022 +209 ) +210 print(f"{json_data}") +211 time.sleep(5) 212 -213 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -214 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -215 json_data = get_cfbd_coaches_info( -216 season=2022, -217 team="Cincinnati", -218 return_as_dict=True -219 ) -220 print(f"{json_data}") -221 +213 +214 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +215 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +216 json_data = get_cfbd_coaches_info( +217 season=2022, +218 team="Cincinnati", +219 return_as_dict=True +220 ) +221 print(f"{json_data}") 222 -223 ``` -224 Returns -225 ---------- -226 A pandas `DataFrame` object with CFB head coach data, -227 or (if `return_as_dict` is set to `True`) -228 a dictionary object with CFB head coach data. -229 """ -230 coaches_df = pd.DataFrame() -231 row_df = pd.DataFrame() -232 url = "https://api.collegefootballdata.com/coaches" -233 -234 # Input validation -235 ######################################################################################################################################################################################################## -236 -237 if api_key != None: -238 real_api_key = api_key -239 del api_key -240 else: -241 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -242 -243 if real_api_key == "tigersAreAwsome": -244 raise ValueError( -245 "You actually need to change `cfbd_key` to your CFBD API key.") -246 elif "Bearer " in real_api_key: -247 pass -248 elif "Bearer" in real_api_key: -249 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -250 else: -251 real_api_key = "Bearer " + real_api_key -252 -253 if min_season != None and max_season == None: -254 if season != None and min_season != season: -255 raise LookupError( -256 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + -257 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + -258 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") -259 elif season != None and min_season == season: -260 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") -261 min_season = None -262 elif season == None: -263 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") -264 season = min_season -265 min_season = None -266 -267 elif min_season == None and max_season != None: -268 if season != None and max_season != season: -269 raise LookupError( -270 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + -271 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + -272 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") -273 elif season != None and max_season == season: -274 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") -275 min_season = None -276 elif season == None: -277 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") -278 season = max_season -279 max_season = None -280 -281 if min_season != None and max_season != None: -282 if season != None: -283 raise LookupError( -284 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + -285 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + -286 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") -287 elif min_season > max_season: -288 raise ValueError( -289 '`min_season` cannot be greater than `max_season`.') -290 -291 # URL builder -292 ######################################################################################################################################################################################################## -293 url_elements = 0 -294 -295 if first_name != None and url_elements == 0: -296 url += f"?firstName={first_name}" -297 url_elements += 1 -298 elif first_name != None: -299 url += f"&firstName={first_name}" -300 url_elements += 1 -301 -302 if last_name != None and url_elements == 0: -303 url += f"?lastName={last_name}" -304 url_elements += 1 -305 elif last_name != None: -306 url += f"&lastName={last_name}" -307 url_elements += 1 -308 -309 if team != None and url_elements == 0: -310 url += f"?team={team}" -311 url_elements += 1 -312 elif team != None: -313 url += f"&team={team}" -314 url_elements += 1 -315 -316 if season != None: -317 if season != None and url_elements == 0: -318 url += f"?year={season}" -319 url_elements += 1 -320 elif season != None: -321 url += f"&year={season}" -322 url_elements += 1 -323 -324 elif min_season != None and max_season != None: -325 if url_elements == 0: -326 url += f"?minYear={min_season}&maxYear={max_season}" -327 url_elements += 1 -328 else: -329 url += f"&minYear={min_season}&maxYear={max_season}" -330 url_elements += 1 -331 -332 headers = { -333 'Authorization': f'{real_api_key}', -334 'accept': 'application/json' -335 } -336 -337 response = requests.get(url, headers=headers) -338 time.sleep(0.1) -339 -340 if response.status_code == 200: -341 pass -342 elif response.status_code == 401: -343 raise ConnectionRefusedError( -344 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -345 ) -346 else: -347 raise ConnectionError( -348 f'Could not connect.\nHTTP Status code {response.status_code}' -349 ) -350 -351 json_data = response.json() -352 -353 if return_as_dict == True: -354 return json_data -355 -356 for coach in tqdm(json_data): -357 coach_first_name = coach['first_name'] -358 coach_last_name = coach['last_name'] -359 coach_hire_date = coach['hire_date'] -360 -361 for coach_season in coach['seasons']: -362 row_df = pd.DataFrame( -363 { -364 "coach_first_name": coach_first_name, -365 "coach_last_name": coach_last_name, -366 "coach_hire_date": coach_hire_date -367 }, index=[0] -368 ) -369 row_df['school_name'] = coach_season['school'] -370 -371 if season != None and min_season == None and max_season == None: -372 row_df['season'] = season -373 else: -374 try: -375 row_df['season'] = coach_season['season'] -376 except: -377 row_df['season'] = None -378 -379 row_df['games'] = coach_season['games'] -380 row_df['wins'] = coach_season['wins'] -381 row_df['losses'] = coach_season['losses'] -382 row_df['ties'] = coach_season['ties'] -383 row_df['preseason_rank'] = coach_season['preseason_rank'] -384 row_df['postseason_rank'] = coach_season['postseason_rank'] -385 row_df['srs'] = coach_season['srs'] -386 row_df['sp_overall'] = coach_season['sp_overall'] -387 row_df['sp_offense'] = coach_season['sp_offense'] -388 row_df['sp_defense'] = coach_season['sp_defense'] -389 -390 coaches_df = pd.concat([coaches_df, row_df], ignore_index=True) -391 del row_df -392 -393 del coach_first_name, coach_last_name, coach_hire_date -394 -395 return coaches_df +223 +224 ``` +225 Returns +226 ---------- +227 A pandas `DataFrame` object with CFB head coach data, +228 or (if `return_as_dict` is set to `True`) +229 a dictionary object with CFB head coach data. +230 """ +231 coaches_df = pd.DataFrame() +232 row_df = pd.DataFrame() +233 url = "https://api.collegefootballdata.com/coaches" +234 +235 # Input validation +236 ######################################################################################################################################################################################################## +237 +238 if api_key != None: +239 real_api_key = api_key +240 del api_key +241 else: +242 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +243 +244 if real_api_key == "tigersAreAwsome": +245 raise ValueError( +246 "You actually need to change `cfbd_key` to your CFBD API key.") +247 elif "Bearer " in real_api_key: +248 pass +249 elif "Bearer" in real_api_key: +250 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +251 else: +252 real_api_key = "Bearer " + real_api_key +253 +254 if min_season != None and max_season == None: +255 if season != None and min_season != season: +256 raise LookupError( +257 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + +258 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + +259 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") +260 elif season != None and min_season == season: +261 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") +262 min_season = None +263 elif season == None: +264 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") +265 season = min_season +266 min_season = None +267 +268 elif min_season == None and max_season != None: +269 if season != None and max_season != season: +270 raise LookupError( +271 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + +272 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + +273 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") +274 elif season != None and max_season == season: +275 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") +276 min_season = None +277 elif season == None: +278 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") +279 season = max_season +280 max_season = None +281 +282 if min_season != None and max_season != None: +283 if season != None: +284 raise LookupError( +285 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + +286 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + +287 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") +288 elif min_season > max_season: +289 raise ValueError( +290 '`min_season` cannot be greater than `max_season`.') +291 +292 # URL builder +293 ######################################################################################################################################################################################################## +294 url_elements = 0 +295 +296 if first_name != None and url_elements == 0: +297 url += f"?firstName={first_name}" +298 url_elements += 1 +299 elif first_name != None: +300 url += f"&firstName={first_name}" +301 url_elements += 1 +302 +303 if last_name != None and url_elements == 0: +304 url += f"?lastName={last_name}" +305 url_elements += 1 +306 elif last_name != None: +307 url += f"&lastName={last_name}" +308 url_elements += 1 +309 +310 if team != None and url_elements == 0: +311 url += f"?team={team}" +312 url_elements += 1 +313 elif team != None: +314 url += f"&team={team}" +315 url_elements += 1 +316 +317 if season != None: +318 if season != None and url_elements == 0: +319 url += f"?year={season}" +320 url_elements += 1 +321 elif season != None: +322 url += f"&year={season}" +323 url_elements += 1 +324 +325 elif min_season != None and max_season != None: +326 if url_elements == 0: +327 url += f"?minYear={min_season}&maxYear={max_season}" +328 url_elements += 1 +329 else: +330 url += f"&minYear={min_season}&maxYear={max_season}" +331 url_elements += 1 +332 +333 headers = { +334 'Authorization': f'{real_api_key}', +335 'accept': 'application/json' +336 } +337 +338 response = requests.get(url, headers=headers) +339 time.sleep(0.1) +340 +341 if response.status_code == 200: +342 pass +343 elif response.status_code == 401: +344 raise ConnectionRefusedError( +345 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +346 ) +347 else: +348 raise ConnectionError( +349 f'Could not connect.\nHTTP Status code {response.status_code}' +350 ) +351 +352 json_data = response.json() +353 +354 if return_as_dict == True: +355 return json_data +356 +357 for coach in tqdm(json_data): +358 coach_first_name = coach['first_name'] +359 coach_last_name = coach['last_name'] +360 coach_hire_date = coach['hire_date'] +361 +362 for coach_season in coach['seasons']: +363 row_df = pd.DataFrame( +364 { +365 "coach_first_name": coach_first_name, +366 "coach_last_name": coach_last_name, +367 "coach_hire_date": coach_hire_date +368 }, index=[0] +369 ) +370 row_df['school_name'] = coach_season['school'] +371 +372 if season != None and min_season == None and max_season == None: +373 row_df['season'] = season +374 else: +375 try: +376 row_df['season'] = coach_season['season'] +377 except: +378 row_df['season'] = None +379 +380 row_df['games'] = coach_season['games'] +381 row_df['wins'] = coach_season['wins'] +382 row_df['losses'] = coach_season['losses'] +383 row_df['ties'] = coach_season['ties'] +384 row_df['preseason_rank'] = coach_season['preseason_rank'] +385 row_df['postseason_rank'] = coach_season['postseason_rank'] +386 row_df['srs'] = coach_season['srs'] +387 row_df['sp_overall'] = coach_season['sp_overall'] +388 row_df['sp_offense'] = coach_season['sp_offense'] +389 row_df['sp_defense'] = coach_season['sp_defense'] +390 +391 coaches_df = pd.concat([coaches_df, row_df], ignore_index=True) +392 del row_df +393 +394 del coach_first_name, coach_last_name, coach_hire_date +395 +396 return coaches_df
18def get_cfbd_coaches_info( - 19 api_key: str = None, - 20 api_key_dir: str = None, - 21 first_name: str = None, - 22 last_name: str = None, - 23 team: str = None, - 24 season: int = None, - 25 min_season: int = None, - 26 max_season: int = None, - 27 - 28 return_as_dict: bool = False): - 29 """ - 30 Retrives information from the CFBD API on CFB Head Coaches. - 31 - 32 Parameters - 33 ---------- - 34 `api_key` (str, optional): - 35 Semi-optional argument. - 36 If `api_key` is null, this function will attempt to load a CFBD API key - 37 from the python environment, or from a file on this computer. - 38 If `api_key` is not null, this function will automatically assume that the - 39 inputted `api_key` is a valid CFBD API key. - 40 - 41 `api_key_dir` (str, optional): - 42 Optional argument. - 43 If `api_key` is set to a string non-empty string, this variable is ignored. - 44 If `api_key_dir` is null, and `api_key` is null, - 45 this function will try to find a CFBD API key file in this user's home directory. - 46 If `api_key_dir` is set to a string, and `api_key` is null, - 47 this function will assume that `api_key_dir` is a directory, - 48 and will try to find a CFBD API key file in that directory. - 49 - 50 `first_name` (str, optional): - 51 Optional argument. - 52 If you want to only look up coaches with a specific first name, - 53 set this variable to that specific first name, and this function - 54 will attempt to look up coaches with that specific first name. - 55 - 56 `last_name` (str, optional): - 57 Optional argument. - 58 If you want to only look up coaches with a specific last name, - 59 set this variable to that specific first name, and this function - 60 will attempt to look up coaches with that specific last name. - 61 - 62 `team` (str, optional): - 63 Optional argument. - 64 If you want to filter and drill down to coaches who coached a specific - 65 CFB team, set this - 66 - 67 `season` (int, optional): - 68 Optional argument. - 69 If you only want coaches from a specific season, set this variable to that season. - 70 - 71 `min_season` (int, optional): - 72 Optional argument. - 73 Similar to `year`, but used in tandem with `max_season` to get coaches who coached with in a range of seasons. - 74 - 75 `max_season` (int, optional): - 76 Optional argument. - 77 Similar to `year`, but used in tandem with `min_season` to get coaches who coached with in a range of seasons. - 78 - 79 `return_as_dict` (bool, semi-optional): - 80 Semi-optional argument. - 81 If you want this function to return the data as a dictionary (read: JSON object), - 82 instead of a pandas `DataFrame` object, - 83 set `return_as_dict` to `True`. - 84 - 85 Usage - 86 ---------- - 87 ``` - 88 import time - 89 - 90 from cfbd_json_py.coaches import get_cfbd_coaches_info - 91 - 92 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. - 93 - 94 if cfbd_key != "tigersAreAwsome": - 95 print("Using the user's API key declared in this script for this example.") - 96 - 97 # Getting all coaches in the 2020 CFB season - 98 print("Getting every coach in the 2020 CFB season.") - 99 json_data = get_cfbd_coaches_info( -100 api_key=cfbd_key, -101 season=2020 -102 ) -103 print(f"{json_data}") -104 time.sleep(5) -105 -106 # Getting all coaches in the 2020 CFB season, with a first name of "Luke" -107 print("Getting every coach in the 2020 CFB season, with a first name of \"Luke\".") -108 json_data = get_cfbd_coaches_info( -109 api_key=cfbd_key, -110 season=2020, -111 first_name="Luke" -112 ) -113 print(f"{json_data}") -114 time.sleep(5) -115 +diff --git a/docs/cfbd_json_py/conferences.html b/docs/cfbd_json_py/conferences.html index f3ad59d..b95cdc9 100644 --- a/docs/cfbd_json_py/conferences.html +++ b/docs/cfbd_json_py/conferences.html @@ -55,173 +55,174 @@19def get_cfbd_coaches_info( + 20 api_key: str = None, + 21 api_key_dir: str = None, + 22 first_name: str = None, + 23 last_name: str = None, + 24 team: str = None, + 25 season: int = None, + 26 min_season: int = None, + 27 max_season: int = None, + 28 + 29 return_as_dict: bool = False): + 30 """ + 31 Retrives information from the CFBD API on CFB Head Coaches. + 32 + 33 Parameters + 34 ---------- + 35 `api_key` (str, optional): + 36 Semi-optional argument. + 37 If `api_key` is null, this function will attempt to load a CFBD API key + 38 from the python environment, or from a file on this computer. + 39 If `api_key` is not null, this function will automatically assume that the + 40 inputted `api_key` is a valid CFBD API key. + 41 + 42 `api_key_dir` (str, optional): + 43 Optional argument. + 44 If `api_key` is set to a string non-empty string, this variable is ignored. + 45 If `api_key_dir` is null, and `api_key` is null, + 46 this function will try to find a CFBD API key file in this user's home directory. + 47 If `api_key_dir` is set to a string, and `api_key` is null, + 48 this function will assume that `api_key_dir` is a directory, + 49 and will try to find a CFBD API key file in that directory. + 50 + 51 `first_name` (str, optional): + 52 Optional argument. + 53 If you want to only look up coaches with a specific first name, + 54 set this variable to that specific first name, and this function + 55 will attempt to look up coaches with that specific first name. + 56 + 57 `last_name` (str, optional): + 58 Optional argument. + 59 If you want to only look up coaches with a specific last name, + 60 set this variable to that specific first name, and this function + 61 will attempt to look up coaches with that specific last name. + 62 + 63 `team` (str, optional): + 64 Optional argument. + 65 If you want to filter and drill down to coaches who coached a specific + 66 CFB team, set this + 67 + 68 `season` (int, optional): + 69 Optional argument. + 70 If you only want coaches from a specific season, set this variable to that season. + 71 + 72 `min_season` (int, optional): + 73 Optional argument. + 74 Similar to `year`, but used in tandem with `max_season` to get coaches who coached with in a range of seasons. + 75 + 76 `max_season` (int, optional): + 77 Optional argument. + 78 Similar to `year`, but used in tandem with `min_season` to get coaches who coached with in a range of seasons. + 79 + 80 `return_as_dict` (bool, semi-optional): + 81 Semi-optional argument. + 82 If you want this function to return the data as a dictionary (read: JSON object), + 83 instead of a pandas `DataFrame` object, + 84 set `return_as_dict` to `True`. + 85 + 86 Usage + 87 ---------- + 88 ``` + 89 import time + 90 + 91 from cfbd_json_py.coaches import get_cfbd_coaches_info + 92 + 93 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 94 + 95 if cfbd_key != "tigersAreAwsome": + 96 print("Using the user's API key declared in this script for this example.") + 97 + 98 # Getting all coaches in the 2020 CFB season + 99 print("Getting every coach in the 2020 CFB season.") +100 json_data = get_cfbd_coaches_info( +101 api_key=cfbd_key, +102 season=2020 +103 ) +104 print(f"{json_data}") +105 time.sleep(5) +106 +107 # Getting all coaches in the 2020 CFB season, with a first name of "Luke" +108 print("Getting every coach in the 2020 CFB season, with a first name of \"Luke\".") +109 json_data = get_cfbd_coaches_info( +110 api_key=cfbd_key, +111 season=2020, +112 first_name="Luke" +113 ) +114 print(f"{json_data}") +115 time.sleep(5) 116 -117 # Getting all coaches in the 2020 CFB season, with a last name of "Day" -118 print("Getting all coaches in the 2020 CFB season, with a last name of \"Day\".") -119 json_data = get_cfbd_coaches_info( -120 api_key=cfbd_key, -121 season=2020, -122 last_name="Day" -123 ) -124 print(f"{json_data}") -125 time.sleep(5) -126 +117 +118 # Getting all coaches in the 2020 CFB season, with a last name of "Day" +119 print("Getting all coaches in the 2020 CFB season, with a last name of \"Day\".") +120 json_data = get_cfbd_coaches_info( +121 api_key=cfbd_key, +122 season=2020, +123 last_name="Day" +124 ) +125 print(f"{json_data}") +126 time.sleep(5) 127 -128 # Getting every head coach for the 2020 Southern Mississippi Golden Eagles -129 print("Getting every head coach for the 2020 Southern Mississippi Golden Eagles.") -130 json_data = get_cfbd_coaches_info( -131 api_key=cfbd_key, -132 season=2020, -133 team="Southern Mississippi" -134 ) -135 print(f"{json_data}") -136 time.sleep(5) -137 +128 +129 # Getting every head coach for the 2020 Southern Mississippi Golden Eagles +130 print("Getting every head coach for the 2020 Southern Mississippi Golden Eagles.") +131 json_data = get_cfbd_coaches_info( +132 api_key=cfbd_key, +133 season=2020, +134 team="Southern Mississippi" +135 ) +136 print(f"{json_data}") +137 time.sleep(5) 138 -139 # Getting every head coach between the 2019 and 2022 CFB seasons -140 print("Getting every head coach between the 2019 and 2022 CFB seasons") -141 json_data = get_cfbd_coaches_info( -142 api_key=cfbd_key, -143 min_season=2019, -144 max_season=2022 -145 ) -146 print(f"{json_data}") -147 time.sleep(5) -148 +139 +140 # Getting every head coach between the 2019 and 2022 CFB seasons +141 print("Getting every head coach between the 2019 and 2022 CFB seasons") +142 json_data = get_cfbd_coaches_info( +143 api_key=cfbd_key, +144 min_season=2019, +145 max_season=2022 +146 ) +147 print(f"{json_data}") +148 time.sleep(5) 149 -150 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -151 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -152 json_data = get_cfbd_coaches_info( -153 api_key=cfbd_key, -154 season=2022, -155 team="Cincinnati", -156 return_as_dict=True -157 ) -158 print(f"{json_data}") -159 -160 else: -161 # Alternatively, if the CFBD API key exists in this python environment, -162 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -163 # you could just call these functions directly, without setting the API key -164 # in the script. -165 print("Using the user's API key suposedly loaded into this python environment for this example.") -166 -167 # Getting every coach in the 2020 CFB season. -168 print("Getting every coach in the 2020 CFB season.") -169 json_data = get_cfbd_coaches_info(season=2020) -170 print(f"{json_data}") -171 time.sleep(5) -172 +150 +151 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +152 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +153 json_data = get_cfbd_coaches_info( +154 api_key=cfbd_key, +155 season=2022, +156 team="Cincinnati", +157 return_as_dict=True +158 ) +159 print(f"{json_data}") +160 +161 else: +162 # Alternatively, if the CFBD API key exists in this python environment, +163 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +164 # you could just call these functions directly, without setting the API key +165 # in the script. +166 print("Using the user's API key suposedly loaded into this python environment for this example.") +167 +168 # Getting every coach in the 2020 CFB season. +169 print("Getting every coach in the 2020 CFB season.") +170 json_data = get_cfbd_coaches_info(season=2020) +171 print(f"{json_data}") +172 time.sleep(5) 173 -174 # Getting every coach in the 2020 CFB season, with a first name of "Luke". -175 print("Getting every coach in the 2020 CFB season, with a first name of \"Luke\".") -176 json_data = get_cfbd_coaches_info( -177 season=2020, -178 first_name="Luke" -179 ) -180 print(f"{json_data}") -181 time.sleep(5) -182 +174 +175 # Getting every coach in the 2020 CFB season, with a first name of "Luke". +176 print("Getting every coach in the 2020 CFB season, with a first name of \"Luke\".") +177 json_data = get_cfbd_coaches_info( +178 season=2020, +179 first_name="Luke" +180 ) +181 print(f"{json_data}") +182 time.sleep(5) 183 -184 # Getting every coach in the 2020 CFB season, with a last name of "Day". -185 print("Getting every coach in the 2020 CFB season, with a last name of \"Day\".") -186 json_data = get_cfbd_coaches_info( -187 season=2020, -188 last_name="Day" -189 ) -190 print(f"{json_data}") -191 time.sleep(5) -192 +184 +185 # Getting every coach in the 2020 CFB season, with a last name of "Day". +186 print("Getting every coach in the 2020 CFB season, with a last name of \"Day\".") +187 json_data = get_cfbd_coaches_info( +188 season=2020, +189 last_name="Day" +190 ) +191 print(f"{json_data}") +192 time.sleep(5) 193 -194 # Getting every head coach for the 2020 Southern Mississippi Golden Eagles. -195 print("Getting every head coach for the 2020 Southern Mississippi Golden Eagles.") -196 json_data = get_cfbd_coaches_info( -197 season=2020, -198 team="Southern Mississippi" -199 ) -200 print(f"{json_data}") -201 time.sleep(5) -202 +194 +195 # Getting every head coach for the 2020 Southern Mississippi Golden Eagles. +196 print("Getting every head coach for the 2020 Southern Mississippi Golden Eagles.") +197 json_data = get_cfbd_coaches_info( +198 season=2020, +199 team="Southern Mississippi" +200 ) +201 print(f"{json_data}") +202 time.sleep(5) 203 -204 # Getting every head coach between the 2019 and 2022 CFB seasons. -205 print("Getting every head coach between the 2019 and 2022 CFB seasons.") -206 json_data = get_cfbd_coaches_info( -207 min_season=2019, -208 max_season=2022 -209 ) -210 print(f"{json_data}") -211 time.sleep(5) -212 +204 +205 # Getting every head coach between the 2019 and 2022 CFB seasons. +206 print("Getting every head coach between the 2019 and 2022 CFB seasons.") +207 json_data = get_cfbd_coaches_info( +208 min_season=2019, +209 max_season=2022 +210 ) +211 print(f"{json_data}") +212 time.sleep(5) 213 -214 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -215 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -216 json_data = get_cfbd_coaches_info( -217 season=2022, -218 team="Cincinnati", -219 return_as_dict=True -220 ) -221 print(f"{json_data}") -222 +214 +215 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +216 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +217 json_data = get_cfbd_coaches_info( +218 season=2022, +219 team="Cincinnati", +220 return_as_dict=True +221 ) +222 print(f"{json_data}") 223 -224 ``` -225 Returns -226 ---------- -227 A pandas `DataFrame` object with CFB head coach data, -228 or (if `return_as_dict` is set to `True`) -229 a dictionary object with CFB head coach data. -230 """ -231 coaches_df = pd.DataFrame() -232 row_df = pd.DataFrame() -233 url = "https://api.collegefootballdata.com/coaches" -234 -235 # Input validation -236 ######################################################################################################################################################################################################## -237 -238 if api_key != None: -239 real_api_key = api_key -240 del api_key -241 else: -242 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -243 -244 if real_api_key == "tigersAreAwsome": -245 raise ValueError( -246 "You actually need to change `cfbd_key` to your CFBD API key.") -247 elif "Bearer " in real_api_key: -248 pass -249 elif "Bearer" in real_api_key: -250 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -251 else: -252 real_api_key = "Bearer " + real_api_key -253 -254 if min_season != None and max_season == None: -255 if season != None and min_season != season: -256 raise LookupError( -257 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + -258 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + -259 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") -260 elif season != None and min_season == season: -261 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") -262 min_season = None -263 elif season == None: -264 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") -265 season = min_season -266 min_season = None -267 -268 elif min_season == None and max_season != None: -269 if season != None and max_season != season: -270 raise LookupError( -271 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + -272 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + -273 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") -274 elif season != None and max_season == season: -275 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") -276 min_season = None -277 elif season == None: -278 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") -279 season = max_season -280 max_season = None -281 -282 if min_season != None and max_season != None: -283 if season != None: -284 raise LookupError( -285 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + -286 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + -287 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") -288 elif min_season > max_season: -289 raise ValueError( -290 '`min_season` cannot be greater than `max_season`.') -291 -292 # URL builder -293 ######################################################################################################################################################################################################## -294 url_elements = 0 -295 -296 if first_name != None and url_elements == 0: -297 url += f"?firstName={first_name}" -298 url_elements += 1 -299 elif first_name != None: -300 url += f"&firstName={first_name}" -301 url_elements += 1 -302 -303 if last_name != None and url_elements == 0: -304 url += f"?lastName={last_name}" -305 url_elements += 1 -306 elif last_name != None: -307 url += f"&lastName={last_name}" -308 url_elements += 1 -309 -310 if team != None and url_elements == 0: -311 url += f"?team={team}" -312 url_elements += 1 -313 elif team != None: -314 url += f"&team={team}" -315 url_elements += 1 -316 -317 if season != None: -318 if season != None and url_elements == 0: -319 url += f"?year={season}" -320 url_elements += 1 -321 elif season != None: -322 url += f"&year={season}" -323 url_elements += 1 -324 -325 elif min_season != None and max_season != None: -326 if url_elements == 0: -327 url += f"?minYear={min_season}&maxYear={max_season}" -328 url_elements += 1 -329 else: -330 url += f"&minYear={min_season}&maxYear={max_season}" -331 url_elements += 1 -332 -333 headers = { -334 'Authorization': f'{real_api_key}', -335 'accept': 'application/json' -336 } -337 -338 response = requests.get(url, headers=headers) -339 time.sleep(0.1) -340 -341 if response.status_code == 200: -342 pass -343 elif response.status_code == 401: -344 raise ConnectionRefusedError( -345 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -346 ) -347 else: -348 raise ConnectionError( -349 f'Could not connect.\nHTTP Status code {response.status_code}' -350 ) -351 -352 json_data = response.json() -353 -354 if return_as_dict == True: -355 return json_data -356 -357 for coach in tqdm(json_data): -358 coach_first_name = coach['first_name'] -359 coach_last_name = coach['last_name'] -360 coach_hire_date = coach['hire_date'] -361 -362 for coach_season in coach['seasons']: -363 row_df = pd.DataFrame( -364 { -365 "coach_first_name": coach_first_name, -366 "coach_last_name": coach_last_name, -367 "coach_hire_date": coach_hire_date -368 }, index=[0] -369 ) -370 row_df['school_name'] = coach_season['school'] -371 -372 if season != None and min_season == None and max_season == None: -373 row_df['season'] = season -374 else: -375 try: -376 row_df['season'] = coach_season['season'] -377 except: -378 row_df['season'] = None -379 -380 row_df['games'] = coach_season['games'] -381 row_df['wins'] = coach_season['wins'] -382 row_df['losses'] = coach_season['losses'] -383 row_df['ties'] = coach_season['ties'] -384 row_df['preseason_rank'] = coach_season['preseason_rank'] -385 row_df['postseason_rank'] = coach_season['postseason_rank'] -386 row_df['srs'] = coach_season['srs'] -387 row_df['sp_overall'] = coach_season['sp_overall'] -388 row_df['sp_offense'] = coach_season['sp_offense'] -389 row_df['sp_defense'] = coach_season['sp_defense'] -390 -391 coaches_df = pd.concat([coaches_df, row_df], ignore_index=True) -392 del row_df -393 -394 del coach_first_name, coach_last_name, coach_hire_date -395 -396 return coaches_df +224 +225 ``` +226 Returns +227 ---------- +228 A pandas `DataFrame` object with CFB head coach data, +229 or (if `return_as_dict` is set to `True`) +230 a dictionary object with CFB head coach data. +231 """ +232 coaches_df = pd.DataFrame() +233 row_df = pd.DataFrame() +234 url = "https://api.collegefootballdata.com/coaches" +235 +236 # Input validation +237 ######################################################################################################################################################################################################## +238 +239 if api_key != None: +240 real_api_key = api_key +241 del api_key +242 else: +243 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +244 +245 if real_api_key == "tigersAreAwsome": +246 raise ValueError( +247 "You actually need to change `cfbd_key` to your CFBD API key.") +248 elif "Bearer " in real_api_key: +249 pass +250 elif "Bearer" in real_api_key: +251 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +252 else: +253 real_api_key = "Bearer " + real_api_key +254 +255 if min_season != None and max_season == None: +256 if season != None and min_season != season: +257 raise LookupError( +258 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + +259 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + +260 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") +261 elif season != None and min_season == season: +262 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") +263 min_season = None +264 elif season == None: +265 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") +266 season = min_season +267 min_season = None +268 +269 elif min_season == None and max_season != None: +270 if season != None and max_season != season: +271 raise LookupError( +272 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + +273 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + +274 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") +275 elif season != None and max_season == season: +276 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") +277 min_season = None +278 elif season == None: +279 logging.warning("If you only want coaching information for a single season, and not for a range of seasons, only set `year` to the seaon you want coaching info for, and leave `min_season` and `max_season` as `None` (NULL).") +280 season = max_season +281 max_season = None +282 +283 if min_season != None and max_season != None: +284 if season != None: +285 raise LookupError( +286 "It is ambiguous which year you want coaching information from, because you set the following values for the following variables:" + +287 f"\n- `year`: {season}\n- `min_season`: {min_season}\n`max_season`: {max_season}" + +288 "\nIf you want to get coaches who coached in a specified range of seasons, set `min_season` and `max_season` to the range of seasons you want coaching information from.") +289 elif min_season > max_season: +290 raise ValueError( +291 '`min_season` cannot be greater than `max_season`.') +292 +293 # URL builder +294 ######################################################################################################################################################################################################## +295 url_elements = 0 +296 +297 if first_name != None and url_elements == 0: +298 url += f"?firstName={first_name}" +299 url_elements += 1 +300 elif first_name != None: +301 url += f"&firstName={first_name}" +302 url_elements += 1 +303 +304 if last_name != None and url_elements == 0: +305 url += f"?lastName={last_name}" +306 url_elements += 1 +307 elif last_name != None: +308 url += f"&lastName={last_name}" +309 url_elements += 1 +310 +311 if team != None and url_elements == 0: +312 url += f"?team={team}" +313 url_elements += 1 +314 elif team != None: +315 url += f"&team={team}" +316 url_elements += 1 +317 +318 if season != None: +319 if season != None and url_elements == 0: +320 url += f"?year={season}" +321 url_elements += 1 +322 elif season != None: +323 url += f"&year={season}" +324 url_elements += 1 +325 +326 elif min_season != None and max_season != None: +327 if url_elements == 0: +328 url += f"?minYear={min_season}&maxYear={max_season}" +329 url_elements += 1 +330 else: +331 url += f"&minYear={min_season}&maxYear={max_season}" +332 url_elements += 1 +333 +334 headers = { +335 'Authorization': f'{real_api_key}', +336 'accept': 'application/json' +337 } +338 +339 response = requests.get(url, headers=headers) +340 time.sleep(0.1) +341 +342 if response.status_code == 200: +343 pass +344 elif response.status_code == 401: +345 raise ConnectionRefusedError( +346 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +347 ) +348 else: +349 raise ConnectionError( +350 f'Could not connect.\nHTTP Status code {response.status_code}' +351 ) +352 +353 json_data = response.json() +354 +355 if return_as_dict == True: +356 return json_data +357 +358 for coach in tqdm(json_data): +359 coach_first_name = coach['first_name'] +360 coach_last_name = coach['last_name'] +361 coach_hire_date = coach['hire_date'] +362 +363 for coach_season in coach['seasons']: +364 row_df = pd.DataFrame( +365 { +366 "coach_first_name": coach_first_name, +367 "coach_last_name": coach_last_name, +368 "coach_hire_date": coach_hire_date +369 }, index=[0] +370 ) +371 row_df['school_name'] = coach_season['school'] +372 +373 if season != None and min_season == None and max_season == None: +374 row_df['season'] = season +375 else: +376 try: +377 row_df['season'] = coach_season['season'] +378 except: +379 row_df['season'] = None +380 +381 row_df['games'] = coach_season['games'] +382 row_df['wins'] = coach_season['wins'] +383 row_df['losses'] = coach_season['losses'] +384 row_df['ties'] = coach_season['ties'] +385 row_df['preseason_rank'] = coach_season['preseason_rank'] +386 row_df['postseason_rank'] = coach_season['postseason_rank'] +387 row_df['srs'] = coach_season['srs'] +388 row_df['sp_overall'] = coach_season['sp_overall'] +389 row_df['sp_offense'] = coach_season['sp_offense'] +390 row_df['sp_defense'] = coach_season['sp_defense'] +391 +392 coaches_df = pd.concat([coaches_df, row_df], ignore_index=True) +393 del row_df +394 +395 del coach_first_name, coach_last_name, coach_hire_date +396 +397 return coaches_df
@@ -237,161 +238,161 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: conferences.py - 4# Purpose: Houses functions pertaining to CFB conference data within the CFBD API. - 5#################################################################################################### - 6 - 7import time - 8import pandas as pd - 9import requests - 10 - 11from cfbd_json_py.utls import get_cfbd_api_token - 12 + 2# Last Updated Date: 10/06/2023 07:35 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: conferences.py + 5# Purpose: Houses functions pertaining to CFB conference data within the CFBD API. + 6#################################################################################################### + 7 + 8import time + 9import pandas as pd + 10import requests + 11 + 12from cfbd_json_py.utls import get_cfbd_api_token 13 - 14def get_cfbd_conference_info( - 15 api_key: str = None, - 16 api_key_dir: str = None, - 17 return_as_dict: bool = False): - 18 """ - 19 Retrives a list of CFB conferences from the CFBD API. - 20 - 21 Parameters - 22 ---------- - 23 `api_key` (str, optional): - 24 Semi-optional argument. - 25 If `api_key` is null, this function will attempt to load a CFBD API key - 26 from the python environment, or from a file on this computer. - 27 If `api_key` is not null, this function will automatically assume that the - 28 inputted `api_key` is a valid CFBD API key. - 29 - 30 `api_key_dir` (str, optional): - 31 Optional argument. - 32 If `api_key` is set to a string non-empty string, this variable is ignored. - 33 If `api_key_dir` is null, and `api_key` is null, - 34 this function will try to find a CFBD API key file in this user's home directory. - 35 If `api_key_dir` is set to a string, and `api_key` is null, - 36 this function will assume that `api_key_dir` is a directory, - 37 and will try to find a CFBD API key file in that directory. - 38 - 39 `return_as_dict` (bool, semi-optional): - 40 Semi-optional argument. - 41 If you want this function to return the data as a dictionary (read: JSON object), - 42 instead of a pandas `DataFrame` object, - 43 set `return_as_dict` to `True`. - 44 - 45 Usage - 46 ---------- - 47 ``` - 48 import time - 49 - 50 from cfbd_json_py.conferences import get_cfbd_conference_info - 51 - 52 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. - 53 - 54 if cfbd_key != "tigersAreAwsome": - 55 print("Using the user's API key declared in this script for this example.") - 56 - 57 # Gets CFB confrence info from the CFBD API. - 58 print("Gets CFB confrence info from the CFBD API.") - 59 json_data = get_cfbd_conference_info(api_key=cfbd_key) - 60 print(json_data) - 61 time.sleep(5) - 62 - 63 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. - 64 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") - 65 json_data = get_cfbd_conference_info( - 66 api_key=cfbd_key, - 67 return_as_dict=True) - 68 print(json_data) - 69 - 70 else: - 71 # Alternatively, if the CFBD API key exists in this python environment, - 72 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), - 73 # you could just call these functions directly, without setting the API key - 74 # in the script. - 75 print("Using the user's API key suposedly loaded into this python environment for this example.") - 76 - 77 # Gets CFB confrence info from the CFBD API. - 78 print("Gets CFB confrence info from the CFBD API.") - 79 json_data = get_cfbd_conference_info() - 80 print(json_data) - 81 time.sleep(5) - 82 - 83 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. - 84 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") - 85 json_data = get_cfbd_conference_info(return_as_dict=True) - 86 print(json_data) - 87 - 88 ``` - 89 - 90 Returns - 91 ---------- - 92 A pandas `DataFrame` object with CFB conference data, - 93 or (if `return_as_dict` is set to `True`) - 94 a dictionary object with CFB conference data. - 95 """ - 96 - 97 conference_df = pd.DataFrame() - 98 row_df = pd.DataFrame() - 99 url = "https://api.collegefootballdata.com/conferences" -100 -101 # Input validation -102 ######################################################################################################################################################################################################## -103 -104 if api_key != None: -105 real_api_key = api_key -106 del api_key -107 else: -108 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -109 -110 if real_api_key == "tigersAreAwsome": -111 raise ValueError( -112 "You actually need to change `cfbd_key` to your CFBD API key.") -113 elif "Bearer " in real_api_key: -114 pass -115 elif "Bearer" in real_api_key: -116 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -117 else: -118 real_api_key = "Bearer " + real_api_key -119 -120 headers = { -121 'Authorization': f'{real_api_key}', -122 'accept': 'application/json' -123 } -124 -125 response = requests.get(url, headers=headers) -126 time.sleep(0.1) -127 -128 if response.status_code == 200: -129 pass -130 elif response.status_code == 401: -131 raise ConnectionRefusedError( -132 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -133 ) -134 else: -135 raise ConnectionError( -136 f'Could not connect.\nHTTP Status code {response.status_code}' -137 ) -138 -139 json_data = response.json() -140 -141 if return_as_dict == True: -142 return json_data -143 -144 for conference in json_data: -145 conference_id = conference['id'] -146 conference_name = conference['name'] -147 conference_short_name = conference['short_name'] -148 conference_abbreviation = conference['abbreviation'] -149 ncaa_classification = conference['classification'] -150 -151 row_df = pd.DataFrame( -152 { -153 "conference_id": conference_id, -154 "conference_name": conference_name, -155 "conference_short_name": conference_short_name, -156 "conference_abbreviation": conference_abbreviation, -157 "ncaa_classification": ncaa_classification -158 }, index=[0] -159 ) -160 -161 conference_df = pd.concat([conference_df, row_df], ignore_index=True) -162 del conference_id, conference_name, \ -163 conference_short_name, conference_abbreviation, \ -164 ncaa_classification -165 -166 del row_df -167 -168 return conference_df + 14 + 15def get_cfbd_conference_info( + 16 api_key: str = None, + 17 api_key_dir: str = None, + 18 return_as_dict: bool = False): + 19 """ + 20 Retrives a list of CFB conferences from the CFBD API. + 21 + 22 Parameters + 23 ---------- + 24 `api_key` (str, optional): + 25 Semi-optional argument. + 26 If `api_key` is null, this function will attempt to load a CFBD API key + 27 from the python environment, or from a file on this computer. + 28 If `api_key` is not null, this function will automatically assume that the + 29 inputted `api_key` is a valid CFBD API key. + 30 + 31 `api_key_dir` (str, optional): + 32 Optional argument. + 33 If `api_key` is set to a string non-empty string, this variable is ignored. + 34 If `api_key_dir` is null, and `api_key` is null, + 35 this function will try to find a CFBD API key file in this user's home directory. + 36 If `api_key_dir` is set to a string, and `api_key` is null, + 37 this function will assume that `api_key_dir` is a directory, + 38 and will try to find a CFBD API key file in that directory. + 39 + 40 `return_as_dict` (bool, semi-optional): + 41 Semi-optional argument. + 42 If you want this function to return the data as a dictionary (read: JSON object), + 43 instead of a pandas `DataFrame` object, + 44 set `return_as_dict` to `True`. + 45 + 46 Usage + 47 ---------- + 48 ``` + 49 import time + 50 + 51 from cfbd_json_py.conferences import get_cfbd_conference_info + 52 + 53 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 54 + 55 if cfbd_key != "tigersAreAwsome": + 56 print("Using the user's API key declared in this script for this example.") + 57 + 58 # Gets CFB confrence info from the CFBD API. + 59 print("Gets CFB confrence info from the CFBD API.") + 60 json_data = get_cfbd_conference_info(api_key=cfbd_key) + 61 print(json_data) + 62 time.sleep(5) + 63 + 64 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. + 65 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 66 json_data = get_cfbd_conference_info( + 67 api_key=cfbd_key, + 68 return_as_dict=True) + 69 print(json_data) + 70 + 71 else: + 72 # Alternatively, if the CFBD API key exists in this python environment, + 73 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + 74 # you could just call these functions directly, without setting the API key + 75 # in the script. + 76 print("Using the user's API key suposedly loaded into this python environment for this example.") + 77 + 78 # Gets CFB confrence info from the CFBD API. + 79 print("Gets CFB confrence info from the CFBD API.") + 80 json_data = get_cfbd_conference_info() + 81 print(json_data) + 82 time.sleep(5) + 83 + 84 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. + 85 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 86 json_data = get_cfbd_conference_info(return_as_dict=True) + 87 print(json_data) + 88 + 89 ``` + 90 + 91 Returns + 92 ---------- + 93 A pandas `DataFrame` object with CFB conference data, + 94 or (if `return_as_dict` is set to `True`) + 95 a dictionary object with CFB conference data. + 96 """ + 97 + 98 conference_df = pd.DataFrame() + 99 row_df = pd.DataFrame() +100 url = "https://api.collegefootballdata.com/conferences" +101 +102 # Input validation +103 ######################################################################################################################################################################################################## +104 +105 if api_key != None: +106 real_api_key = api_key +107 del api_key +108 else: +109 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +110 +111 if real_api_key == "tigersAreAwsome": +112 raise ValueError( +113 "You actually need to change `cfbd_key` to your CFBD API key.") +114 elif "Bearer " in real_api_key: +115 pass +116 elif "Bearer" in real_api_key: +117 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +118 else: +119 real_api_key = "Bearer " + real_api_key +120 +121 headers = { +122 'Authorization': f'{real_api_key}', +123 'accept': 'application/json' +124 } +125 +126 response = requests.get(url, headers=headers) +127 time.sleep(0.1) +128 +129 if response.status_code == 200: +130 pass +131 elif response.status_code == 401: +132 raise ConnectionRefusedError( +133 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +134 ) +135 else: +136 raise ConnectionError( +137 f'Could not connect.\nHTTP Status code {response.status_code}' +138 ) +139 +140 json_data = response.json() +141 +142 if return_as_dict == True: +143 return json_data +144 +145 for conference in json_data: +146 conference_id = conference['id'] +147 conference_name = conference['name'] +148 conference_short_name = conference['short_name'] +149 conference_abbreviation = conference['abbreviation'] +150 ncaa_classification = conference['classification'] +151 +152 row_df = pd.DataFrame( +153 { +154 "conference_id": conference_id, +155 "conference_name": conference_name, +156 "conference_short_name": conference_short_name, +157 "conference_abbreviation": conference_abbreviation, +158 "ncaa_classification": ncaa_classification +159 }, index=[0] +160 ) +161 +162 conference_df = pd.concat([conference_df, row_df], ignore_index=True) +163 del conference_id, conference_name, \ +164 conference_short_name, conference_abbreviation, \ +165 ncaa_classification +166 +167 del row_df +168 +169 return conference_df
15def get_cfbd_conference_info( - 16 api_key: str = None, - 17 api_key_dir: str = None, - 18 return_as_dict: bool = False): - 19 """ - 20 Retrives a list of CFB conferences from the CFBD API. - 21 - 22 Parameters - 23 ---------- - 24 `api_key` (str, optional): - 25 Semi-optional argument. - 26 If `api_key` is null, this function will attempt to load a CFBD API key - 27 from the python environment, or from a file on this computer. - 28 If `api_key` is not null, this function will automatically assume that the - 29 inputted `api_key` is a valid CFBD API key. - 30 - 31 `api_key_dir` (str, optional): - 32 Optional argument. - 33 If `api_key` is set to a string non-empty string, this variable is ignored. - 34 If `api_key_dir` is null, and `api_key` is null, - 35 this function will try to find a CFBD API key file in this user's home directory. - 36 If `api_key_dir` is set to a string, and `api_key` is null, - 37 this function will assume that `api_key_dir` is a directory, - 38 and will try to find a CFBD API key file in that directory. - 39 - 40 `return_as_dict` (bool, semi-optional): - 41 Semi-optional argument. - 42 If you want this function to return the data as a dictionary (read: JSON object), - 43 instead of a pandas `DataFrame` object, - 44 set `return_as_dict` to `True`. - 45 - 46 Usage - 47 ---------- - 48 ``` - 49 import time - 50 - 51 from cfbd_json_py.conferences import get_cfbd_conference_info - 52 - 53 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. - 54 - 55 if cfbd_key != "tigersAreAwsome": - 56 print("Using the user's API key declared in this script for this example.") - 57 - 58 # Gets CFB confrence info from the CFBD API. - 59 print("Gets CFB confrence info from the CFBD API.") - 60 json_data = get_cfbd_conference_info(api_key=cfbd_key) - 61 print(json_data) - 62 time.sleep(5) - 63 - 64 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. - 65 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") - 66 json_data = get_cfbd_conference_info( - 67 api_key=cfbd_key, - 68 return_as_dict=True) - 69 print(json_data) - 70 - 71 else: - 72 # Alternatively, if the CFBD API key exists in this python environment, - 73 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), - 74 # you could just call these functions directly, without setting the API key - 75 # in the script. - 76 print("Using the user's API key suposedly loaded into this python environment for this example.") - 77 - 78 # Gets CFB confrence info from the CFBD API. - 79 print("Gets CFB confrence info from the CFBD API.") - 80 json_data = get_cfbd_conference_info() - 81 print(json_data) - 82 time.sleep(5) - 83 - 84 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. - 85 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") - 86 json_data = get_cfbd_conference_info(return_as_dict=True) - 87 print(json_data) - 88 - 89 ``` - 90 - 91 Returns - 92 ---------- - 93 A pandas `DataFrame` object with CFB conference data, - 94 or (if `return_as_dict` is set to `True`) - 95 a dictionary object with CFB conference data. - 96 """ - 97 - 98 conference_df = pd.DataFrame() - 99 row_df = pd.DataFrame() -100 url = "https://api.collegefootballdata.com/conferences" -101 -102 # Input validation -103 ######################################################################################################################################################################################################## -104 -105 if api_key != None: -106 real_api_key = api_key -107 del api_key -108 else: -109 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -110 -111 if real_api_key == "tigersAreAwsome": -112 raise ValueError( -113 "You actually need to change `cfbd_key` to your CFBD API key.") -114 elif "Bearer " in real_api_key: -115 pass -116 elif "Bearer" in real_api_key: -117 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -118 else: -119 real_api_key = "Bearer " + real_api_key -120 -121 headers = { -122 'Authorization': f'{real_api_key}', -123 'accept': 'application/json' -124 } -125 -126 response = requests.get(url, headers=headers) -127 time.sleep(0.1) -128 -129 if response.status_code == 200: -130 pass -131 elif response.status_code == 401: -132 raise ConnectionRefusedError( -133 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -134 ) -135 else: -136 raise ConnectionError( -137 f'Could not connect.\nHTTP Status code {response.status_code}' -138 ) -139 -140 json_data = response.json() -141 -142 if return_as_dict == True: -143 return json_data -144 -145 for conference in json_data: -146 conference_id = conference['id'] -147 conference_name = conference['name'] -148 conference_short_name = conference['short_name'] -149 conference_abbreviation = conference['abbreviation'] -150 ncaa_classification = conference['classification'] -151 -152 row_df = pd.DataFrame( -153 { -154 "conference_id": conference_id, -155 "conference_name": conference_name, -156 "conference_short_name": conference_short_name, -157 "conference_abbreviation": conference_abbreviation, -158 "ncaa_classification": ncaa_classification -159 }, index=[0] -160 ) -161 -162 conference_df = pd.concat([conference_df, row_df], ignore_index=True) -163 del conference_id, conference_name, \ -164 conference_short_name, conference_abbreviation, \ -165 ncaa_classification -166 -167 del row_df -168 -169 return conference_df +diff --git a/docs/cfbd_json_py/draft.html b/docs/cfbd_json_py/draft.html index 2ce2e32..99ddf52 100644 --- a/docs/cfbd_json_py/draft.html +++ b/docs/cfbd_json_py/draft.html @@ -61,682 +61,683 @@16def get_cfbd_conference_info( + 17 api_key: str = None, + 18 api_key_dir: str = None, + 19 return_as_dict: bool = False): + 20 """ + 21 Retrives a list of CFB conferences from the CFBD API. + 22 + 23 Parameters + 24 ---------- + 25 `api_key` (str, optional): + 26 Semi-optional argument. + 27 If `api_key` is null, this function will attempt to load a CFBD API key + 28 from the python environment, or from a file on this computer. + 29 If `api_key` is not null, this function will automatically assume that the + 30 inputted `api_key` is a valid CFBD API key. + 31 + 32 `api_key_dir` (str, optional): + 33 Optional argument. + 34 If `api_key` is set to a string non-empty string, this variable is ignored. + 35 If `api_key_dir` is null, and `api_key` is null, + 36 this function will try to find a CFBD API key file in this user's home directory. + 37 If `api_key_dir` is set to a string, and `api_key` is null, + 38 this function will assume that `api_key_dir` is a directory, + 39 and will try to find a CFBD API key file in that directory. + 40 + 41 `return_as_dict` (bool, semi-optional): + 42 Semi-optional argument. + 43 If you want this function to return the data as a dictionary (read: JSON object), + 44 instead of a pandas `DataFrame` object, + 45 set `return_as_dict` to `True`. + 46 + 47 Usage + 48 ---------- + 49 ``` + 50 import time + 51 + 52 from cfbd_json_py.conferences import get_cfbd_conference_info + 53 + 54 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 55 + 56 if cfbd_key != "tigersAreAwsome": + 57 print("Using the user's API key declared in this script for this example.") + 58 + 59 # Gets CFB confrence info from the CFBD API. + 60 print("Gets CFB confrence info from the CFBD API.") + 61 json_data = get_cfbd_conference_info(api_key=cfbd_key) + 62 print(json_data) + 63 time.sleep(5) + 64 + 65 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. + 66 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 67 json_data = get_cfbd_conference_info( + 68 api_key=cfbd_key, + 69 return_as_dict=True) + 70 print(json_data) + 71 + 72 else: + 73 # Alternatively, if the CFBD API key exists in this python environment, + 74 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + 75 # you could just call these functions directly, without setting the API key + 76 # in the script. + 77 print("Using the user's API key suposedly loaded into this python environment for this example.") + 78 + 79 # Gets CFB confrence info from the CFBD API. + 80 print("Gets CFB confrence info from the CFBD API.") + 81 json_data = get_cfbd_conference_info() + 82 print(json_data) + 83 time.sleep(5) + 84 + 85 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. + 86 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 87 json_data = get_cfbd_conference_info(return_as_dict=True) + 88 print(json_data) + 89 + 90 ``` + 91 + 92 Returns + 93 ---------- + 94 A pandas `DataFrame` object with CFB conference data, + 95 or (if `return_as_dict` is set to `True`) + 96 a dictionary object with CFB conference data. + 97 """ + 98 + 99 conference_df = pd.DataFrame() +100 row_df = pd.DataFrame() +101 url = "https://api.collegefootballdata.com/conferences" +102 +103 # Input validation +104 ######################################################################################################################################################################################################## +105 +106 if api_key != None: +107 real_api_key = api_key +108 del api_key +109 else: +110 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +111 +112 if real_api_key == "tigersAreAwsome": +113 raise ValueError( +114 "You actually need to change `cfbd_key` to your CFBD API key.") +115 elif "Bearer " in real_api_key: +116 pass +117 elif "Bearer" in real_api_key: +118 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +119 else: +120 real_api_key = "Bearer " + real_api_key +121 +122 headers = { +123 'Authorization': f'{real_api_key}', +124 'accept': 'application/json' +125 } +126 +127 response = requests.get(url, headers=headers) +128 time.sleep(0.1) +129 +130 if response.status_code == 200: +131 pass +132 elif response.status_code == 401: +133 raise ConnectionRefusedError( +134 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +135 ) +136 else: +137 raise ConnectionError( +138 f'Could not connect.\nHTTP Status code {response.status_code}' +139 ) +140 +141 json_data = response.json() +142 +143 if return_as_dict == True: +144 return json_data +145 +146 for conference in json_data: +147 conference_id = conference['id'] +148 conference_name = conference['name'] +149 conference_short_name = conference['short_name'] +150 conference_abbreviation = conference['abbreviation'] +151 ncaa_classification = conference['classification'] +152 +153 row_df = pd.DataFrame( +154 { +155 "conference_id": conference_id, +156 "conference_name": conference_name, +157 "conference_short_name": conference_short_name, +158 "conference_abbreviation": conference_abbreviation, +159 "ncaa_classification": ncaa_classification +160 }, index=[0] +161 ) +162 +163 conference_df = pd.concat([conference_df, row_df], ignore_index=True) +164 del conference_id, conference_name, \ +165 conference_short_name, conference_abbreviation, \ +166 ncaa_classification +167 +168 del row_df +169 +170 return conference_df
@@ -752,160 +753,160 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: draft.py - 4# Purpose: Houses functions pertaining to NFL Draft data within the CFBD API. - 5#################################################################################################### - 6 - 7from datetime import datetime - 8import logging - 9import time - 10import pandas as pd - 11import requests - 12from tqdm import tqdm - 13 - 14from cfbd_json_py.utls import get_cfbd_api_token - 15 + 2# Last Updated Date: 10/07/2023 10:56 AM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: draft.py + 5# Purpose: Houses functions pertaining to NFL Draft data within the CFBD API. + 6#################################################################################################### + 7 + 8from datetime import datetime + 9import logging + 10import time + 11import pandas as pd + 12import requests + 13from tqdm import tqdm + 14 + 15from cfbd_json_py.utls import get_cfbd_api_token 16 - 17def get_cfbd_nfl_teams( - 18 api_key: str = None, - 19 api_key_dir: str = None, - 20 return_as_dict: bool = False): - 21 """ - 22 Retrives a list of NFL teams from the CFBD API. - 23 - 24 Parameters - 25 ---------- - 26 `api_key` (str, optional): - 27 Semi-optional argument. - 28 If `api_key` is null, this function will attempt to load a CFBD API key - 29 from the python environment, or from a file on this computer. - 30 If `api_key` is not null, this function will automatically assume that the - 31 inputted `api_key` is a valid CFBD API key. - 32 - 33 `api_key_dir` (str, optional): - 34 Optional argument. - 35 If `api_key` is set to a string non-empty string, this variable is ignored. - 36 If `api_key_dir` is null, and `api_key` is null, - 37 this function will try to find a CFBD API key file in this user's home directory. - 38 If `api_key_dir` is set to a string, and `api_key` is null, - 39 this function will assume that `api_key_dir` is a directory, - 40 and will try to find a CFBD API key file in that directory. - 41 - 42 `return_as_dict` (bool, semi-optional): - 43 Semi-optional argument. - 44 If you want this function to return the data as a dictionary (read: JSON object), - 45 instead of a pandas `DataFrame` object, - 46 set `return_as_dict` to `True`. - 47 - 48 Usage - 49 ---------- - 50 ``` - 51 import time - 52 - 53 from cfbd_json_py.draft import get_cfbd_nfl_teams - 54 - 55 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. - 56 - 57 if cfbd_key != "tigersAreAwsome": - 58 print("Using the user's API key declared in this script for this example.") - 59 - 60 # Gets NFL team info from the CFBD API. - 61 print("Gets NFL team info from the CFBD API.") - 62 json_data = get_cfbd_nfl_teams(api_key=cfbd_key) - 63 print(json_data) - 64 time.sleep(5) - 65 - 66 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. - 67 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") - 68 json_data = get_cfbd_nfl_teams( - 69 api_key=cfbd_key, - 70 return_as_dict=True) - 71 print(json_data) - 72 - 73 else: - 74 # Alternatively, if the CFBD API key exists in this python environment, - 75 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), - 76 # you could just call these functions directly, without setting the API key - 77 # in the script. - 78 print("Using the user's API key suposedly loaded into this python environment for this example.") - 79 - 80 # Gets NFL team info from the CFBD API. - 81 print("Gets NFL team info from the CFBD API.") - 82 json_data = get_cfbd_nfl_teams() - 83 print(json_data) - 84 time.sleep(5) - 85 - 86 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. - 87 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") - 88 json_data = get_cfbd_nfl_teams(return_as_dict=True) - 89 print(json_data) - 90 - 91 ``` - 92 - 93 Returns - 94 ---------- - 95 A pandas `DataFrame` object with NFL team data, - 96 or (if `return_as_dict` is set to `True`) - 97 a dictionary object with NFL team data. - 98 - 99 """ -100 -101 nfl_teams_df = pd.DataFrame() -102 row_df = pd.DataFrame() -103 url = "https://api.collegefootballdata.com/draft/teams" -104 -105 # Input validation -106 ######################################################################################################################################################################################################## -107 -108 if api_key != None: -109 real_api_key = api_key -110 del api_key -111 else: -112 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -113 -114 if real_api_key == "tigersAreAwsome": -115 raise ValueError( -116 "You actually need to change `cfbd_key` to your CFBD API key.") -117 elif "Bearer " in real_api_key: -118 pass -119 elif "Bearer" in real_api_key: -120 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -121 else: -122 real_api_key = "Bearer " + real_api_key -123 -124 headers = { -125 'Authorization': f'{real_api_key}', -126 'accept': 'application/json' -127 } -128 -129 response = requests.get(url, headers=headers) -130 time.sleep(0.1) -131 -132 if response.status_code == 200: -133 pass -134 elif response.status_code == 401: -135 raise ConnectionRefusedError( -136 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -137 ) -138 else: -139 raise ConnectionError( -140 f'Could not connect.\nHTTP Status code {response.status_code}' -141 ) -142 -143 json_data = response.json() -144 -145 if return_as_dict == True: -146 return json_data -147 -148 for nfl_team in json_data: -149 nfl_team_location = nfl_team['location'] -150 nfl_team_nickname = nfl_team['nickname'] -151 nfl_team_display_name = nfl_team['displayName'] -152 nfl_team_logo = nfl_team['logo'] -153 -154 row_df = pd.DataFrame( -155 { -156 "nfl_team_location": nfl_team_location, -157 "nfl_team_nickname": nfl_team_nickname, -158 "nfl_team_display_name": nfl_team_display_name, -159 "nfl_team_logo": nfl_team_logo -160 }, index=[0] -161 ) -162 -163 nfl_teams_df = pd.concat([nfl_teams_df, row_df], ignore_index=True) -164 -165 del nfl_team_location, nfl_team_nickname, \ -166 nfl_team_display_name, nfl_team_logo -167 -168 del row_df -169 -170 return nfl_teams_df -171 + 17 + 18def get_cfbd_nfl_teams( + 19 api_key: str = None, + 20 api_key_dir: str = None, + 21 return_as_dict: bool = False): + 22 """ + 23 Retrives a list of NFL teams from the CFBD API. + 24 + 25 Parameters + 26 ---------- + 27 `api_key` (str, optional): + 28 Semi-optional argument. + 29 If `api_key` is null, this function will attempt to load a CFBD API key + 30 from the python environment, or from a file on this computer. + 31 If `api_key` is not null, this function will automatically assume that the + 32 inputted `api_key` is a valid CFBD API key. + 33 + 34 `api_key_dir` (str, optional): + 35 Optional argument. + 36 If `api_key` is set to a string non-empty string, this variable is ignored. + 37 If `api_key_dir` is null, and `api_key` is null, + 38 this function will try to find a CFBD API key file in this user's home directory. + 39 If `api_key_dir` is set to a string, and `api_key` is null, + 40 this function will assume that `api_key_dir` is a directory, + 41 and will try to find a CFBD API key file in that directory. + 42 + 43 `return_as_dict` (bool, semi-optional): + 44 Semi-optional argument. + 45 If you want this function to return the data as a dictionary (read: JSON object), + 46 instead of a pandas `DataFrame` object, + 47 set `return_as_dict` to `True`. + 48 + 49 Usage + 50 ---------- + 51 ``` + 52 import time + 53 + 54 from cfbd_json_py.draft import get_cfbd_nfl_teams + 55 + 56 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 57 + 58 if cfbd_key != "tigersAreAwsome": + 59 print("Using the user's API key declared in this script for this example.") + 60 + 61 # Gets NFL team info from the CFBD API. + 62 print("Gets NFL team info from the CFBD API.") + 63 json_data = get_cfbd_nfl_teams(api_key=cfbd_key) + 64 print(json_data) + 65 time.sleep(5) + 66 + 67 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. + 68 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 69 json_data = get_cfbd_nfl_teams( + 70 api_key=cfbd_key, + 71 return_as_dict=True) + 72 print(json_data) + 73 + 74 else: + 75 # Alternatively, if the CFBD API key exists in this python environment, + 76 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + 77 # you could just call these functions directly, without setting the API key + 78 # in the script. + 79 print("Using the user's API key suposedly loaded into this python environment for this example.") + 80 + 81 # Gets NFL team info from the CFBD API. + 82 print("Gets NFL team info from the CFBD API.") + 83 json_data = get_cfbd_nfl_teams() + 84 print(json_data) + 85 time.sleep(5) + 86 + 87 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. + 88 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 89 json_data = get_cfbd_nfl_teams(return_as_dict=True) + 90 print(json_data) + 91 + 92 ``` + 93 + 94 Returns + 95 ---------- + 96 A pandas `DataFrame` object with NFL team data, + 97 or (if `return_as_dict` is set to `True`) + 98 a dictionary object with NFL team data. + 99 +100 """ +101 +102 nfl_teams_df = pd.DataFrame() +103 row_df = pd.DataFrame() +104 url = "https://api.collegefootballdata.com/draft/teams" +105 +106 # Input validation +107 ######################################################################################################################################################################################################## +108 +109 if api_key != None: +110 real_api_key = api_key +111 del api_key +112 else: +113 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +114 +115 if real_api_key == "tigersAreAwsome": +116 raise ValueError( +117 "You actually need to change `cfbd_key` to your CFBD API key.") +118 elif "Bearer " in real_api_key: +119 pass +120 elif "Bearer" in real_api_key: +121 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +122 else: +123 real_api_key = "Bearer " + real_api_key +124 +125 headers = { +126 'Authorization': f'{real_api_key}', +127 'accept': 'application/json' +128 } +129 +130 response = requests.get(url, headers=headers) +131 time.sleep(0.1) +132 +133 if response.status_code == 200: +134 pass +135 elif response.status_code == 401: +136 raise ConnectionRefusedError( +137 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +138 ) +139 else: +140 raise ConnectionError( +141 f'Could not connect.\nHTTP Status code {response.status_code}' +142 ) +143 +144 json_data = response.json() +145 +146 if return_as_dict == True: +147 return json_data +148 +149 for nfl_team in json_data: +150 nfl_team_location = nfl_team['location'] +151 nfl_team_nickname = nfl_team['nickname'] +152 nfl_team_display_name = nfl_team['displayName'] +153 nfl_team_logo = nfl_team['logo'] +154 +155 row_df = pd.DataFrame( +156 { +157 "nfl_team_location": nfl_team_location, +158 "nfl_team_nickname": nfl_team_nickname, +159 "nfl_team_display_name": nfl_team_display_name, +160 "nfl_team_logo": nfl_team_logo +161 }, index=[0] +162 ) +163 +164 nfl_teams_df = pd.concat([nfl_teams_df, row_df], ignore_index=True) +165 +166 del nfl_team_location, nfl_team_nickname, \ +167 nfl_team_display_name, nfl_team_logo +168 +169 del row_df +170 +171 return nfl_teams_df 172 -173def get_cfbd_nfl_positions( -174 api_key: str = None, -175 api_key_dir: str = None, -176 return_as_dict: bool = False): -177 """ -178 Retrives a list of player positions for the NFL Draft from the CFBD API. -179 -180 Parameters -181 ---------- -182 `api_key` (str, optional): -183 Semi-optional argument. -184 If `api_key` is null, this function will attempt to load a CFBD API key -185 from the python environment, or from a file on this computer. -186 If `api_key` is not null, this function will automatically assume that the -187 inputted `api_key` is a valid CFBD API key. -188 -189 `api_key_dir` (str, optional): -190 Optional argument. -191 If `api_key` is set to a string non-empty string, this variable is ignored. -192 If `api_key_dir` is null, and `api_key` is null, -193 this function will try to find a CFBD API key file in this user's home directory. -194 If `api_key_dir` is set to a string, and `api_key` is null, -195 this function will assume that `api_key_dir` is a directory, -196 and will try to find a CFBD API key file in that directory. -197 -198 `return_as_dict` (bool, semi-optional): -199 Semi-optional argument. -200 If you want this function to return the data as a dictionary (read: JSON object), -201 instead of a pandas `DataFrame` object, -202 set `return_as_dict` to `True`. -203 -204 Usage -205 ---------- -206 ``` -207 import time -208 -209 from cfbd_json_py.draft import get_cfbd_nfl_positions -210 -211 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. -212 -213 if cfbd_key != "tigersAreAwsome": -214 print("Using the user's API key declared in this script for this example.") -215 -216 # Gets a list of player positions for the NFL Draft from the CFBD API. -217 print("Gets a list of player positions for the NFL Draft from the CFBD API.") -218 json_data = get_cfbd_nfl_positions(api_key=cfbd_key) -219 print(json_data) -220 time.sleep(5) -221 -222 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -223 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -224 json_data = get_cfbd_nfl_positions( -225 api_key=cfbd_key, -226 return_as_dict=True) -227 print(json_data) -228 -229 else: -230 # Alternatively, if the CFBD API key exists in this python environment, -231 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -232 # you could just call these functions directly, without setting the API key -233 # in the script. -234 print("Using the user's API key suposedly loaded into this python environment for this example.") -235 -236 # Gets a list of player positions for the NFL Draft from the CFBD API. -237 print("Gets a list of player positions for the NFL Draft from the CFBD API.") -238 json_data = get_cfbd_nfl_positions() -239 print(json_data) -240 time.sleep(5) -241 -242 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -243 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -244 json_data = get_cfbd_nfl_positions(return_as_dict=True) -245 print(json_data) -246 -247 ``` -248 Returns -249 ---------- -250 A pandas `DataFrame` object with player position data, -251 or (if `return_as_dict` is set to `True`) -252 a dictionary object with player position data. -253 -254 """ -255 -256 positions_df = pd.DataFrame() -257 row_df = pd.DataFrame() -258 url = "https://api.collegefootballdata.com/draft/positions" -259 -260 # Input validation -261 ######################################################################################################################################################################################################## -262 -263 if api_key != None: -264 real_api_key = api_key -265 del api_key -266 else: -267 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -268 -269 if real_api_key == "tigersAreAwsome": -270 raise ValueError( -271 "You actually need to change `cfbd_key` to your CFBD API key.") -272 elif "Bearer " in real_api_key: -273 pass -274 elif "Bearer" in real_api_key: -275 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -276 else: -277 real_api_key = "Bearer " + real_api_key -278 -279 headers = { -280 'Authorization': f'{real_api_key}', -281 'accept': 'application/json' -282 } -283 -284 response = requests.get(url, headers=headers) -285 time.sleep(0.1) -286 -287 if response.status_code == 200: -288 pass -289 elif response.status_code == 401: -290 raise ConnectionRefusedError( -291 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -292 ) -293 else: -294 raise ConnectionError( -295 f'Could not connect.\nHTTP Status code {response.status_code}' -296 ) -297 -298 json_data = response.json() -299 -300 if return_as_dict == True: -301 return json_data -302 -303 for p in json_data: -304 position_name = p['name'] -305 position_abbreviation = p['abbreviation'] -306 -307 row_df = pd.DataFrame( -308 { -309 "position_name": position_name, -310 "position_abbreviation": position_abbreviation -311 }, index=[0] -312 ) -313 positions_df = pd.concat([positions_df, row_df], ignore_index=True) -314 -315 del position_name, position_abbreviation -316 del row_df -317 -318 return positions_df -319 +173 +174def get_cfbd_nfl_positions( +175 api_key: str = None, +176 api_key_dir: str = None, +177 return_as_dict: bool = False): +178 """ +179 Retrives a list of player positions for the NFL Draft from the CFBD API. +180 +181 Parameters +182 ---------- +183 `api_key` (str, optional): +184 Semi-optional argument. +185 If `api_key` is null, this function will attempt to load a CFBD API key +186 from the python environment, or from a file on this computer. +187 If `api_key` is not null, this function will automatically assume that the +188 inputted `api_key` is a valid CFBD API key. +189 +190 `api_key_dir` (str, optional): +191 Optional argument. +192 If `api_key` is set to a string non-empty string, this variable is ignored. +193 If `api_key_dir` is null, and `api_key` is null, +194 this function will try to find a CFBD API key file in this user's home directory. +195 If `api_key_dir` is set to a string, and `api_key` is null, +196 this function will assume that `api_key_dir` is a directory, +197 and will try to find a CFBD API key file in that directory. +198 +199 `return_as_dict` (bool, semi-optional): +200 Semi-optional argument. +201 If you want this function to return the data as a dictionary (read: JSON object), +202 instead of a pandas `DataFrame` object, +203 set `return_as_dict` to `True`. +204 +205 Usage +206 ---------- +207 ``` +208 import time +209 +210 from cfbd_json_py.draft import get_cfbd_nfl_positions +211 +212 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +213 +214 if cfbd_key != "tigersAreAwsome": +215 print("Using the user's API key declared in this script for this example.") +216 +217 # Gets a list of player positions for the NFL Draft from the CFBD API. +218 print("Gets a list of player positions for the NFL Draft from the CFBD API.") +219 json_data = get_cfbd_nfl_positions(api_key=cfbd_key) +220 print(json_data) +221 time.sleep(5) +222 +223 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +224 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +225 json_data = get_cfbd_nfl_positions( +226 api_key=cfbd_key, +227 return_as_dict=True) +228 print(json_data) +229 +230 else: +231 # Alternatively, if the CFBD API key exists in this python environment, +232 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +233 # you could just call these functions directly, without setting the API key +234 # in the script. +235 print("Using the user's API key suposedly loaded into this python environment for this example.") +236 +237 # Gets a list of player positions for the NFL Draft from the CFBD API. +238 print("Gets a list of player positions for the NFL Draft from the CFBD API.") +239 json_data = get_cfbd_nfl_positions() +240 print(json_data) +241 time.sleep(5) +242 +243 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +244 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +245 json_data = get_cfbd_nfl_positions(return_as_dict=True) +246 print(json_data) +247 +248 ``` +249 Returns +250 ---------- +251 A pandas `DataFrame` object with player position data, +252 or (if `return_as_dict` is set to `True`) +253 a dictionary object with player position data. +254 +255 """ +256 +257 positions_df = pd.DataFrame() +258 row_df = pd.DataFrame() +259 url = "https://api.collegefootballdata.com/draft/positions" +260 +261 # Input validation +262 ######################################################################################################################################################################################################## +263 +264 if api_key != None: +265 real_api_key = api_key +266 del api_key +267 else: +268 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +269 +270 if real_api_key == "tigersAreAwsome": +271 raise ValueError( +272 "You actually need to change `cfbd_key` to your CFBD API key.") +273 elif "Bearer " in real_api_key: +274 pass +275 elif "Bearer" in real_api_key: +276 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +277 else: +278 real_api_key = "Bearer " + real_api_key +279 +280 headers = { +281 'Authorization': f'{real_api_key}', +282 'accept': 'application/json' +283 } +284 +285 response = requests.get(url, headers=headers) +286 time.sleep(0.1) +287 +288 if response.status_code == 200: +289 pass +290 elif response.status_code == 401: +291 raise ConnectionRefusedError( +292 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +293 ) +294 else: +295 raise ConnectionError( +296 f'Could not connect.\nHTTP Status code {response.status_code}' +297 ) +298 +299 json_data = response.json() +300 +301 if return_as_dict == True: +302 return json_data +303 +304 for p in json_data: +305 position_name = p['name'] +306 position_abbreviation = p['abbreviation'] +307 +308 row_df = pd.DataFrame( +309 { +310 "position_name": position_name, +311 "position_abbreviation": position_abbreviation +312 }, index=[0] +313 ) +314 positions_df = pd.concat([positions_df, row_df], ignore_index=True) +315 +316 del position_name, position_abbreviation +317 del row_df +318 +319 return positions_df 320 -321def get_cfbd_nfl_draft_info( -322 api_key: str = None, -323 api_key_dir: str = None, -324 season: int = None, -325 nfl_team: str = None, -326 college: str = None, -327 conference_abv: str = None, -328 position: str = None, -329 return_as_dict: bool = False): -330 """ -331 Retrives a list of actual NFL Draft selections from the CFBD API. -332 -333 Parameters -334 ---------- -335 -336 `api_key` (str, optional): -337 Semi-optional argument. -338 If `api_key` is null, this function will attempt to load a CFBD API key -339 from the python environment, or from a file on this computer. -340 If `api_key` is not null, this function will automatically assume that the -341 inputted `api_key` is a valid CFBD API key. -342 -343 `api_key_dir` (str, optional): -344 Optional argument. -345 If `api_key` is set to a string non-empty string, this variable is ignored. -346 If `api_key_dir` is null, and `api_key` is null, -347 this function will try to find a CFBD API key file in this user's home directory. -348 If `api_key_dir` is set to a string, and `api_key` is null, -349 this function will assume that `api_key_dir` is a directory, -350 and will try to find a CFBD API key file in that directory. -351 -352 The following paramaters are optional, but it is highly reccomended to not call this function -353 withiout settting one of these five optional paramaters to a non-null value. -354 -355 `season` (int, semi-optional): -356 Semi-Optional argument. -357 This is the season you want NFL Draft information for. For example, if you only want -358 data for the 2020 NFL Draft, set `season` to `2020`. -359 -360 `nfl_team` (str, optional): -361 Semi-Optional argument. -362 If you only want NFL Draft selections from a specific NFL team, set `nfl_team` to the -363 name of that team. For example, if you want to only get NFL Draft information for -364 draft picks made by the Cincinnati Bengals, set `nfl_team` to `Cincinnati`. -365 -366 `college` (str, optional): -367 Semi-Optional argument. -368 If you only want NFL Draft selections from a specific CFB team, set `college` to the -369 name of that team. For example, if you want to only get NFL Draft information for -370 draft picks from the Clemson Tigers Football Program, set `college` to `Clemson`. -371 -372 `conference` (str, optional): -373 Semi-Optional argument. -374 If you only want NFL Draft selections from a specific CFB confrence, set `conference` to the abbreviation of that confrence. -375 A list of CFBD API confrence abbreviations can be found in the `conference_abbreviation` column from -376 the pandas DataFrame that is returned by calling `cfbd_json_py.conferences.get_cfbd_conference_info()`. -377 For example, if you want to only get NFL Draft information for -378 draft picks that played in the Big 12, set `confrence` to `B12`. -379 -380 `position` (str, optional): -381 Semi-Optional argument. -382 If you only want NFL Draft selections who played a specific position, -383 set `position` to that position's abbreviation. -384 A list of CFBD API positions can be found in the `position_abbreviation` column from -385 the pandas DataFrame that is returned by calling `cfbd_json_py.draft.get_cfbd_nfl_positions()`. -386 -387 `return_as_dict` (bool, semi-optional): -388 Semi-optional argument. -389 If you want this function to return the data as a dictionary (read: JSON object), -390 instead of a pandas `DataFrame` object, -391 set `return_as_dict` to `True`. -392 Usage -393 ---------- -394 -395 ``` -396 import time -397 -398 from cfbd_json_py.draft import get_cfbd_nfl_draft_info -399 -400 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. -401 -402 if cfbd_key != "tigersAreAwsome": -403 print("Using the user's API key declared in this script for this example.") -404 -405 # Get NFL Draft selections from the 2020 NFL Draft. -406 print("Get NFL Draft selections from the 2020 NFL Draft.") -407 json_data = get_cfbd_nfl_draft_info( -408 api_key=cfbd_key, -409 season=2020 -410 ) -411 print(json_data) -412 time.sleep(5) -413 -414 # Get NFL Draft selections from the 2020 NFL Draft made by the -415 # 2020 Cincinnati Bengals. -416 print("Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.") -417 json_data = get_cfbd_nfl_draft_info( -418 api_key=cfbd_key, -419 season=2020, -420 nfl_team="Cincinnati" -421 ) -422 print(json_data) -423 time.sleep(5) -424 -425 # Get NFL Draft selections from the 2020 NFL Draft made involving -426 # Clemson Tigers football players. -427 print("Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.") -428 json_data = get_cfbd_nfl_draft_info( -429 api_key=cfbd_key, -430 season=2020, -431 college="Clemson" -432 ) -433 print(json_data) -434 time.sleep(5) -435 -436 # Get NFL Draft selections from the 2020 NFL Draft made involving -437 # players who played in the Southeastern Confrence (SEC). -438 print("Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).") -439 json_data = get_cfbd_nfl_draft_info( -440 api_key=cfbd_key, -441 season=2020, -442 conference="SEC" -443 ) -444 print(json_data) -445 time.sleep(5) -446 -447 # Get NFL Draft selections from the 2020 NFL Draft made -448 # where the selected player was a QB in college. -449 print("Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.") -450 json_data = get_cfbd_nfl_draft_info( -451 api_key=cfbd_key, -452 season=2020, -453 position="QB" -454 ) -455 print(json_data) -456 time.sleep(5) -457 -458 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -459 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -460 json_data = get_cfbd_nfl_draft_info( -461 season=2020, -462 position="QB", -463 api_key=cfbd_key, -464 return_as_dict=True -465 ) -466 print(json_data) -467 -468 else: -469 # Alternatively, if the CFBD API key exists in this python environment, -470 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -471 # you could just call these functions directly, without setting the API key -472 # in the script. -473 print("Using the user's API key suposedly loaded into this python environment for this example.") -474 -475 # Get NFL Draft selections from the 2020 NFL Draft. -476 print("Get NFL Draft selections from the 2020 NFL Draft.") -477 json_data = get_cfbd_nfl_draft_info(season=2020) -478 print(json_data) -479 time.sleep(5) -480 -481 # Get NFL Draft selections from the 2020 NFL Draft made by the -482 # 2020 Cincinnati Bengals. -483 print("Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.") -484 json_data = get_cfbd_nfl_draft_info( -485 season=2020, -486 nfl_team="Cincinnati" -487 ) -488 print(json_data) -489 time.sleep(5) -490 -491 # Get NFL Draft selections from the 2020 NFL Draft made involving -492 # Clemson Tigers football players. -493 print("Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.") -494 json_data = get_cfbd_nfl_draft_info( -495 season=2020, -496 college="Clemson" -497 ) -498 print(json_data) -499 time.sleep(5) -500 -501 # Get NFL Draft selections from the 2020 NFL Draft made involving -502 # players who played in the Southeastern Confrence (SEC). -503 print("Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).") -504 json_data = get_cfbd_nfl_draft_info( -505 season=2020, -506 conference="SEC" -507 ) -508 print(json_data) -509 time.sleep(5) -510 -511 # Get NFL Draft selections from the 2020 NFL Draft made -512 # where the selected player was a QB in college. -513 print("Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.") -514 json_data = get_cfbd_nfl_draft_info( -515 season=2020, -516 position="QB" -517 ) -518 print(json_data) -519 time.sleep(5) -520 -521 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -522 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -523 json_data = get_cfbd_nfl_draft_info( -524 season=2020, -525 position="QB", -526 return_as_dict=True -527 ) -528 print(json_data) -529 ``` -530 -531 Returns -532 ---------- -533 A pandas `DataFrame` object with NFL Draft selection data, -534 or (if `return_as_dict` is set to `True`) -535 a dictionary object with NFL Draft selection data. -536 -537 """ -538 now = datetime.now() -539 nfl_draft_df = pd.DataFrame() -540 row_df = pd.DataFrame() -541 url = "https://api.collegefootballdata.com/draft/picks" -542 -543 # Input validation -544 ######################################################################################################################################################################################################## -545 -546 if api_key != None: -547 real_api_key = api_key -548 del api_key -549 else: -550 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -551 -552 if real_api_key == "tigersAreAwsome": -553 raise ValueError( -554 "You actually need to change `cfbd_key` to your CFBD API key.") -555 elif "Bearer " in real_api_key: -556 pass -557 elif "Bearer" in real_api_key: -558 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -559 else: -560 real_api_key = "Bearer " + real_api_key -561 -562 if season == None and nfl_team == None and college == None and conference_abv == None: -563 logging.warning( -564 "Not specifying a `season`, `nfl_team`, `college`, or `confrence` will still result in a successful get request (assuming the API key is valid)" + -565 ", but this is not a recomended method of calling this function.") -566 -567 if season < 1936 or season > now.year: -568 raise ValueError( -569 f"`season` must be an integer between 1936 and {now.year}.\nYou entered:\n{season}") -570 -571 # URL builder -572 ######################################################################################################################################################################################################## -573 url_elements = 0 -574 -575 if season != None and url_elements == 0: -576 url += f"?year={season}" -577 url_elements += 1 -578 elif season != None: -579 url += f"&year={season}" -580 url_elements += 1 -581 -582 if nfl_team != None and url_elements == 0: -583 url += f"?nflTeam={nfl_team}" # nfl_team = "Cincinnati", not "CIN" -584 url_elements += 1 -585 elif nfl_team != None: -586 url += f"&nflTeam={nfl_team}" -587 url_elements += 1 -588 -589 if college != None and url_elements == 0: -590 url += f"?college={college}" -591 url_elements += 1 -592 elif college != None: -593 url += f"&college={college}" -594 url_elements += 1 -595 -596 if conference_abv != None and url_elements == 0: -597 # conference = "SEC", not "Southeastern Confrence" -598 url += f"?conference={conference_abv}" -599 url_elements += 1 -600 elif conference_abv != None: -601 url += f"&conference={conference_abv}" -602 url_elements += 1 -603 -604 if position != None and url_elements == 0: -605 url += f"?position={position}" -606 url_elements += 1 -607 elif position != None: -608 url += f"&position={position}" -609 url_elements += 1 -610 -611 headers = { -612 'Authorization': f'{real_api_key}', -613 'accept': 'application/json' -614 } -615 -616 response = requests.get(url, headers=headers) -617 time.sleep(0.1) -618 -619 if response.status_code == 200: -620 pass -621 elif response.status_code == 401: -622 raise ConnectionRefusedError( -623 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -624 ) -625 else: -626 raise ConnectionError( -627 f'Could not connect.\nHTTP Status code {response.status_code}' -628 ) -629 -630 json_data = response.json() -631 -632 if return_as_dict == True: -633 return json_data -634 -635 for p in tqdm(json_data): -636 college_athlete_id = p['collegeAthleteId'] -637 row_df = pd.DataFrame( -638 { -639 "college_athlete_id": college_athlete_id -640 }, index=[0] -641 ) -642 del college_athlete_id -643 -644 row_df['nfl_athlete_id'] = p['nflAthleteId'] -645 row_df['college_id'] = p['collegeId'] -646 row_df['college_team'] = p['collegeTeam'] -647 row_df['college_conference'] = p['collegeConference'] -648 row_df['nfl_team'] = p['nflTeam'] -649 row_df['draft_year'] = p['year'] -650 row_df['draft_pick_overall'] = p['overall'] -651 row_df['draft_round'] = p['round'] -652 row_df['draft_round_pick'] = p['pick'] -653 row_df['player_name'] = p['name'] -654 row_df['player_position'] = p['position'] -655 row_df['player_height'] = p['height'] -656 row_df['player_weight'] = p['weight'] -657 row_df['pre_draft_ranking'] = p['preDraftRanking'] -658 row_df['pre_draft_position_ranking'] = p['preDraftPositionRanking'] -659 row_df['pre_draft_grade'] = p['preDraftGrade'] -660 row_df['player_hometown_city'] = p['hometownInfo']['city'] -661 row_df['player_hometown_state'] = p['hometownInfo']['state'] -662 row_df['player_hometown_country'] = p['hometownInfo']['country'] -663 row_df['player_hometown_latitude'] = p['hometownInfo']['latitude'] -664 row_df['player_hometown_longitude'] = p['hometownInfo']['longitude'] -665 row_df['player_hometown_county_fips'] = p['hometownInfo']['countyFips'] -666 -667 nfl_draft_df = pd.concat([nfl_draft_df, row_df], ignore_index=True) -668 del row_df -669 -670 if len(nfl_draft_df) == 0: -671 logging.error( -672 "The CFBD API accepted your inputs, " + -673 "but found no data within your specified input paramaters." + -674 " Please double check your input paramaters." -675 ) -676 -677 return nfl_draft_df +321 +322def get_cfbd_nfl_draft_info( +323 api_key: str = None, +324 api_key_dir: str = None, +325 season: int = None, +326 nfl_team: str = None, +327 college: str = None, +328 conference_abv: str = None, +329 position: str = None, +330 return_as_dict: bool = False): +331 """ +332 Retrives a list of actual NFL Draft selections from the CFBD API. +333 +334 Parameters +335 ---------- +336 +337 `api_key` (str, optional): +338 Semi-optional argument. +339 If `api_key` is null, this function will attempt to load a CFBD API key +340 from the python environment, or from a file on this computer. +341 If `api_key` is not null, this function will automatically assume that the +342 inputted `api_key` is a valid CFBD API key. +343 +344 `api_key_dir` (str, optional): +345 Optional argument. +346 If `api_key` is set to a string non-empty string, this variable is ignored. +347 If `api_key_dir` is null, and `api_key` is null, +348 this function will try to find a CFBD API key file in this user's home directory. +349 If `api_key_dir` is set to a string, and `api_key` is null, +350 this function will assume that `api_key_dir` is a directory, +351 and will try to find a CFBD API key file in that directory. +352 +353 The following paramaters are optional, but it is highly reccomended to not call this function +354 withiout settting one of these five optional paramaters to a non-null value. +355 +356 `season` (int, semi-optional): +357 Semi-Optional argument. +358 This is the season you want NFL Draft information for. For example, if you only want +359 data for the 2020 NFL Draft, set `season` to `2020`. +360 +361 `nfl_team` (str, optional): +362 Semi-Optional argument. +363 If you only want NFL Draft selections from a specific NFL team, set `nfl_team` to the +364 name of that team. For example, if you want to only get NFL Draft information for +365 draft picks made by the Cincinnati Bengals, set `nfl_team` to `Cincinnati`. +366 +367 `college` (str, optional): +368 Semi-Optional argument. +369 If you only want NFL Draft selections from a specific CFB team, set `college` to the +370 name of that team. For example, if you want to only get NFL Draft information for +371 draft picks from the Clemson Tigers Football Program, set `college` to `Clemson`. +372 +373 `conference` (str, optional): +374 Semi-Optional argument. +375 If you only want NFL Draft selections from a specific CFB confrence, set `conference` to the abbreviation of that confrence. +376 A list of CFBD API confrence abbreviations can be found in the `conference_abbreviation` column from +377 the pandas DataFrame that is returned by calling `cfbd_json_py.conferences.get_cfbd_conference_info()`. +378 For example, if you want to only get NFL Draft information for +379 draft picks that played in the Big 12, set `confrence` to `B12`. +380 +381 `position` (str, optional): +382 Semi-Optional argument. +383 If you only want NFL Draft selections who played a specific position, +384 set `position` to that position's abbreviation. +385 A list of CFBD API positions can be found in the `position_abbreviation` column from +386 the pandas DataFrame that is returned by calling `cfbd_json_py.draft.get_cfbd_nfl_positions()`. +387 +388 `return_as_dict` (bool, semi-optional): +389 Semi-optional argument. +390 If you want this function to return the data as a dictionary (read: JSON object), +391 instead of a pandas `DataFrame` object, +392 set `return_as_dict` to `True`. +393 Usage +394 ---------- +395 +396 ``` +397 import time +398 +399 from cfbd_json_py.draft import get_cfbd_nfl_draft_info +400 +401 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +402 +403 if cfbd_key != "tigersAreAwsome": +404 print("Using the user's API key declared in this script for this example.") +405 +406 # Get NFL Draft selections from the 2020 NFL Draft. +407 print("Get NFL Draft selections from the 2020 NFL Draft.") +408 json_data = get_cfbd_nfl_draft_info( +409 api_key=cfbd_key, +410 season=2020 +411 ) +412 print(json_data) +413 time.sleep(5) +414 +415 # Get NFL Draft selections from the 2020 NFL Draft made by the +416 # 2020 Cincinnati Bengals. +417 print("Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.") +418 json_data = get_cfbd_nfl_draft_info( +419 api_key=cfbd_key, +420 season=2020, +421 nfl_team="Cincinnati" +422 ) +423 print(json_data) +424 time.sleep(5) +425 +426 # Get NFL Draft selections from the 2020 NFL Draft made involving +427 # Clemson Tigers football players. +428 print("Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.") +429 json_data = get_cfbd_nfl_draft_info( +430 api_key=cfbd_key, +431 season=2020, +432 college="Clemson" +433 ) +434 print(json_data) +435 time.sleep(5) +436 +437 # Get NFL Draft selections from the 2020 NFL Draft made involving +438 # players who played in the Southeastern Confrence (SEC). +439 print("Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).") +440 json_data = get_cfbd_nfl_draft_info( +441 api_key=cfbd_key, +442 season=2020, +443 conference="SEC" +444 ) +445 print(json_data) +446 time.sleep(5) +447 +448 # Get NFL Draft selections from the 2020 NFL Draft made +449 # where the selected player was a QB in college. +450 print("Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.") +451 json_data = get_cfbd_nfl_draft_info( +452 api_key=cfbd_key, +453 season=2020, +454 position="QB" +455 ) +456 print(json_data) +457 time.sleep(5) +458 +459 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +460 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +461 json_data = get_cfbd_nfl_draft_info( +462 season=2020, +463 position="QB", +464 api_key=cfbd_key, +465 return_as_dict=True +466 ) +467 print(json_data) +468 +469 else: +470 # Alternatively, if the CFBD API key exists in this python environment, +471 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +472 # you could just call these functions directly, without setting the API key +473 # in the script. +474 print("Using the user's API key suposedly loaded into this python environment for this example.") +475 +476 # Get NFL Draft selections from the 2020 NFL Draft. +477 print("Get NFL Draft selections from the 2020 NFL Draft.") +478 json_data = get_cfbd_nfl_draft_info(season=2020) +479 print(json_data) +480 time.sleep(5) +481 +482 # Get NFL Draft selections from the 2020 NFL Draft made by the +483 # 2020 Cincinnati Bengals. +484 print("Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.") +485 json_data = get_cfbd_nfl_draft_info( +486 season=2020, +487 nfl_team="Cincinnati" +488 ) +489 print(json_data) +490 time.sleep(5) +491 +492 # Get NFL Draft selections from the 2020 NFL Draft made involving +493 # Clemson Tigers football players. +494 print("Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.") +495 json_data = get_cfbd_nfl_draft_info( +496 season=2020, +497 college="Clemson" +498 ) +499 print(json_data) +500 time.sleep(5) +501 +502 # Get NFL Draft selections from the 2020 NFL Draft made involving +503 # players who played in the Southeastern Confrence (SEC). +504 print("Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).") +505 json_data = get_cfbd_nfl_draft_info( +506 season=2020, +507 conference="SEC" +508 ) +509 print(json_data) +510 time.sleep(5) +511 +512 # Get NFL Draft selections from the 2020 NFL Draft made +513 # where the selected player was a QB in college. +514 print("Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.") +515 json_data = get_cfbd_nfl_draft_info( +516 season=2020, +517 position="QB" +518 ) +519 print(json_data) +520 time.sleep(5) +521 +522 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +523 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +524 json_data = get_cfbd_nfl_draft_info( +525 season=2020, +526 position="QB", +527 return_as_dict=True +528 ) +529 print(json_data) +530 ``` +531 +532 Returns +533 ---------- +534 A pandas `DataFrame` object with NFL Draft selection data, +535 or (if `return_as_dict` is set to `True`) +536 a dictionary object with NFL Draft selection data. +537 +538 """ +539 now = datetime.now() +540 nfl_draft_df = pd.DataFrame() +541 row_df = pd.DataFrame() +542 url = "https://api.collegefootballdata.com/draft/picks" +543 +544 # Input validation +545 ######################################################################################################################################################################################################## +546 +547 if api_key != None: +548 real_api_key = api_key +549 del api_key +550 else: +551 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +552 +553 if real_api_key == "tigersAreAwsome": +554 raise ValueError( +555 "You actually need to change `cfbd_key` to your CFBD API key.") +556 elif "Bearer " in real_api_key: +557 pass +558 elif "Bearer" in real_api_key: +559 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +560 else: +561 real_api_key = "Bearer " + real_api_key +562 +563 if season == None and nfl_team == None and college == None and conference_abv == None: +564 logging.warning( +565 "Not specifying a `season`, `nfl_team`, `college`, or `confrence` will still result in a successful get request (assuming the API key is valid)" + +566 ", but this is not a recomended method of calling this function.") +567 +568 if season < 1936 or season > now.year: +569 raise ValueError( +570 f"`season` must be an integer between 1936 and {now.year}.\nYou entered:\n{season}") +571 +572 # URL builder +573 ######################################################################################################################################################################################################## +574 url_elements = 0 +575 +576 if season != None and url_elements == 0: +577 url += f"?year={season}" +578 url_elements += 1 +579 elif season != None: +580 url += f"&year={season}" +581 url_elements += 1 +582 +583 if nfl_team != None and url_elements == 0: +584 url += f"?nflTeam={nfl_team}" # nfl_team = "Cincinnati", not "CIN" +585 url_elements += 1 +586 elif nfl_team != None: +587 url += f"&nflTeam={nfl_team}" +588 url_elements += 1 +589 +590 if college != None and url_elements == 0: +591 url += f"?college={college}" +592 url_elements += 1 +593 elif college != None: +594 url += f"&college={college}" +595 url_elements += 1 +596 +597 if conference_abv != None and url_elements == 0: +598 # conference = "SEC", not "Southeastern Confrence" +599 url += f"?conference={conference_abv}" +600 url_elements += 1 +601 elif conference_abv != None: +602 url += f"&conference={conference_abv}" +603 url_elements += 1 +604 +605 if position != None and url_elements == 0: +606 url += f"?position={position}" +607 url_elements += 1 +608 elif position != None: +609 url += f"&position={position}" +610 url_elements += 1 +611 +612 headers = { +613 'Authorization': f'{real_api_key}', +614 'accept': 'application/json' +615 } +616 +617 response = requests.get(url, headers=headers) +618 time.sleep(0.1) +619 +620 if response.status_code == 200: +621 pass +622 elif response.status_code == 401: +623 raise ConnectionRefusedError( +624 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +625 ) +626 else: +627 raise ConnectionError( +628 f'Could not connect.\nHTTP Status code {response.status_code}' +629 ) +630 +631 json_data = response.json() +632 +633 if return_as_dict == True: +634 return json_data +635 +636 for p in tqdm(json_data): +637 college_athlete_id = p['collegeAthleteId'] +638 row_df = pd.DataFrame( +639 { +640 "college_athlete_id": college_athlete_id +641 }, index=[0] +642 ) +643 del college_athlete_id +644 +645 row_df['nfl_athlete_id'] = p['nflAthleteId'] +646 row_df['college_id'] = p['collegeId'] +647 row_df['college_team'] = p['collegeTeam'] +648 row_df['college_conference'] = p['collegeConference'] +649 row_df['nfl_team'] = p['nflTeam'] +650 row_df['draft_year'] = p['year'] +651 row_df['draft_pick_overall'] = p['overall'] +652 row_df['draft_round'] = p['round'] +653 row_df['draft_round_pick'] = p['pick'] +654 row_df['player_name'] = p['name'] +655 row_df['player_position'] = p['position'] +656 row_df['player_height'] = p['height'] +657 row_df['player_weight'] = p['weight'] +658 row_df['pre_draft_ranking'] = p['preDraftRanking'] +659 row_df['pre_draft_position_ranking'] = p['preDraftPositionRanking'] +660 row_df['pre_draft_grade'] = p['preDraftGrade'] +661 row_df['player_hometown_city'] = p['hometownInfo']['city'] +662 row_df['player_hometown_state'] = p['hometownInfo']['state'] +663 row_df['player_hometown_country'] = p['hometownInfo']['country'] +664 row_df['player_hometown_latitude'] = p['hometownInfo']['latitude'] +665 row_df['player_hometown_longitude'] = p['hometownInfo']['longitude'] +666 row_df['player_hometown_county_fips'] = p['hometownInfo']['countyFips'] +667 +668 nfl_draft_df = pd.concat([nfl_draft_df, row_df], ignore_index=True) +669 del row_df +670 +671 if len(nfl_draft_df) == 0: +672 logging.error( +673 "The CFBD API accepted your inputs, " + +674 "but found no data within your specified input paramaters." + +675 " Please double check your input paramaters." +676 ) +677 +678 return nfl_draft_df
18def get_cfbd_nfl_teams( - 19 api_key: str = None, - 20 api_key_dir: str = None, - 21 return_as_dict: bool = False): - 22 """ - 23 Retrives a list of NFL teams from the CFBD API. - 24 - 25 Parameters - 26 ---------- - 27 `api_key` (str, optional): - 28 Semi-optional argument. - 29 If `api_key` is null, this function will attempt to load a CFBD API key - 30 from the python environment, or from a file on this computer. - 31 If `api_key` is not null, this function will automatically assume that the - 32 inputted `api_key` is a valid CFBD API key. - 33 - 34 `api_key_dir` (str, optional): - 35 Optional argument. - 36 If `api_key` is set to a string non-empty string, this variable is ignored. - 37 If `api_key_dir` is null, and `api_key` is null, - 38 this function will try to find a CFBD API key file in this user's home directory. - 39 If `api_key_dir` is set to a string, and `api_key` is null, - 40 this function will assume that `api_key_dir` is a directory, - 41 and will try to find a CFBD API key file in that directory. - 42 - 43 `return_as_dict` (bool, semi-optional): - 44 Semi-optional argument. - 45 If you want this function to return the data as a dictionary (read: JSON object), - 46 instead of a pandas `DataFrame` object, - 47 set `return_as_dict` to `True`. - 48 - 49 Usage - 50 ---------- - 51 ``` - 52 import time - 53 - 54 from cfbd_json_py.draft import get_cfbd_nfl_teams - 55 - 56 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. - 57 - 58 if cfbd_key != "tigersAreAwsome": - 59 print("Using the user's API key declared in this script for this example.") - 60 - 61 # Gets NFL team info from the CFBD API. - 62 print("Gets NFL team info from the CFBD API.") - 63 json_data = get_cfbd_nfl_teams(api_key=cfbd_key) - 64 print(json_data) - 65 time.sleep(5) - 66 - 67 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. - 68 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") - 69 json_data = get_cfbd_nfl_teams( - 70 api_key=cfbd_key, - 71 return_as_dict=True) - 72 print(json_data) - 73 - 74 else: - 75 # Alternatively, if the CFBD API key exists in this python environment, - 76 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), - 77 # you could just call these functions directly, without setting the API key - 78 # in the script. - 79 print("Using the user's API key suposedly loaded into this python environment for this example.") - 80 - 81 # Gets NFL team info from the CFBD API. - 82 print("Gets NFL team info from the CFBD API.") - 83 json_data = get_cfbd_nfl_teams() - 84 print(json_data) - 85 time.sleep(5) - 86 - 87 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. - 88 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") - 89 json_data = get_cfbd_nfl_teams(return_as_dict=True) - 90 print(json_data) - 91 - 92 ``` - 93 - 94 Returns - 95 ---------- - 96 A pandas `DataFrame` object with NFL team data, - 97 or (if `return_as_dict` is set to `True`) - 98 a dictionary object with NFL team data. - 99 -100 """ -101 -102 nfl_teams_df = pd.DataFrame() -103 row_df = pd.DataFrame() -104 url = "https://api.collegefootballdata.com/draft/teams" -105 -106 # Input validation -107 ######################################################################################################################################################################################################## -108 -109 if api_key != None: -110 real_api_key = api_key -111 del api_key -112 else: -113 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -114 -115 if real_api_key == "tigersAreAwsome": -116 raise ValueError( -117 "You actually need to change `cfbd_key` to your CFBD API key.") -118 elif "Bearer " in real_api_key: -119 pass -120 elif "Bearer" in real_api_key: -121 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -122 else: -123 real_api_key = "Bearer " + real_api_key -124 -125 headers = { -126 'Authorization': f'{real_api_key}', -127 'accept': 'application/json' -128 } -129 -130 response = requests.get(url, headers=headers) -131 time.sleep(0.1) -132 -133 if response.status_code == 200: -134 pass -135 elif response.status_code == 401: -136 raise ConnectionRefusedError( -137 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -138 ) -139 else: -140 raise ConnectionError( -141 f'Could not connect.\nHTTP Status code {response.status_code}' -142 ) -143 -144 json_data = response.json() -145 -146 if return_as_dict == True: -147 return json_data -148 -149 for nfl_team in json_data: -150 nfl_team_location = nfl_team['location'] -151 nfl_team_nickname = nfl_team['nickname'] -152 nfl_team_display_name = nfl_team['displayName'] -153 nfl_team_logo = nfl_team['logo'] -154 -155 row_df = pd.DataFrame( -156 { -157 "nfl_team_location": nfl_team_location, -158 "nfl_team_nickname": nfl_team_nickname, -159 "nfl_team_display_name": nfl_team_display_name, -160 "nfl_team_logo": nfl_team_logo -161 }, index=[0] -162 ) -163 -164 nfl_teams_df = pd.concat([nfl_teams_df, row_df], ignore_index=True) -165 -166 del nfl_team_location, nfl_team_nickname, \ -167 nfl_team_display_name, nfl_team_logo -168 -169 del row_df -170 -171 return nfl_teams_df +@@ -999,152 +1000,152 @@19def get_cfbd_nfl_teams( + 20 api_key: str = None, + 21 api_key_dir: str = None, + 22 return_as_dict: bool = False): + 23 """ + 24 Retrives a list of NFL teams from the CFBD API. + 25 + 26 Parameters + 27 ---------- + 28 `api_key` (str, optional): + 29 Semi-optional argument. + 30 If `api_key` is null, this function will attempt to load a CFBD API key + 31 from the python environment, or from a file on this computer. + 32 If `api_key` is not null, this function will automatically assume that the + 33 inputted `api_key` is a valid CFBD API key. + 34 + 35 `api_key_dir` (str, optional): + 36 Optional argument. + 37 If `api_key` is set to a string non-empty string, this variable is ignored. + 38 If `api_key_dir` is null, and `api_key` is null, + 39 this function will try to find a CFBD API key file in this user's home directory. + 40 If `api_key_dir` is set to a string, and `api_key` is null, + 41 this function will assume that `api_key_dir` is a directory, + 42 and will try to find a CFBD API key file in that directory. + 43 + 44 `return_as_dict` (bool, semi-optional): + 45 Semi-optional argument. + 46 If you want this function to return the data as a dictionary (read: JSON object), + 47 instead of a pandas `DataFrame` object, + 48 set `return_as_dict` to `True`. + 49 + 50 Usage + 51 ---------- + 52 ``` + 53 import time + 54 + 55 from cfbd_json_py.draft import get_cfbd_nfl_teams + 56 + 57 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 58 + 59 if cfbd_key != "tigersAreAwsome": + 60 print("Using the user's API key declared in this script for this example.") + 61 + 62 # Gets NFL team info from the CFBD API. + 63 print("Gets NFL team info from the CFBD API.") + 64 json_data = get_cfbd_nfl_teams(api_key=cfbd_key) + 65 print(json_data) + 66 time.sleep(5) + 67 + 68 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. + 69 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 70 json_data = get_cfbd_nfl_teams( + 71 api_key=cfbd_key, + 72 return_as_dict=True) + 73 print(json_data) + 74 + 75 else: + 76 # Alternatively, if the CFBD API key exists in this python environment, + 77 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + 78 # you could just call these functions directly, without setting the API key + 79 # in the script. + 80 print("Using the user's API key suposedly loaded into this python environment for this example.") + 81 + 82 # Gets NFL team info from the CFBD API. + 83 print("Gets NFL team info from the CFBD API.") + 84 json_data = get_cfbd_nfl_teams() + 85 print(json_data) + 86 time.sleep(5) + 87 + 88 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. + 89 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 90 json_data = get_cfbd_nfl_teams(return_as_dict=True) + 91 print(json_data) + 92 + 93 ``` + 94 + 95 Returns + 96 ---------- + 97 A pandas `DataFrame` object with NFL team data, + 98 or (if `return_as_dict` is set to `True`) + 99 a dictionary object with NFL team data. +100 +101 """ +102 +103 nfl_teams_df = pd.DataFrame() +104 row_df = pd.DataFrame() +105 url = "https://api.collegefootballdata.com/draft/teams" +106 +107 # Input validation +108 ######################################################################################################################################################################################################## +109 +110 if api_key != None: +111 real_api_key = api_key +112 del api_key +113 else: +114 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +115 +116 if real_api_key == "tigersAreAwsome": +117 raise ValueError( +118 "You actually need to change `cfbd_key` to your CFBD API key.") +119 elif "Bearer " in real_api_key: +120 pass +121 elif "Bearer" in real_api_key: +122 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +123 else: +124 real_api_key = "Bearer " + real_api_key +125 +126 headers = { +127 'Authorization': f'{real_api_key}', +128 'accept': 'application/json' +129 } +130 +131 response = requests.get(url, headers=headers) +132 time.sleep(0.1) +133 +134 if response.status_code == 200: +135 pass +136 elif response.status_code == 401: +137 raise ConnectionRefusedError( +138 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +139 ) +140 else: +141 raise ConnectionError( +142 f'Could not connect.\nHTTP Status code {response.status_code}' +143 ) +144 +145 json_data = response.json() +146 +147 if return_as_dict == True: +148 return json_data +149 +150 for nfl_team in json_data: +151 nfl_team_location = nfl_team['location'] +152 nfl_team_nickname = nfl_team['nickname'] +153 nfl_team_display_name = nfl_team['displayName'] +154 nfl_team_logo = nfl_team['logo'] +155 +156 row_df = pd.DataFrame( +157 { +158 "nfl_team_location": nfl_team_location, +159 "nfl_team_nickname": nfl_team_nickname, +160 "nfl_team_display_name": nfl_team_display_name, +161 "nfl_team_logo": nfl_team_logo +162 }, index=[0] +163 ) +164 +165 nfl_teams_df = pd.concat([nfl_teams_df, row_df], ignore_index=True) +166 +167 del nfl_team_location, nfl_team_nickname, \ +168 nfl_team_display_name, nfl_team_logo +169 +170 del row_df +171 +172 return nfl_teams_dfReturns
174def get_cfbd_nfl_positions( -175 api_key: str = None, -176 api_key_dir: str = None, -177 return_as_dict: bool = False): -178 """ -179 Retrives a list of player positions for the NFL Draft from the CFBD API. -180 -181 Parameters -182 ---------- -183 `api_key` (str, optional): -184 Semi-optional argument. -185 If `api_key` is null, this function will attempt to load a CFBD API key -186 from the python environment, or from a file on this computer. -187 If `api_key` is not null, this function will automatically assume that the -188 inputted `api_key` is a valid CFBD API key. -189 -190 `api_key_dir` (str, optional): -191 Optional argument. -192 If `api_key` is set to a string non-empty string, this variable is ignored. -193 If `api_key_dir` is null, and `api_key` is null, -194 this function will try to find a CFBD API key file in this user's home directory. -195 If `api_key_dir` is set to a string, and `api_key` is null, -196 this function will assume that `api_key_dir` is a directory, -197 and will try to find a CFBD API key file in that directory. -198 -199 `return_as_dict` (bool, semi-optional): -200 Semi-optional argument. -201 If you want this function to return the data as a dictionary (read: JSON object), -202 instead of a pandas `DataFrame` object, -203 set `return_as_dict` to `True`. -204 -205 Usage -206 ---------- -207 ``` -208 import time -209 -210 from cfbd_json_py.draft import get_cfbd_nfl_positions -211 -212 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. -213 -214 if cfbd_key != "tigersAreAwsome": -215 print("Using the user's API key declared in this script for this example.") -216 -217 # Gets a list of player positions for the NFL Draft from the CFBD API. -218 print("Gets a list of player positions for the NFL Draft from the CFBD API.") -219 json_data = get_cfbd_nfl_positions(api_key=cfbd_key) -220 print(json_data) -221 time.sleep(5) -222 -223 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -224 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -225 json_data = get_cfbd_nfl_positions( -226 api_key=cfbd_key, -227 return_as_dict=True) -228 print(json_data) -229 -230 else: -231 # Alternatively, if the CFBD API key exists in this python environment, -232 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -233 # you could just call these functions directly, without setting the API key -234 # in the script. -235 print("Using the user's API key suposedly loaded into this python environment for this example.") -236 -237 # Gets a list of player positions for the NFL Draft from the CFBD API. -238 print("Gets a list of player positions for the NFL Draft from the CFBD API.") -239 json_data = get_cfbd_nfl_positions() -240 print(json_data) -241 time.sleep(5) -242 -243 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -244 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -245 json_data = get_cfbd_nfl_positions(return_as_dict=True) -246 print(json_data) -247 -248 ``` -249 Returns -250 ---------- -251 A pandas `DataFrame` object with player position data, -252 or (if `return_as_dict` is set to `True`) -253 a dictionary object with player position data. -254 -255 """ -256 -257 positions_df = pd.DataFrame() -258 row_df = pd.DataFrame() -259 url = "https://api.collegefootballdata.com/draft/positions" -260 -261 # Input validation -262 ######################################################################################################################################################################################################## -263 -264 if api_key != None: -265 real_api_key = api_key -266 del api_key -267 else: -268 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -269 -270 if real_api_key == "tigersAreAwsome": -271 raise ValueError( -272 "You actually need to change `cfbd_key` to your CFBD API key.") -273 elif "Bearer " in real_api_key: -274 pass -275 elif "Bearer" in real_api_key: -276 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -277 else: -278 real_api_key = "Bearer " + real_api_key -279 -280 headers = { -281 'Authorization': f'{real_api_key}', -282 'accept': 'application/json' -283 } -284 -285 response = requests.get(url, headers=headers) -286 time.sleep(0.1) -287 -288 if response.status_code == 200: -289 pass -290 elif response.status_code == 401: -291 raise ConnectionRefusedError( -292 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -293 ) -294 else: -295 raise ConnectionError( -296 f'Could not connect.\nHTTP Status code {response.status_code}' -297 ) -298 -299 json_data = response.json() -300 -301 if return_as_dict == True: -302 return json_data -303 -304 for p in json_data: -305 position_name = p['name'] -306 position_abbreviation = p['abbreviation'] -307 -308 row_df = pd.DataFrame( -309 { -310 "position_name": position_name, -311 "position_abbreviation": position_abbreviation -312 }, index=[0] -313 ) -314 positions_df = pd.concat([positions_df, row_df], ignore_index=True) -315 -316 del position_name, position_abbreviation -317 del row_df -318 -319 return positions_df +@@ -1238,363 +1239,363 @@175def get_cfbd_nfl_positions( +176 api_key: str = None, +177 api_key_dir: str = None, +178 return_as_dict: bool = False): +179 """ +180 Retrives a list of player positions for the NFL Draft from the CFBD API. +181 +182 Parameters +183 ---------- +184 `api_key` (str, optional): +185 Semi-optional argument. +186 If `api_key` is null, this function will attempt to load a CFBD API key +187 from the python environment, or from a file on this computer. +188 If `api_key` is not null, this function will automatically assume that the +189 inputted `api_key` is a valid CFBD API key. +190 +191 `api_key_dir` (str, optional): +192 Optional argument. +193 If `api_key` is set to a string non-empty string, this variable is ignored. +194 If `api_key_dir` is null, and `api_key` is null, +195 this function will try to find a CFBD API key file in this user's home directory. +196 If `api_key_dir` is set to a string, and `api_key` is null, +197 this function will assume that `api_key_dir` is a directory, +198 and will try to find a CFBD API key file in that directory. +199 +200 `return_as_dict` (bool, semi-optional): +201 Semi-optional argument. +202 If you want this function to return the data as a dictionary (read: JSON object), +203 instead of a pandas `DataFrame` object, +204 set `return_as_dict` to `True`. +205 +206 Usage +207 ---------- +208 ``` +209 import time +210 +211 from cfbd_json_py.draft import get_cfbd_nfl_positions +212 +213 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +214 +215 if cfbd_key != "tigersAreAwsome": +216 print("Using the user's API key declared in this script for this example.") +217 +218 # Gets a list of player positions for the NFL Draft from the CFBD API. +219 print("Gets a list of player positions for the NFL Draft from the CFBD API.") +220 json_data = get_cfbd_nfl_positions(api_key=cfbd_key) +221 print(json_data) +222 time.sleep(5) +223 +224 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +225 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +226 json_data = get_cfbd_nfl_positions( +227 api_key=cfbd_key, +228 return_as_dict=True) +229 print(json_data) +230 +231 else: +232 # Alternatively, if the CFBD API key exists in this python environment, +233 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +234 # you could just call these functions directly, without setting the API key +235 # in the script. +236 print("Using the user's API key suposedly loaded into this python environment for this example.") +237 +238 # Gets a list of player positions for the NFL Draft from the CFBD API. +239 print("Gets a list of player positions for the NFL Draft from the CFBD API.") +240 json_data = get_cfbd_nfl_positions() +241 print(json_data) +242 time.sleep(5) +243 +244 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +245 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +246 json_data = get_cfbd_nfl_positions(return_as_dict=True) +247 print(json_data) +248 +249 ``` +250 Returns +251 ---------- +252 A pandas `DataFrame` object with player position data, +253 or (if `return_as_dict` is set to `True`) +254 a dictionary object with player position data. +255 +256 """ +257 +258 positions_df = pd.DataFrame() +259 row_df = pd.DataFrame() +260 url = "https://api.collegefootballdata.com/draft/positions" +261 +262 # Input validation +263 ######################################################################################################################################################################################################## +264 +265 if api_key != None: +266 real_api_key = api_key +267 del api_key +268 else: +269 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +270 +271 if real_api_key == "tigersAreAwsome": +272 raise ValueError( +273 "You actually need to change `cfbd_key` to your CFBD API key.") +274 elif "Bearer " in real_api_key: +275 pass +276 elif "Bearer" in real_api_key: +277 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +278 else: +279 real_api_key = "Bearer " + real_api_key +280 +281 headers = { +282 'Authorization': f'{real_api_key}', +283 'accept': 'application/json' +284 } +285 +286 response = requests.get(url, headers=headers) +287 time.sleep(0.1) +288 +289 if response.status_code == 200: +290 pass +291 elif response.status_code == 401: +292 raise ConnectionRefusedError( +293 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +294 ) +295 else: +296 raise ConnectionError( +297 f'Could not connect.\nHTTP Status code {response.status_code}' +298 ) +299 +300 json_data = response.json() +301 +302 if return_as_dict == True: +303 return json_data +304 +305 for p in json_data: +306 position_name = p['name'] +307 position_abbreviation = p['abbreviation'] +308 +309 row_df = pd.DataFrame( +310 { +311 "position_name": position_name, +312 "position_abbreviation": position_abbreviation +313 }, index=[0] +314 ) +315 positions_df = pd.concat([positions_df, row_df], ignore_index=True) +316 +317 del position_name, position_abbreviation +318 del row_df +319 +320 return positions_dfReturns
322def get_cfbd_nfl_draft_info( -323 api_key: str = None, -324 api_key_dir: str = None, -325 season: int = None, -326 nfl_team: str = None, -327 college: str = None, -328 conference_abv: str = None, -329 position: str = None, -330 return_as_dict: bool = False): -331 """ -332 Retrives a list of actual NFL Draft selections from the CFBD API. -333 -334 Parameters -335 ---------- -336 -337 `api_key` (str, optional): -338 Semi-optional argument. -339 If `api_key` is null, this function will attempt to load a CFBD API key -340 from the python environment, or from a file on this computer. -341 If `api_key` is not null, this function will automatically assume that the -342 inputted `api_key` is a valid CFBD API key. -343 -344 `api_key_dir` (str, optional): -345 Optional argument. -346 If `api_key` is set to a string non-empty string, this variable is ignored. -347 If `api_key_dir` is null, and `api_key` is null, -348 this function will try to find a CFBD API key file in this user's home directory. -349 If `api_key_dir` is set to a string, and `api_key` is null, -350 this function will assume that `api_key_dir` is a directory, -351 and will try to find a CFBD API key file in that directory. -352 -353 The following paramaters are optional, but it is highly reccomended to not call this function -354 withiout settting one of these five optional paramaters to a non-null value. -355 -356 `season` (int, semi-optional): -357 Semi-Optional argument. -358 This is the season you want NFL Draft information for. For example, if you only want -359 data for the 2020 NFL Draft, set `season` to `2020`. -360 -361 `nfl_team` (str, optional): -362 Semi-Optional argument. -363 If you only want NFL Draft selections from a specific NFL team, set `nfl_team` to the -364 name of that team. For example, if you want to only get NFL Draft information for -365 draft picks made by the Cincinnati Bengals, set `nfl_team` to `Cincinnati`. -366 -367 `college` (str, optional): -368 Semi-Optional argument. -369 If you only want NFL Draft selections from a specific CFB team, set `college` to the -370 name of that team. For example, if you want to only get NFL Draft information for -371 draft picks from the Clemson Tigers Football Program, set `college` to `Clemson`. -372 -373 `conference` (str, optional): -374 Semi-Optional argument. -375 If you only want NFL Draft selections from a specific CFB confrence, set `conference` to the abbreviation of that confrence. -376 A list of CFBD API confrence abbreviations can be found in the `conference_abbreviation` column from -377 the pandas DataFrame that is returned by calling `cfbd_json_py.conferences.get_cfbd_conference_info()`. -378 For example, if you want to only get NFL Draft information for -379 draft picks that played in the Big 12, set `confrence` to `B12`. -380 -381 `position` (str, optional): -382 Semi-Optional argument. -383 If you only want NFL Draft selections who played a specific position, -384 set `position` to that position's abbreviation. -385 A list of CFBD API positions can be found in the `position_abbreviation` column from -386 the pandas DataFrame that is returned by calling `cfbd_json_py.draft.get_cfbd_nfl_positions()`. -387 -388 `return_as_dict` (bool, semi-optional): -389 Semi-optional argument. -390 If you want this function to return the data as a dictionary (read: JSON object), -391 instead of a pandas `DataFrame` object, -392 set `return_as_dict` to `True`. -393 Usage -394 ---------- -395 -396 ``` -397 import time -398 -399 from cfbd_json_py.draft import get_cfbd_nfl_draft_info -400 -401 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. -402 -403 if cfbd_key != "tigersAreAwsome": -404 print("Using the user's API key declared in this script for this example.") -405 -406 # Get NFL Draft selections from the 2020 NFL Draft. -407 print("Get NFL Draft selections from the 2020 NFL Draft.") -408 json_data = get_cfbd_nfl_draft_info( -409 api_key=cfbd_key, -410 season=2020 -411 ) -412 print(json_data) -413 time.sleep(5) -414 -415 # Get NFL Draft selections from the 2020 NFL Draft made by the -416 # 2020 Cincinnati Bengals. -417 print("Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.") -418 json_data = get_cfbd_nfl_draft_info( -419 api_key=cfbd_key, -420 season=2020, -421 nfl_team="Cincinnati" -422 ) -423 print(json_data) -424 time.sleep(5) -425 -426 # Get NFL Draft selections from the 2020 NFL Draft made involving -427 # Clemson Tigers football players. -428 print("Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.") -429 json_data = get_cfbd_nfl_draft_info( -430 api_key=cfbd_key, -431 season=2020, -432 college="Clemson" -433 ) -434 print(json_data) -435 time.sleep(5) -436 -437 # Get NFL Draft selections from the 2020 NFL Draft made involving -438 # players who played in the Southeastern Confrence (SEC). -439 print("Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).") -440 json_data = get_cfbd_nfl_draft_info( -441 api_key=cfbd_key, -442 season=2020, -443 conference="SEC" -444 ) -445 print(json_data) -446 time.sleep(5) -447 -448 # Get NFL Draft selections from the 2020 NFL Draft made -449 # where the selected player was a QB in college. -450 print("Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.") -451 json_data = get_cfbd_nfl_draft_info( -452 api_key=cfbd_key, -453 season=2020, -454 position="QB" -455 ) -456 print(json_data) -457 time.sleep(5) -458 -459 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -460 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -461 json_data = get_cfbd_nfl_draft_info( -462 season=2020, -463 position="QB", -464 api_key=cfbd_key, -465 return_as_dict=True -466 ) -467 print(json_data) -468 -469 else: -470 # Alternatively, if the CFBD API key exists in this python environment, -471 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -472 # you could just call these functions directly, without setting the API key -473 # in the script. -474 print("Using the user's API key suposedly loaded into this python environment for this example.") -475 -476 # Get NFL Draft selections from the 2020 NFL Draft. -477 print("Get NFL Draft selections from the 2020 NFL Draft.") -478 json_data = get_cfbd_nfl_draft_info(season=2020) -479 print(json_data) -480 time.sleep(5) -481 -482 # Get NFL Draft selections from the 2020 NFL Draft made by the -483 # 2020 Cincinnati Bengals. -484 print("Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.") -485 json_data = get_cfbd_nfl_draft_info( -486 season=2020, -487 nfl_team="Cincinnati" -488 ) -489 print(json_data) -490 time.sleep(5) -491 -492 # Get NFL Draft selections from the 2020 NFL Draft made involving -493 # Clemson Tigers football players. -494 print("Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.") -495 json_data = get_cfbd_nfl_draft_info( -496 season=2020, -497 college="Clemson" -498 ) -499 print(json_data) -500 time.sleep(5) -501 -502 # Get NFL Draft selections from the 2020 NFL Draft made involving -503 # players who played in the Southeastern Confrence (SEC). -504 print("Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).") -505 json_data = get_cfbd_nfl_draft_info( -506 season=2020, -507 conference="SEC" -508 ) -509 print(json_data) -510 time.sleep(5) -511 -512 # Get NFL Draft selections from the 2020 NFL Draft made -513 # where the selected player was a QB in college. -514 print("Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.") -515 json_data = get_cfbd_nfl_draft_info( -516 season=2020, -517 position="QB" -518 ) -519 print(json_data) -520 time.sleep(5) -521 -522 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. -523 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -524 json_data = get_cfbd_nfl_draft_info( -525 season=2020, -526 position="QB", -527 return_as_dict=True -528 ) -529 print(json_data) -530 ``` -531 -532 Returns -533 ---------- -534 A pandas `DataFrame` object with NFL Draft selection data, -535 or (if `return_as_dict` is set to `True`) -536 a dictionary object with NFL Draft selection data. -537 -538 """ -539 now = datetime.now() -540 nfl_draft_df = pd.DataFrame() -541 row_df = pd.DataFrame() -542 url = "https://api.collegefootballdata.com/draft/picks" -543 -544 # Input validation -545 ######################################################################################################################################################################################################## -546 -547 if api_key != None: -548 real_api_key = api_key -549 del api_key -550 else: -551 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -552 -553 if real_api_key == "tigersAreAwsome": -554 raise ValueError( -555 "You actually need to change `cfbd_key` to your CFBD API key.") -556 elif "Bearer " in real_api_key: -557 pass -558 elif "Bearer" in real_api_key: -559 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -560 else: -561 real_api_key = "Bearer " + real_api_key -562 -563 if season == None and nfl_team == None and college == None and conference_abv == None: -564 logging.warning( -565 "Not specifying a `season`, `nfl_team`, `college`, or `confrence` will still result in a successful get request (assuming the API key is valid)" + -566 ", but this is not a recomended method of calling this function.") -567 -568 if season < 1936 or season > now.year: -569 raise ValueError( -570 f"`season` must be an integer between 1936 and {now.year}.\nYou entered:\n{season}") -571 -572 # URL builder -573 ######################################################################################################################################################################################################## -574 url_elements = 0 -575 -576 if season != None and url_elements == 0: -577 url += f"?year={season}" -578 url_elements += 1 -579 elif season != None: -580 url += f"&year={season}" -581 url_elements += 1 -582 -583 if nfl_team != None and url_elements == 0: -584 url += f"?nflTeam={nfl_team}" # nfl_team = "Cincinnati", not "CIN" -585 url_elements += 1 -586 elif nfl_team != None: -587 url += f"&nflTeam={nfl_team}" -588 url_elements += 1 -589 -590 if college != None and url_elements == 0: -591 url += f"?college={college}" -592 url_elements += 1 -593 elif college != None: -594 url += f"&college={college}" -595 url_elements += 1 -596 -597 if conference_abv != None and url_elements == 0: -598 # conference = "SEC", not "Southeastern Confrence" -599 url += f"?conference={conference_abv}" -600 url_elements += 1 -601 elif conference_abv != None: -602 url += f"&conference={conference_abv}" -603 url_elements += 1 -604 -605 if position != None and url_elements == 0: -606 url += f"?position={position}" -607 url_elements += 1 -608 elif position != None: -609 url += f"&position={position}" -610 url_elements += 1 -611 -612 headers = { -613 'Authorization': f'{real_api_key}', -614 'accept': 'application/json' -615 } -616 -617 response = requests.get(url, headers=headers) -618 time.sleep(0.1) -619 -620 if response.status_code == 200: -621 pass -622 elif response.status_code == 401: -623 raise ConnectionRefusedError( -624 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -625 ) -626 else: -627 raise ConnectionError( -628 f'Could not connect.\nHTTP Status code {response.status_code}' -629 ) -630 -631 json_data = response.json() -632 -633 if return_as_dict == True: -634 return json_data -635 -636 for p in tqdm(json_data): -637 college_athlete_id = p['collegeAthleteId'] -638 row_df = pd.DataFrame( -639 { -640 "college_athlete_id": college_athlete_id -641 }, index=[0] -642 ) -643 del college_athlete_id -644 -645 row_df['nfl_athlete_id'] = p['nflAthleteId'] -646 row_df['college_id'] = p['collegeId'] -647 row_df['college_team'] = p['collegeTeam'] -648 row_df['college_conference'] = p['collegeConference'] -649 row_df['nfl_team'] = p['nflTeam'] -650 row_df['draft_year'] = p['year'] -651 row_df['draft_pick_overall'] = p['overall'] -652 row_df['draft_round'] = p['round'] -653 row_df['draft_round_pick'] = p['pick'] -654 row_df['player_name'] = p['name'] -655 row_df['player_position'] = p['position'] -656 row_df['player_height'] = p['height'] -657 row_df['player_weight'] = p['weight'] -658 row_df['pre_draft_ranking'] = p['preDraftRanking'] -659 row_df['pre_draft_position_ranking'] = p['preDraftPositionRanking'] -660 row_df['pre_draft_grade'] = p['preDraftGrade'] -661 row_df['player_hometown_city'] = p['hometownInfo']['city'] -662 row_df['player_hometown_state'] = p['hometownInfo']['state'] -663 row_df['player_hometown_country'] = p['hometownInfo']['country'] -664 row_df['player_hometown_latitude'] = p['hometownInfo']['latitude'] -665 row_df['player_hometown_longitude'] = p['hometownInfo']['longitude'] -666 row_df['player_hometown_county_fips'] = p['hometownInfo']['countyFips'] -667 -668 nfl_draft_df = pd.concat([nfl_draft_df, row_df], ignore_index=True) -669 del row_df -670 -671 if len(nfl_draft_df) == 0: -672 logging.error( -673 "The CFBD API accepted your inputs, " + -674 "but found no data within your specified input paramaters." + -675 " Please double check your input paramaters." -676 ) -677 -678 return nfl_draft_df +diff --git a/docs/cfbd_json_py/drives.html b/docs/cfbd_json_py/drives.html index c951958..a002848 100644 --- a/docs/cfbd_json_py/drives.html +++ b/docs/cfbd_json_py/drives.html @@ -55,548 +55,549 @@323def get_cfbd_nfl_draft_info( +324 api_key: str = None, +325 api_key_dir: str = None, +326 season: int = None, +327 nfl_team: str = None, +328 college: str = None, +329 conference_abv: str = None, +330 position: str = None, +331 return_as_dict: bool = False): +332 """ +333 Retrives a list of actual NFL Draft selections from the CFBD API. +334 +335 Parameters +336 ---------- +337 +338 `api_key` (str, optional): +339 Semi-optional argument. +340 If `api_key` is null, this function will attempt to load a CFBD API key +341 from the python environment, or from a file on this computer. +342 If `api_key` is not null, this function will automatically assume that the +343 inputted `api_key` is a valid CFBD API key. +344 +345 `api_key_dir` (str, optional): +346 Optional argument. +347 If `api_key` is set to a string non-empty string, this variable is ignored. +348 If `api_key_dir` is null, and `api_key` is null, +349 this function will try to find a CFBD API key file in this user's home directory. +350 If `api_key_dir` is set to a string, and `api_key` is null, +351 this function will assume that `api_key_dir` is a directory, +352 and will try to find a CFBD API key file in that directory. +353 +354 The following paramaters are optional, but it is highly reccomended to not call this function +355 withiout settting one of these five optional paramaters to a non-null value. +356 +357 `season` (int, semi-optional): +358 Semi-Optional argument. +359 This is the season you want NFL Draft information for. For example, if you only want +360 data for the 2020 NFL Draft, set `season` to `2020`. +361 +362 `nfl_team` (str, optional): +363 Semi-Optional argument. +364 If you only want NFL Draft selections from a specific NFL team, set `nfl_team` to the +365 name of that team. For example, if you want to only get NFL Draft information for +366 draft picks made by the Cincinnati Bengals, set `nfl_team` to `Cincinnati`. +367 +368 `college` (str, optional): +369 Semi-Optional argument. +370 If you only want NFL Draft selections from a specific CFB team, set `college` to the +371 name of that team. For example, if you want to only get NFL Draft information for +372 draft picks from the Clemson Tigers Football Program, set `college` to `Clemson`. +373 +374 `conference` (str, optional): +375 Semi-Optional argument. +376 If you only want NFL Draft selections from a specific CFB confrence, set `conference` to the abbreviation of that confrence. +377 A list of CFBD API confrence abbreviations can be found in the `conference_abbreviation` column from +378 the pandas DataFrame that is returned by calling `cfbd_json_py.conferences.get_cfbd_conference_info()`. +379 For example, if you want to only get NFL Draft information for +380 draft picks that played in the Big 12, set `confrence` to `B12`. +381 +382 `position` (str, optional): +383 Semi-Optional argument. +384 If you only want NFL Draft selections who played a specific position, +385 set `position` to that position's abbreviation. +386 A list of CFBD API positions can be found in the `position_abbreviation` column from +387 the pandas DataFrame that is returned by calling `cfbd_json_py.draft.get_cfbd_nfl_positions()`. +388 +389 `return_as_dict` (bool, semi-optional): +390 Semi-optional argument. +391 If you want this function to return the data as a dictionary (read: JSON object), +392 instead of a pandas `DataFrame` object, +393 set `return_as_dict` to `True`. +394 Usage +395 ---------- +396 +397 ``` +398 import time +399 +400 from cfbd_json_py.draft import get_cfbd_nfl_draft_info +401 +402 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +403 +404 if cfbd_key != "tigersAreAwsome": +405 print("Using the user's API key declared in this script for this example.") +406 +407 # Get NFL Draft selections from the 2020 NFL Draft. +408 print("Get NFL Draft selections from the 2020 NFL Draft.") +409 json_data = get_cfbd_nfl_draft_info( +410 api_key=cfbd_key, +411 season=2020 +412 ) +413 print(json_data) +414 time.sleep(5) +415 +416 # Get NFL Draft selections from the 2020 NFL Draft made by the +417 # 2020 Cincinnati Bengals. +418 print("Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.") +419 json_data = get_cfbd_nfl_draft_info( +420 api_key=cfbd_key, +421 season=2020, +422 nfl_team="Cincinnati" +423 ) +424 print(json_data) +425 time.sleep(5) +426 +427 # Get NFL Draft selections from the 2020 NFL Draft made involving +428 # Clemson Tigers football players. +429 print("Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.") +430 json_data = get_cfbd_nfl_draft_info( +431 api_key=cfbd_key, +432 season=2020, +433 college="Clemson" +434 ) +435 print(json_data) +436 time.sleep(5) +437 +438 # Get NFL Draft selections from the 2020 NFL Draft made involving +439 # players who played in the Southeastern Confrence (SEC). +440 print("Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).") +441 json_data = get_cfbd_nfl_draft_info( +442 api_key=cfbd_key, +443 season=2020, +444 conference="SEC" +445 ) +446 print(json_data) +447 time.sleep(5) +448 +449 # Get NFL Draft selections from the 2020 NFL Draft made +450 # where the selected player was a QB in college. +451 print("Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.") +452 json_data = get_cfbd_nfl_draft_info( +453 api_key=cfbd_key, +454 season=2020, +455 position="QB" +456 ) +457 print(json_data) +458 time.sleep(5) +459 +460 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +461 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +462 json_data = get_cfbd_nfl_draft_info( +463 season=2020, +464 position="QB", +465 api_key=cfbd_key, +466 return_as_dict=True +467 ) +468 print(json_data) +469 +470 else: +471 # Alternatively, if the CFBD API key exists in this python environment, +472 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +473 # you could just call these functions directly, without setting the API key +474 # in the script. +475 print("Using the user's API key suposedly loaded into this python environment for this example.") +476 +477 # Get NFL Draft selections from the 2020 NFL Draft. +478 print("Get NFL Draft selections from the 2020 NFL Draft.") +479 json_data = get_cfbd_nfl_draft_info(season=2020) +480 print(json_data) +481 time.sleep(5) +482 +483 # Get NFL Draft selections from the 2020 NFL Draft made by the +484 # 2020 Cincinnati Bengals. +485 print("Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.") +486 json_data = get_cfbd_nfl_draft_info( +487 season=2020, +488 nfl_team="Cincinnati" +489 ) +490 print(json_data) +491 time.sleep(5) +492 +493 # Get NFL Draft selections from the 2020 NFL Draft made involving +494 # Clemson Tigers football players. +495 print("Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.") +496 json_data = get_cfbd_nfl_draft_info( +497 season=2020, +498 college="Clemson" +499 ) +500 print(json_data) +501 time.sleep(5) +502 +503 # Get NFL Draft selections from the 2020 NFL Draft made involving +504 # players who played in the Southeastern Confrence (SEC). +505 print("Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).") +506 json_data = get_cfbd_nfl_draft_info( +507 season=2020, +508 conference="SEC" +509 ) +510 print(json_data) +511 time.sleep(5) +512 +513 # Get NFL Draft selections from the 2020 NFL Draft made +514 # where the selected player was a QB in college. +515 print("Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.") +516 json_data = get_cfbd_nfl_draft_info( +517 season=2020, +518 position="QB" +519 ) +520 print(json_data) +521 time.sleep(5) +522 +523 # You can also tell this function to just return the API call as a Dictionary (read: JSON) object. +524 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +525 json_data = get_cfbd_nfl_draft_info( +526 season=2020, +527 position="QB", +528 return_as_dict=True +529 ) +530 print(json_data) +531 ``` +532 +533 Returns +534 ---------- +535 A pandas `DataFrame` object with NFL Draft selection data, +536 or (if `return_as_dict` is set to `True`) +537 a dictionary object with NFL Draft selection data. +538 +539 """ +540 now = datetime.now() +541 nfl_draft_df = pd.DataFrame() +542 row_df = pd.DataFrame() +543 url = "https://api.collegefootballdata.com/draft/picks" +544 +545 # Input validation +546 ######################################################################################################################################################################################################## +547 +548 if api_key != None: +549 real_api_key = api_key +550 del api_key +551 else: +552 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +553 +554 if real_api_key == "tigersAreAwsome": +555 raise ValueError( +556 "You actually need to change `cfbd_key` to your CFBD API key.") +557 elif "Bearer " in real_api_key: +558 pass +559 elif "Bearer" in real_api_key: +560 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +561 else: +562 real_api_key = "Bearer " + real_api_key +563 +564 if season == None and nfl_team == None and college == None and conference_abv == None: +565 logging.warning( +566 "Not specifying a `season`, `nfl_team`, `college`, or `confrence` will still result in a successful get request (assuming the API key is valid)" + +567 ", but this is not a recomended method of calling this function.") +568 +569 if season < 1936 or season > now.year: +570 raise ValueError( +571 f"`season` must be an integer between 1936 and {now.year}.\nYou entered:\n{season}") +572 +573 # URL builder +574 ######################################################################################################################################################################################################## +575 url_elements = 0 +576 +577 if season != None and url_elements == 0: +578 url += f"?year={season}" +579 url_elements += 1 +580 elif season != None: +581 url += f"&year={season}" +582 url_elements += 1 +583 +584 if nfl_team != None and url_elements == 0: +585 url += f"?nflTeam={nfl_team}" # nfl_team = "Cincinnati", not "CIN" +586 url_elements += 1 +587 elif nfl_team != None: +588 url += f"&nflTeam={nfl_team}" +589 url_elements += 1 +590 +591 if college != None and url_elements == 0: +592 url += f"?college={college}" +593 url_elements += 1 +594 elif college != None: +595 url += f"&college={college}" +596 url_elements += 1 +597 +598 if conference_abv != None and url_elements == 0: +599 # conference = "SEC", not "Southeastern Confrence" +600 url += f"?conference={conference_abv}" +601 url_elements += 1 +602 elif conference_abv != None: +603 url += f"&conference={conference_abv}" +604 url_elements += 1 +605 +606 if position != None and url_elements == 0: +607 url += f"?position={position}" +608 url_elements += 1 +609 elif position != None: +610 url += f"&position={position}" +611 url_elements += 1 +612 +613 headers = { +614 'Authorization': f'{real_api_key}', +615 'accept': 'application/json' +616 } +617 +618 response = requests.get(url, headers=headers) +619 time.sleep(0.1) +620 +621 if response.status_code == 200: +622 pass +623 elif response.status_code == 401: +624 raise ConnectionRefusedError( +625 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +626 ) +627 else: +628 raise ConnectionError( +629 f'Could not connect.\nHTTP Status code {response.status_code}' +630 ) +631 +632 json_data = response.json() +633 +634 if return_as_dict == True: +635 return json_data +636 +637 for p in tqdm(json_data): +638 college_athlete_id = p['collegeAthleteId'] +639 row_df = pd.DataFrame( +640 { +641 "college_athlete_id": college_athlete_id +642 }, index=[0] +643 ) +644 del college_athlete_id +645 +646 row_df['nfl_athlete_id'] = p['nflAthleteId'] +647 row_df['college_id'] = p['collegeId'] +648 row_df['college_team'] = p['collegeTeam'] +649 row_df['college_conference'] = p['collegeConference'] +650 row_df['nfl_team'] = p['nflTeam'] +651 row_df['draft_year'] = p['year'] +652 row_df['draft_pick_overall'] = p['overall'] +653 row_df['draft_round'] = p['round'] +654 row_df['draft_round_pick'] = p['pick'] +655 row_df['player_name'] = p['name'] +656 row_df['player_position'] = p['position'] +657 row_df['player_height'] = p['height'] +658 row_df['player_weight'] = p['weight'] +659 row_df['pre_draft_ranking'] = p['preDraftRanking'] +660 row_df['pre_draft_position_ranking'] = p['preDraftPositionRanking'] +661 row_df['pre_draft_grade'] = p['preDraftGrade'] +662 row_df['player_hometown_city'] = p['hometownInfo']['city'] +663 row_df['player_hometown_state'] = p['hometownInfo']['state'] +664 row_df['player_hometown_country'] = p['hometownInfo']['country'] +665 row_df['player_hometown_latitude'] = p['hometownInfo']['latitude'] +666 row_df['player_hometown_longitude'] = p['hometownInfo']['longitude'] +667 row_df['player_hometown_county_fips'] = p['hometownInfo']['countyFips'] +668 +669 nfl_draft_df = pd.concat([nfl_draft_df, row_df], ignore_index=True) +670 del row_df +671 +672 if len(nfl_draft_df) == 0: +673 logging.error( +674 "The CFBD API accepted your inputs, " + +675 "but found no data within your specified input paramaters." + +676 " Please double check your input paramaters." +677 ) +678 +679 return nfl_draft_df
@@ -612,533 +613,533 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: drives.py - 4# Purpose: Houses functions pertaining to CFB drive data within the CFBD API. - 5#################################################################################################### - 6 - 7from datetime import datetime - 8import logging - 9import time - 10import pandas as pd - 11import requests - 12from tqdm import tqdm - 13 - 14from cfbd_json_py.utls import get_cfbd_api_token - 15 + 2# Last Updated Date: 10/07/2023 10:16 AM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: drives.py + 5# Purpose: Houses functions pertaining to CFB drive data within the CFBD API. + 6#################################################################################################### + 7 + 8from datetime import datetime + 9import logging + 10import time + 11import pandas as pd + 12import requests + 13from tqdm import tqdm + 14 + 15from cfbd_json_py.utls import get_cfbd_api_token 16 - 17def get_cfbd_drives_info( - 18 season: int, - 19 api_key: str = None, - 20 api_key_dir: str = None, - 21 season_type: str = "regular", - 22 week: int = None, - 23 team: str = None, - 24 offensive_team: str = None, - 25 defensive_team: str = None, - 26 conference_abv: str = None, - 27 offensive_conference_abv: str = None, - 28 defensive_conference_abv: str = None, - 29 ncaa_division: str = "fbs", - 30 return_as_dict: bool = False): - 31 """ - 32 Retrives a list of CFB drives from the CFBD API. - 33 - 34 Parameters - 35 ---------- - 36 `season` (int, mandatory): - 37 Required argument. - 38 Specifies the season you want CFB drive information from. - 39 This must be specified, otherwise this package, and by extension - 40 the CFBD API, will not accept the request to get CFB drive information. - 41 - 42 `api_key` (str, optional): - 43 Semi-optional argument. - 44 If `api_key` is null, this function will attempt to load a CFBD API key - 45 from the python environment, or from a file on this computer. - 46 If `api_key` is not null, this function will automatically assume that the - 47 inputted `api_key` is a valid CFBD API key. - 48 - 49 `api_key_dir` (str, optional): - 50 Optional argument. - 51 If `api_key` is set to a string non-empty string, this variable is ignored. - 52 If `api_key_dir` is null, and `api_key` is null, - 53 this function will try to find a CFBD API key file in this user's home directory. - 54 If `api_key_dir` is set to a string, and `api_key` is null, - 55 this function will assume that `api_key_dir` is a directory, - 56 and will try to find a CFBD API key file in that directory. - 57 - 58 `season_type` (str, semi-optional): - 59 Semi-optional argument. - 60 By defualt, this will be set to "regular", for the CFB regular season. - 61 If you want CFB drive data for non-regular season games, - 62 set `season_type` to "postseason". - 63 If `season_type` is set to anything but "regular" or "postseason", - 64 a `ValueError()` will be raised. - 65 - 66 `week` (int, optional): - 67 Optional argument. - 68 If `week` is set to an integer, this function will attempt - 69 to load CFB drive data from games in that season, and that week. - 70 - 71 `team` (str, optional): - 72 Optional argument. - 73 If you only want CFB drive data for a team, - 74 regardless if they are the home/away team, - 75 set `team` to the name of the team you want CFB drive data from. - 76 - 77 `offensive_team` (str, optional): - 78 Optional argument. - 79 If you only want CFB drive data from a team, while they are on offense, - 80 regardless if they are the home/away team, - 81 set `team` to the name of the team you want CFB drive data from. - 82 - 83 `defensive_team` (str, optional): - 84 Optional argument. - 85 If you only want CFB drive data from a team, while they are on defense, - 86 regardless if they are the home/away team, - 87 set `team` to the name of the team you want CFB drive data from. - 88 - 89 `conference_abv` (str, optional): - 90 Optional argument. - 91 If you only want CFB drive data from games - 92 involving teams a specific confrence, - 93 set `conference_abv` to the abbreviation - 94 of the conference you want CFB drive data from. - 95 For a list of confrences, - 96 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` - 97 function. - 98 - 99 `offensive_conference_abv` (str, optional): -100 Optional argument. -101 If you only want CFB drive data from games -102 where the offensive team is from a specific confrenece, -103 set `conference_abv` to the abbreviation -104 of the conference you want CFB drive data from. -105 For a list of confrences, -106 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` -107 function. -108 -109 `defensive_conference_abv` (str, optional): -110 Optional argument. -111 If you only want CFB drive data from games -112 where the defensive team is from a specific confrenece, -113 set `conference_abv` to the abbreviation -114 of the conference you want CFB drive data from. -115 For a list of confrences, -116 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` -117 function. -118 -119 `ncaa_division` (str, semi-optional): -120 Semi-optional argument. -121 By default, `ncaa_division` will be set to "fbs", -122 short for the Football Bowl Subdivision (FBS), -123 formerly known as D1-A (read as "division one single A"), -124 the highest level in the NCAA football pyramid, -125 where teams can scolarship up to 85 players -126 on their football team soley for athletic ability, -127 and often have the largest athletics budgets -128 within the NCAA. -129 -130 Other valid inputs are: -131 - "fcs": Football Championship Subdivision (FCS), -132 formerly known as D1-AA (read as "division one double A"). -133 An FCS school is still in the 1st division of the NCAA, -134 making them elligable for the March Madness tournament, -135 but may not have the resources to compete at the FBS level -136 at this time. FCS schools are limited to 63 athletic scolarships -137 for football. -138 - "ii": NCAA Division II. Schools in this and D3 are not -139 elligable for the March Madness tournament, -140 and are limited to 36 athletic scolarships for their football team. -141 - "iii": NCAA Division III. The largest single division within the -142 NCAA football pyramid. -143 D3 schools have the distinction of being part of -144 the only NCAA division that cannot give out scolarships soley -145 for athletic ability. -146 -147 `return_as_dict` (bool, semi-optional): -148 Semi-optional argument. -149 If you want this function to return the data as a dictionary (read: JSON object), -150 instead of a pandas `DataFrame` object, -151 set `return_as_dict` to `True`. -152 -153 Usage -154 ---------- -155 ``` -156 import time -157 -158 from cfbd_json_py.drives import get_cfbd_drives_info -159 -160 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. -161 -162 if cfbd_key != "tigersAreAwsome": -163 print("Using the user's API key declared in this script for this example.") -164 -165 # Get CFB Drive data from the 2020 CFB season. -166 print("Get CFB Drive data from the 2020 CFB season.") -167 json_data = get_cfbd_drives_info( -168 api_key=cfbd_key, -169 season=2020 -170 ) -171 print(json_data) -172 time.sleep(5) -173 -174 # Get CFB Drive data from week 10 of the 2020 CFB season. -175 print("Get CFB Drive data from week 10 of the 2020 CFB season.") -176 json_data = get_cfbd_drives_info( -177 api_key=cfbd_key, -178 season=2020, -179 week=10 -180 ) -181 print(json_data) -182 time.sleep(5) -183 -184 # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats -185 # Football Team. -186 print("Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.") -187 json_data = get_cfbd_drives_info( -188 api_key=cfbd_key, -189 season=2020, -190 team="Cincinnati" -191 ) -192 print(json_data) -193 time.sleep(5) -194 -195 # Get CFB Drive data from games involving the 2020 Ohio Bobcats -196 # Football Team, when Ohio was on offense. -197 print("Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.") -198 json_data = get_cfbd_drives_info( -199 api_key=cfbd_key, -200 season=2020, -201 offensive_team="Ohio" -202 ) -203 print(json_data) -204 time.sleep(5) -205 -206 # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes -207 # Football Team, when Ohio was on offense. -208 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -209 json_data = get_cfbd_drives_info( -210 api_key=cfbd_key, -211 season=2020, -212 defensive_team="Ohio State" -213 ) -214 print(json_data) -215 time.sleep(5) -216 -217 # Get CFB Drive data from Big 12 games in the 2020 CFB season. -218 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -219 json_data = get_cfbd_drives_info( -220 api_key=cfbd_key, -221 season=2020, -222 conference_abv="B12" -223 ) -224 print(json_data) -225 time.sleep(5) -226 -227 # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season, -228 # where the Big 10 team was on offense. -229 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -230 json_data = get_cfbd_drives_info( -231 api_key=cfbd_key, -232 season=2020, -233 offensive_conference_abv="B1G" -234 ) -235 print(json_data) -236 time.sleep(5) -237 -238 # Get CFB Drive data from Mid-American Conference (MAC) games -239 # in the 2020 CFB season, where the MAC team was on offense. -240 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -241 json_data = get_cfbd_drives_info( -242 api_key=cfbd_key, -243 season=2020, -244 defensive_conference_abv="MAC" -245 ) -246 print(json_data) -247 time.sleep(5) -248 -249 # Get CFB Drive data from Football Championship Subdivision (FCS) games -250 # in week 3 ofthe 2020 CFB season, -251 # where the MAC team was on offense. -252 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -253 json_data = get_cfbd_drives_info( -254 api_key=cfbd_key, -255 season=2020, -256 week=3, -257 ncaa_division="fcs" -258 ) -259 print(json_data) -260 time.sleep(5) -261 -262 # You can also tell this function to just return the API call as -263 # a Dictionary (read: JSON) object. -264 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -265 json_data = get_cfbd_drives_info( -266 season=2020, -267 week=10, -268 api_key=cfbd_key, -269 return_as_dict=True -270 ) -271 print(json_data) -272 -273 else: -274 # Alternatively, if the CFBD API key exists in this python environment, -275 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -276 # you could just call these functions directly, without setting the API key -277 # in the script. -278 print("Using the user's API key suposedly loaded into this python environment for this example.") -279 -280 # Get CFB Drive data from the 2020 CFB season. -281 print("Get CFB Drive data from the 2020 CFB season.") -282 json_data = get_cfbd_drives_info( -283 season=2020 -284 ) -285 print(json_data) -286 time.sleep(5) -287 -288 # Get CFB Drive data from week 10 of the 2020 CFB season. -289 print("Get CFB Drive data from week 10 of the 2020 CFB season.") -290 json_data = get_cfbd_drives_info( -291 season=2020, -292 week=10 -293 ) -294 print(json_data) -295 time.sleep(5) -296 -297 # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats -298 # Football Team. -299 print("Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.") -300 json_data = get_cfbd_drives_info( -301 season=2020, -302 team="Cincinnati" -303 ) -304 print(json_data) -305 time.sleep(5) -306 -307 # Get CFB Drive data from games involving the 2020 Ohio Bobcats -308 # Football Team, when Ohio was on offense. -309 print("Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.") -310 json_data = get_cfbd_drives_info( -311 season=2020, -312 offensive_team="Ohio" -313 ) -314 print(json_data) -315 time.sleep(5) -316 -317 # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes -318 # Football Team, when Ohio was on offense. -319 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -320 json_data = get_cfbd_drives_info( -321 season=2020, -322 defensive_team="Ohio State" -323 ) -324 print(json_data) -325 time.sleep(5) -326 -327 # Get CFB Drive data from Big 12 games in the 2020 CFB season. -328 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -329 json_data = get_cfbd_drives_info( -330 season=2020, -331 conference_abv="B12" -332 ) -333 print(json_data) -334 time.sleep(5) -335 -336 # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season, -337 # where the Big 10 team was on offense. -338 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -339 json_data = get_cfbd_drives_info( -340 season=2020, -341 offensive_conference_abv="B1G" -342 ) -343 print(json_data) -344 time.sleep(5) -345 -346 # Get CFB Drive data from Mid-American Conference (MAC) games -347 # in the 2020 CFB season, where the MAC team was on offense. -348 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -349 json_data = get_cfbd_drives_info( -350 season=2020, -351 defensive_conference_abv="MAC" -352 ) -353 print(json_data) -354 time.sleep(5) -355 -356 # Get CFB Drive data from Football Championship Subdivision (FCS) games -357 # in week 3 ofthe 2020 CFB season, -358 # where the MAC team was on offense. -359 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -360 json_data = get_cfbd_drives_info( -361 season=2020, -362 week=3, -363 ncaa_division="fcs" -364 ) -365 print(json_data) -366 time.sleep(5) -367 -368 # You can also tell this function to just return the API call as -369 # a Dictionary (read: JSON) object. -370 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -371 json_data = get_cfbd_drives_info( -372 season=2020, -373 week=10, -374 return_as_dict=True -375 ) -376 print(json_data) -377 -378 ``` -379 -380 Returns -381 ---------- -382 A pandas `DataFrame` object with CFB drive data, -383 or (if `return_as_dict` is set to `True`) -384 a dictionary object with CFB drive data. -385 -386 """ -387 now = datetime.now() -388 cfb_drives_df = pd.DataFrame() -389 row_df = pd.DataFrame() -390 url = "https://api.collegefootballdata.com/drives" -391 -392 # Input validation -393 ######################################################################################################################################################################################################## -394 -395 if api_key != None: -396 real_api_key = api_key -397 del api_key -398 else: -399 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -400 -401 if real_api_key == "tigersAreAwsome": -402 raise ValueError( -403 "You actually need to change `cfbd_key` to your CFBD API key.") -404 elif "Bearer " in real_api_key: -405 pass -406 elif "Bearer" in real_api_key: -407 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -408 else: -409 real_api_key = "Bearer " + real_api_key -410 -411 if season == None: -412 # This should never happen without user tampering, but if it does, -413 # we need to raise an error, because the CFBD API will refuse this call without a valid season. -414 raise SystemError( -415 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + -416 " and the function got to this point in the code." + -417 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + -418 "https://github.com/armstjc/cfbd-json-py/issues" -419 ) -420 elif season > now.year: -421 raise ValueError(f"`season` cannot be greater than {season}.") -422 elif season < 1869: -423 raise ValueError(f"`season` cannot be less than 1869.") -424 -425 if season_type != "regular" and season_type != "postseason": -426 raise ValueError( -427 "`season_type` must be set to either \"regular\" or \"postseason\" for this function to work.") -428 -429 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ -430 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": -431 pass -432 else: -433 raise ValueError( -434 "An invalid NCAA Division was inputted when calling this function." + -435 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + -436 f"\n\nYou entered:\n{ncaa_division}" -437 ) -438 -439 # URL builder -440 ######################################################################################################################################################################################################## -441 -442 # Required by API -443 url += f"?seasonType={season_type}" -444 -445 url += f"&year={season}" -446 -447 if week != None: -448 url += f"&week={week}" -449 -450 if team != None: -451 url += f"&team={team}" -452 -453 if offensive_team != None: -454 url += f"&offense={offensive_team}" -455 -456 if defensive_team != None: -457 url += f"&defense={defensive_team}" -458 -459 if conference_abv != None: -460 url += f"&conference={conference_abv}" -461 -462 if offensive_conference_abv != None: -463 url += f"&offenseConference={offensive_conference_abv}" -464 -465 if defensive_conference_abv != None: -466 url += f"&defenseConference={defensive_conference_abv}" -467 -468 if ncaa_division != None: -469 url += f"&classification={ncaa_division.lower}" -470 -471 headers = { -472 'Authorization': f'{real_api_key}', -473 'accept': 'application/json' -474 } -475 -476 response = requests.get(url, headers=headers) -477 time.sleep(0.1) -478 -479 if response.status_code == 200: -480 pass -481 elif response.status_code == 401: -482 raise ConnectionRefusedError( -483 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -484 ) -485 else: -486 raise ConnectionError( -487 f'Could not connect.\nHTTP Status code {response.status_code}' -488 ) -489 -490 json_data = response.json() -491 -492 if return_as_dict == True: -493 return json_data -494 -495 for drive in tqdm(json_data): -496 offense = drive['offense'] -497 row_df = pd.DataFrame( -498 { -499 "offense": offense -500 }, index=[0] -501 ) -502 del offense -503 -504 row_df['offense_conference'] = drive['offense_conference'] -505 row_df['defense'] = drive['defense'] -506 row_df['defense_conference'] = drive['defense_conference'] -507 row_df['game_id'] = drive['game_id'] -508 row_df['drive_id'] = drive['id'] -509 row_df['drive_number'] = drive['drive_number'] -510 row_df['is_scoring_drive'] = drive['scoring'] -511 row_df['drive_start_period'] = drive['start_period'] -512 row_df['drive_start_yardline'] = drive['start_yardline'] -513 row_df['drive_start_yards_to_goal'] = drive['start_yards_to_goal'] -514 row_df['drive_start_time_minutes'] = drive['start_time']['minutes'] -515 row_df['drive_start_time_seconds'] = drive['start_time']['seconds'] -516 row_df['drive_end_period'] = drive['end_period'] -517 row_df['drive_end_yardline'] = drive['end_yardline'] -518 row_df['drive_end_yards_to_goal'] = drive['end_yards_to_goal'] -519 row_df['drive_end_time_minutes'] = drive['end_time']['minutes'] -520 row_df['drive_end_time_seconds'] = drive['end_time']['seconds'] -521 row_df['drive_elapsed_minutes'] = drive['elapsed']['minutes'] -522 row_df['drive_elapsed_seconds'] = drive['elapsed']['seconds'] -523 row_df['drive_plays'] = drive['plays'] -524 row_df['drive_yards'] = drive['yards'] -525 row_df['drive_result'] = drive['drive_result'] -526 row_df['is_home_offense'] = drive['is_home_offense'] -527 row_df['start_offense_score'] = drive['start_offense_score'] -528 row_df['start_defense_score'] = drive['start_defense_score'] -529 row_df['end_offense_score'] = drive['end_offense_score'] -530 row_df['end_defense_score'] = drive['end_defense_score'] -531 -532 cfb_drives_df = pd.concat([cfb_drives_df, row_df], ignore_index=True) -533 -534 del row_df -535 -536 if len(cfb_drives_df) == 0: -537 logging.error( -538 "The CFBD API accepted your inputs, " + -539 "but found no data within your specified input paramaters." + -540 " Please double check your input paramaters." -541 ) -542 -543 return cfb_drives_df + 17 + 18def get_cfbd_drives_info( + 19 season: int, + 20 api_key: str = None, + 21 api_key_dir: str = None, + 22 season_type: str = "regular", + 23 week: int = None, + 24 team: str = None, + 25 offensive_team: str = None, + 26 defensive_team: str = None, + 27 conference_abv: str = None, + 28 offensive_conference_abv: str = None, + 29 defensive_conference_abv: str = None, + 30 ncaa_division: str = "fbs", + 31 return_as_dict: bool = False): + 32 """ + 33 Retrives a list of CFB drives from the CFBD API. + 34 + 35 Parameters + 36 ---------- + 37 `season` (int, mandatory): + 38 Required argument. + 39 Specifies the season you want CFB drive information from. + 40 This must be specified, otherwise this package, and by extension + 41 the CFBD API, will not accept the request to get CFB drive information. + 42 + 43 `api_key` (str, optional): + 44 Semi-optional argument. + 45 If `api_key` is null, this function will attempt to load a CFBD API key + 46 from the python environment, or from a file on this computer. + 47 If `api_key` is not null, this function will automatically assume that the + 48 inputted `api_key` is a valid CFBD API key. + 49 + 50 `api_key_dir` (str, optional): + 51 Optional argument. + 52 If `api_key` is set to a string non-empty string, this variable is ignored. + 53 If `api_key_dir` is null, and `api_key` is null, + 54 this function will try to find a CFBD API key file in this user's home directory. + 55 If `api_key_dir` is set to a string, and `api_key` is null, + 56 this function will assume that `api_key_dir` is a directory, + 57 and will try to find a CFBD API key file in that directory. + 58 + 59 `season_type` (str, semi-optional): + 60 Semi-optional argument. + 61 By defualt, this will be set to "regular", for the CFB regular season. + 62 If you want CFB drive data for non-regular season games, + 63 set `season_type` to "postseason". + 64 If `season_type` is set to anything but "regular" or "postseason", + 65 a `ValueError()` will be raised. + 66 + 67 `week` (int, optional): + 68 Optional argument. + 69 If `week` is set to an integer, this function will attempt + 70 to load CFB drive data from games in that season, and that week. + 71 + 72 `team` (str, optional): + 73 Optional argument. + 74 If you only want CFB drive data for a team, + 75 regardless if they are the home/away team, + 76 set `team` to the name of the team you want CFB drive data from. + 77 + 78 `offensive_team` (str, optional): + 79 Optional argument. + 80 If you only want CFB drive data from a team, while they are on offense, + 81 regardless if they are the home/away team, + 82 set `team` to the name of the team you want CFB drive data from. + 83 + 84 `defensive_team` (str, optional): + 85 Optional argument. + 86 If you only want CFB drive data from a team, while they are on defense, + 87 regardless if they are the home/away team, + 88 set `team` to the name of the team you want CFB drive data from. + 89 + 90 `conference_abv` (str, optional): + 91 Optional argument. + 92 If you only want CFB drive data from games + 93 involving teams from a specific confrence, + 94 set `conference_abv` to the abbreviation + 95 of the conference you want CFB drive data from. + 96 For a list of confrences, + 97 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` + 98 function. + 99 +100 `offensive_conference_abv` (str, optional): +101 Optional argument. +102 If you only want CFB drive data from games +103 where the offensive team is from a specific confrenece, +104 set `conference_abv` to the abbreviation +105 of the conference you want CFB drive data from. +106 For a list of confrences, +107 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` +108 function. +109 +110 `defensive_conference_abv` (str, optional): +111 Optional argument. +112 If you only want CFB drive data from games +113 where the defensive team is from a specific confrenece, +114 set `conference_abv` to the abbreviation +115 of the conference you want CFB drive data from. +116 For a list of confrences, +117 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` +118 function. +119 +120 `ncaa_division` (str, semi-optional): +121 Semi-optional argument. +122 By default, `ncaa_division` will be set to "fbs", +123 short for the Football Bowl Subdivision (FBS), +124 formerly known as D1-A (read as "division one single A"), +125 the highest level in the NCAA football pyramid, +126 where teams can scolarship up to 85 players +127 on their football team soley for athletic ability, +128 and often have the largest athletics budgets +129 within the NCAA. +130 +131 Other valid inputs are: +132 - "fcs": Football Championship Subdivision (FCS), +133 formerly known as D1-AA (read as "division one double A"). +134 An FCS school is still in the 1st division of the NCAA, +135 making them elligable for the March Madness tournament, +136 but may not have the resources to compete at the FBS level +137 at this time. FCS schools are limited to 63 athletic scolarships +138 for football. +139 - "ii": NCAA Division II. Schools in this and D3 are not +140 elligable for the March Madness tournament, +141 and are limited to 36 athletic scolarships for their football team. +142 - "iii": NCAA Division III. The largest single division within the +143 NCAA football pyramid. +144 D3 schools have the distinction of being part of +145 the only NCAA division that cannot give out scolarships soley +146 for athletic ability. +147 +148 `return_as_dict` (bool, semi-optional): +149 Semi-optional argument. +150 If you want this function to return the data as a dictionary (read: JSON object), +151 instead of a pandas `DataFrame` object, +152 set `return_as_dict` to `True`. +153 +154 Usage +155 ---------- +156 ``` +157 import time +158 +159 from cfbd_json_py.drives import get_cfbd_drives_info +160 +161 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +162 +163 if cfbd_key != "tigersAreAwsome": +164 print("Using the user's API key declared in this script for this example.") +165 +166 # Get CFB Drive data from the 2020 CFB season. +167 print("Get CFB Drive data from the 2020 CFB season.") +168 json_data = get_cfbd_drives_info( +169 api_key=cfbd_key, +170 season=2020 +171 ) +172 print(json_data) +173 time.sleep(5) +174 +175 # Get CFB Drive data from week 10 of the 2020 CFB season. +176 print("Get CFB Drive data from week 10 of the 2020 CFB season.") +177 json_data = get_cfbd_drives_info( +178 api_key=cfbd_key, +179 season=2020, +180 week=10 +181 ) +182 print(json_data) +183 time.sleep(5) +184 +185 # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats +186 # Football Team. +187 print("Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.") +188 json_data = get_cfbd_drives_info( +189 api_key=cfbd_key, +190 season=2020, +191 team="Cincinnati" +192 ) +193 print(json_data) +194 time.sleep(5) +195 +196 # Get CFB Drive data from games involving the 2020 Ohio Bobcats +197 # Football Team, when Ohio was on offense. +198 print("Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.") +199 json_data = get_cfbd_drives_info( +200 api_key=cfbd_key, +201 season=2020, +202 offensive_team="Ohio" +203 ) +204 print(json_data) +205 time.sleep(5) +206 +207 # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes +208 # Football Team, when Ohio was on offense. +209 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +210 json_data = get_cfbd_drives_info( +211 api_key=cfbd_key, +212 season=2020, +213 defensive_team="Ohio State" +214 ) +215 print(json_data) +216 time.sleep(5) +217 +218 # Get CFB Drive data from Big 12 games in the 2020 CFB season. +219 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +220 json_data = get_cfbd_drives_info( +221 api_key=cfbd_key, +222 season=2020, +223 conference_abv="B12" +224 ) +225 print(json_data) +226 time.sleep(5) +227 +228 # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season, +229 # where the Big 10 team was on offense. +230 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +231 json_data = get_cfbd_drives_info( +232 api_key=cfbd_key, +233 season=2020, +234 offensive_conference_abv="B1G" +235 ) +236 print(json_data) +237 time.sleep(5) +238 +239 # Get CFB Drive data from Mid-American Conference (MAC) games +240 # in the 2020 CFB season, where the MAC team was on offense. +241 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +242 json_data = get_cfbd_drives_info( +243 api_key=cfbd_key, +244 season=2020, +245 defensive_conference_abv="MAC" +246 ) +247 print(json_data) +248 time.sleep(5) +249 +250 # Get CFB Drive data from Football Championship Subdivision (FCS) games +251 # in week 3 ofthe 2020 CFB season, +252 # where the MAC team was on offense. +253 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +254 json_data = get_cfbd_drives_info( +255 api_key=cfbd_key, +256 season=2020, +257 week=3, +258 ncaa_division="fcs" +259 ) +260 print(json_data) +261 time.sleep(5) +262 +263 # You can also tell this function to just return the API call as +264 # a Dictionary (read: JSON) object. +265 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +266 json_data = get_cfbd_drives_info( +267 season=2020, +268 week=10, +269 api_key=cfbd_key, +270 return_as_dict=True +271 ) +272 print(json_data) +273 +274 else: +275 # Alternatively, if the CFBD API key exists in this python environment, +276 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +277 # you could just call these functions directly, without setting the API key +278 # in the script. +279 print("Using the user's API key suposedly loaded into this python environment for this example.") +280 +281 # Get CFB Drive data from the 2020 CFB season. +282 print("Get CFB Drive data from the 2020 CFB season.") +283 json_data = get_cfbd_drives_info( +284 season=2020 +285 ) +286 print(json_data) +287 time.sleep(5) +288 +289 # Get CFB Drive data from week 10 of the 2020 CFB season. +290 print("Get CFB Drive data from week 10 of the 2020 CFB season.") +291 json_data = get_cfbd_drives_info( +292 season=2020, +293 week=10 +294 ) +295 print(json_data) +296 time.sleep(5) +297 +298 # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats +299 # Football Team. +300 print("Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.") +301 json_data = get_cfbd_drives_info( +302 season=2020, +303 team="Cincinnati" +304 ) +305 print(json_data) +306 time.sleep(5) +307 +308 # Get CFB Drive data from games involving the 2020 Ohio Bobcats +309 # Football Team, when Ohio was on offense. +310 print("Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.") +311 json_data = get_cfbd_drives_info( +312 season=2020, +313 offensive_team="Ohio" +314 ) +315 print(json_data) +316 time.sleep(5) +317 +318 # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes +319 # Football Team, when Ohio was on offense. +320 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +321 json_data = get_cfbd_drives_info( +322 season=2020, +323 defensive_team="Ohio State" +324 ) +325 print(json_data) +326 time.sleep(5) +327 +328 # Get CFB Drive data from Big 12 games in the 2020 CFB season. +329 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +330 json_data = get_cfbd_drives_info( +331 season=2020, +332 conference_abv="B12" +333 ) +334 print(json_data) +335 time.sleep(5) +336 +337 # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season, +338 # where the Big 10 team was on offense. +339 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +340 json_data = get_cfbd_drives_info( +341 season=2020, +342 offensive_conference_abv="B1G" +343 ) +344 print(json_data) +345 time.sleep(5) +346 +347 # Get CFB Drive data from Mid-American Conference (MAC) games +348 # in the 2020 CFB season, where the MAC team was on offense. +349 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +350 json_data = get_cfbd_drives_info( +351 season=2020, +352 defensive_conference_abv="MAC" +353 ) +354 print(json_data) +355 time.sleep(5) +356 +357 # Get CFB Drive data from Football Championship Subdivision (FCS) games +358 # in week 3 ofthe 2020 CFB season, +359 # where the MAC team was on offense. +360 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +361 json_data = get_cfbd_drives_info( +362 season=2020, +363 week=3, +364 ncaa_division="fcs" +365 ) +366 print(json_data) +367 time.sleep(5) +368 +369 # You can also tell this function to just return the API call as +370 # a Dictionary (read: JSON) object. +371 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +372 json_data = get_cfbd_drives_info( +373 season=2020, +374 week=10, +375 return_as_dict=True +376 ) +377 print(json_data) +378 +379 ``` +380 +381 Returns +382 ---------- +383 A pandas `DataFrame` object with CFB drive data, +384 or (if `return_as_dict` is set to `True`) +385 a dictionary object with CFB drive data. +386 +387 """ +388 now = datetime.now() +389 cfb_drives_df = pd.DataFrame() +390 row_df = pd.DataFrame() +391 url = "https://api.collegefootballdata.com/drives" +392 +393 # Input validation +394 ######################################################################################################################################################################################################## +395 +396 if api_key != None: +397 real_api_key = api_key +398 del api_key +399 else: +400 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +401 +402 if real_api_key == "tigersAreAwsome": +403 raise ValueError( +404 "You actually need to change `cfbd_key` to your CFBD API key.") +405 elif "Bearer " in real_api_key: +406 pass +407 elif "Bearer" in real_api_key: +408 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +409 else: +410 real_api_key = "Bearer " + real_api_key +411 +412 if season == None: +413 # This should never happen without user tampering, but if it does, +414 # we need to raise an error, because the CFBD API will refuse this call without a valid season. +415 raise SystemError( +416 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + +417 " and the function got to this point in the code." + +418 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + +419 "https://github.com/armstjc/cfbd-json-py/issues" +420 ) +421 elif season > now.year: +422 raise ValueError(f"`season` cannot be greater than {season}.") +423 elif season < 1869: +424 raise ValueError(f"`season` cannot be less than 1869.") +425 +426 if season_type != "regular" and season_type != "postseason": +427 raise ValueError( +428 "`season_type` must be set to either \"regular\" or \"postseason\" for this function to work.") +429 +430 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ +431 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": +432 pass +433 else: +434 raise ValueError( +435 "An invalid NCAA Division was inputted when calling this function." + +436 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + +437 f"\n\nYou entered:\n{ncaa_division}" +438 ) +439 +440 # URL builder +441 ######################################################################################################################################################################################################## +442 +443 # Required by API +444 url += f"?seasonType={season_type}" +445 +446 url += f"&year={season}" +447 +448 if week != None: +449 url += f"&week={week}" +450 +451 if team != None: +452 url += f"&team={team}" +453 +454 if offensive_team != None: +455 url += f"&offense={offensive_team}" +456 +457 if defensive_team != None: +458 url += f"&defense={defensive_team}" +459 +460 if conference_abv != None: +461 url += f"&conference={conference_abv}" +462 +463 if offensive_conference_abv != None: +464 url += f"&offenseConference={offensive_conference_abv}" +465 +466 if defensive_conference_abv != None: +467 url += f"&defenseConference={defensive_conference_abv}" +468 +469 if ncaa_division != None: +470 url += f"&classification={ncaa_division.lower}" +471 +472 headers = { +473 'Authorization': f'{real_api_key}', +474 'accept': 'application/json' +475 } +476 +477 response = requests.get(url, headers=headers) +478 time.sleep(0.1) +479 +480 if response.status_code == 200: +481 pass +482 elif response.status_code == 401: +483 raise ConnectionRefusedError( +484 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +485 ) +486 else: +487 raise ConnectionError( +488 f'Could not connect.\nHTTP Status code {response.status_code}' +489 ) +490 +491 json_data = response.json() +492 +493 if return_as_dict == True: +494 return json_data +495 +496 for drive in tqdm(json_data): +497 offense = drive['offense'] +498 row_df = pd.DataFrame( +499 { +500 "offense": offense +501 }, index=[0] +502 ) +503 del offense +504 +505 row_df['offense_conference'] = drive['offense_conference'] +506 row_df['defense'] = drive['defense'] +507 row_df['defense_conference'] = drive['defense_conference'] +508 row_df['game_id'] = drive['game_id'] +509 row_df['drive_id'] = drive['id'] +510 row_df['drive_number'] = drive['drive_number'] +511 row_df['is_scoring_drive'] = drive['scoring'] +512 row_df['drive_start_period'] = drive['start_period'] +513 row_df['drive_start_yardline'] = drive['start_yardline'] +514 row_df['drive_start_yards_to_goal'] = drive['start_yards_to_goal'] +515 row_df['drive_start_time_minutes'] = drive['start_time']['minutes'] +516 row_df['drive_start_time_seconds'] = drive['start_time']['seconds'] +517 row_df['drive_end_period'] = drive['end_period'] +518 row_df['drive_end_yardline'] = drive['end_yardline'] +519 row_df['drive_end_yards_to_goal'] = drive['end_yards_to_goal'] +520 row_df['drive_end_time_minutes'] = drive['end_time']['minutes'] +521 row_df['drive_end_time_seconds'] = drive['end_time']['seconds'] +522 row_df['drive_elapsed_minutes'] = drive['elapsed']['minutes'] +523 row_df['drive_elapsed_seconds'] = drive['elapsed']['seconds'] +524 row_df['drive_plays'] = drive['plays'] +525 row_df['drive_yards'] = drive['yards'] +526 row_df['drive_result'] = drive['drive_result'] +527 row_df['is_home_offense'] = drive['is_home_offense'] +528 row_df['start_offense_score'] = drive['start_offense_score'] +529 row_df['start_defense_score'] = drive['start_defense_score'] +530 row_df['end_offense_score'] = drive['end_offense_score'] +531 row_df['end_defense_score'] = drive['end_defense_score'] +532 +533 cfb_drives_df = pd.concat([cfb_drives_df, row_df], ignore_index=True) +534 +535 del row_df +536 +537 if len(cfb_drives_df) == 0: +538 logging.error( +539 "The CFBD API accepted your inputs, " + +540 "but found no data within your specified input paramaters." + +541 " Please double check your input paramaters." +542 ) +543 +544 return cfb_drives_df
18def get_cfbd_drives_info( - 19 season: int, - 20 api_key: str = None, - 21 api_key_dir: str = None, - 22 season_type: str = "regular", - 23 week: int = None, - 24 team: str = None, - 25 offensive_team: str = None, - 26 defensive_team: str = None, - 27 conference_abv: str = None, - 28 offensive_conference_abv: str = None, - 29 defensive_conference_abv: str = None, - 30 ncaa_division: str = "fbs", - 31 return_as_dict: bool = False): - 32 """ - 33 Retrives a list of CFB drives from the CFBD API. - 34 - 35 Parameters - 36 ---------- - 37 `season` (int, mandatory): - 38 Required argument. - 39 Specifies the season you want CFB drive information from. - 40 This must be specified, otherwise this package, and by extension - 41 the CFBD API, will not accept the request to get CFB drive information. - 42 - 43 `api_key` (str, optional): - 44 Semi-optional argument. - 45 If `api_key` is null, this function will attempt to load a CFBD API key - 46 from the python environment, or from a file on this computer. - 47 If `api_key` is not null, this function will automatically assume that the - 48 inputted `api_key` is a valid CFBD API key. - 49 - 50 `api_key_dir` (str, optional): - 51 Optional argument. - 52 If `api_key` is set to a string non-empty string, this variable is ignored. - 53 If `api_key_dir` is null, and `api_key` is null, - 54 this function will try to find a CFBD API key file in this user's home directory. - 55 If `api_key_dir` is set to a string, and `api_key` is null, - 56 this function will assume that `api_key_dir` is a directory, - 57 and will try to find a CFBD API key file in that directory. - 58 - 59 `season_type` (str, semi-optional): - 60 Semi-optional argument. - 61 By defualt, this will be set to "regular", for the CFB regular season. - 62 If you want CFB drive data for non-regular season games, - 63 set `season_type` to "postseason". - 64 If `season_type` is set to anything but "regular" or "postseason", - 65 a `ValueError()` will be raised. - 66 - 67 `week` (int, optional): - 68 Optional argument. - 69 If `week` is set to an integer, this function will attempt - 70 to load CFB drive data from games in that season, and that week. - 71 - 72 `team` (str, optional): - 73 Optional argument. - 74 If you only want CFB drive data for a team, - 75 regardless if they are the home/away team, - 76 set `team` to the name of the team you want CFB drive data from. - 77 - 78 `offensive_team` (str, optional): - 79 Optional argument. - 80 If you only want CFB drive data from a team, while they are on offense, - 81 regardless if they are the home/away team, - 82 set `team` to the name of the team you want CFB drive data from. - 83 - 84 `defensive_team` (str, optional): - 85 Optional argument. - 86 If you only want CFB drive data from a team, while they are on defense, - 87 regardless if they are the home/away team, - 88 set `team` to the name of the team you want CFB drive data from. - 89 - 90 `conference_abv` (str, optional): - 91 Optional argument. - 92 If you only want CFB drive data from games - 93 involving teams a specific confrence, - 94 set `conference_abv` to the abbreviation - 95 of the conference you want CFB drive data from. - 96 For a list of confrences, - 97 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` - 98 function. - 99 -100 `offensive_conference_abv` (str, optional): -101 Optional argument. -102 If you only want CFB drive data from games -103 where the offensive team is from a specific confrenece, -104 set `conference_abv` to the abbreviation -105 of the conference you want CFB drive data from. -106 For a list of confrences, -107 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` -108 function. -109 -110 `defensive_conference_abv` (str, optional): -111 Optional argument. -112 If you only want CFB drive data from games -113 where the defensive team is from a specific confrenece, -114 set `conference_abv` to the abbreviation -115 of the conference you want CFB drive data from. -116 For a list of confrences, -117 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` -118 function. -119 -120 `ncaa_division` (str, semi-optional): -121 Semi-optional argument. -122 By default, `ncaa_division` will be set to "fbs", -123 short for the Football Bowl Subdivision (FBS), -124 formerly known as D1-A (read as "division one single A"), -125 the highest level in the NCAA football pyramid, -126 where teams can scolarship up to 85 players -127 on their football team soley for athletic ability, -128 and often have the largest athletics budgets -129 within the NCAA. -130 -131 Other valid inputs are: -132 - "fcs": Football Championship Subdivision (FCS), -133 formerly known as D1-AA (read as "division one double A"). -134 An FCS school is still in the 1st division of the NCAA, -135 making them elligable for the March Madness tournament, -136 but may not have the resources to compete at the FBS level -137 at this time. FCS schools are limited to 63 athletic scolarships -138 for football. -139 - "ii": NCAA Division II. Schools in this and D3 are not -140 elligable for the March Madness tournament, -141 and are limited to 36 athletic scolarships for their football team. -142 - "iii": NCAA Division III. The largest single division within the -143 NCAA football pyramid. -144 D3 schools have the distinction of being part of -145 the only NCAA division that cannot give out scolarships soley -146 for athletic ability. -147 -148 `return_as_dict` (bool, semi-optional): -149 Semi-optional argument. -150 If you want this function to return the data as a dictionary (read: JSON object), -151 instead of a pandas `DataFrame` object, -152 set `return_as_dict` to `True`. -153 -154 Usage -155 ---------- -156 ``` -157 import time -158 -159 from cfbd_json_py.drives import get_cfbd_drives_info -160 -161 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. -162 -163 if cfbd_key != "tigersAreAwsome": -164 print("Using the user's API key declared in this script for this example.") -165 -166 # Get CFB Drive data from the 2020 CFB season. -167 print("Get CFB Drive data from the 2020 CFB season.") -168 json_data = get_cfbd_drives_info( -169 api_key=cfbd_key, -170 season=2020 -171 ) -172 print(json_data) -173 time.sleep(5) -174 -175 # Get CFB Drive data from week 10 of the 2020 CFB season. -176 print("Get CFB Drive data from week 10 of the 2020 CFB season.") -177 json_data = get_cfbd_drives_info( -178 api_key=cfbd_key, -179 season=2020, -180 week=10 -181 ) -182 print(json_data) -183 time.sleep(5) -184 -185 # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats -186 # Football Team. -187 print("Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.") -188 json_data = get_cfbd_drives_info( -189 api_key=cfbd_key, -190 season=2020, -191 team="Cincinnati" -192 ) -193 print(json_data) -194 time.sleep(5) -195 -196 # Get CFB Drive data from games involving the 2020 Ohio Bobcats -197 # Football Team, when Ohio was on offense. -198 print("Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.") -199 json_data = get_cfbd_drives_info( -200 api_key=cfbd_key, -201 season=2020, -202 offensive_team="Ohio" -203 ) -204 print(json_data) -205 time.sleep(5) -206 -207 # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes -208 # Football Team, when Ohio was on offense. -209 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -210 json_data = get_cfbd_drives_info( -211 api_key=cfbd_key, -212 season=2020, -213 defensive_team="Ohio State" -214 ) -215 print(json_data) -216 time.sleep(5) -217 -218 # Get CFB Drive data from Big 12 games in the 2020 CFB season. -219 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -220 json_data = get_cfbd_drives_info( -221 api_key=cfbd_key, -222 season=2020, -223 conference_abv="B12" -224 ) -225 print(json_data) -226 time.sleep(5) -227 -228 # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season, -229 # where the Big 10 team was on offense. -230 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -231 json_data = get_cfbd_drives_info( -232 api_key=cfbd_key, -233 season=2020, -234 offensive_conference_abv="B1G" -235 ) -236 print(json_data) -237 time.sleep(5) -238 -239 # Get CFB Drive data from Mid-American Conference (MAC) games -240 # in the 2020 CFB season, where the MAC team was on offense. -241 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -242 json_data = get_cfbd_drives_info( -243 api_key=cfbd_key, -244 season=2020, -245 defensive_conference_abv="MAC" -246 ) -247 print(json_data) -248 time.sleep(5) -249 -250 # Get CFB Drive data from Football Championship Subdivision (FCS) games -251 # in week 3 ofthe 2020 CFB season, -252 # where the MAC team was on offense. -253 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -254 json_data = get_cfbd_drives_info( -255 api_key=cfbd_key, -256 season=2020, -257 week=3, -258 ncaa_division="fcs" -259 ) -260 print(json_data) -261 time.sleep(5) -262 -263 # You can also tell this function to just return the API call as -264 # a Dictionary (read: JSON) object. -265 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -266 json_data = get_cfbd_drives_info( -267 season=2020, -268 week=10, -269 api_key=cfbd_key, -270 return_as_dict=True -271 ) -272 print(json_data) -273 -274 else: -275 # Alternatively, if the CFBD API key exists in this python environment, -276 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), -277 # you could just call these functions directly, without setting the API key -278 # in the script. -279 print("Using the user's API key suposedly loaded into this python environment for this example.") -280 -281 # Get CFB Drive data from the 2020 CFB season. -282 print("Get CFB Drive data from the 2020 CFB season.") -283 json_data = get_cfbd_drives_info( -284 season=2020 -285 ) -286 print(json_data) -287 time.sleep(5) -288 -289 # Get CFB Drive data from week 10 of the 2020 CFB season. -290 print("Get CFB Drive data from week 10 of the 2020 CFB season.") -291 json_data = get_cfbd_drives_info( -292 season=2020, -293 week=10 -294 ) -295 print(json_data) -296 time.sleep(5) -297 -298 # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats -299 # Football Team. -300 print("Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.") -301 json_data = get_cfbd_drives_info( -302 season=2020, -303 team="Cincinnati" -304 ) -305 print(json_data) -306 time.sleep(5) -307 -308 # Get CFB Drive data from games involving the 2020 Ohio Bobcats -309 # Football Team, when Ohio was on offense. -310 print("Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.") -311 json_data = get_cfbd_drives_info( -312 season=2020, -313 offensive_team="Ohio" -314 ) -315 print(json_data) -316 time.sleep(5) -317 -318 # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes -319 # Football Team, when Ohio was on offense. -320 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -321 json_data = get_cfbd_drives_info( -322 season=2020, -323 defensive_team="Ohio State" -324 ) -325 print(json_data) -326 time.sleep(5) -327 -328 # Get CFB Drive data from Big 12 games in the 2020 CFB season. -329 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -330 json_data = get_cfbd_drives_info( -331 season=2020, -332 conference_abv="B12" -333 ) -334 print(json_data) -335 time.sleep(5) -336 -337 # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season, -338 # where the Big 10 team was on offense. -339 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -340 json_data = get_cfbd_drives_info( -341 season=2020, -342 offensive_conference_abv="B1G" -343 ) -344 print(json_data) -345 time.sleep(5) -346 -347 # Get CFB Drive data from Mid-American Conference (MAC) games -348 # in the 2020 CFB season, where the MAC team was on offense. -349 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -350 json_data = get_cfbd_drives_info( -351 season=2020, -352 defensive_conference_abv="MAC" -353 ) -354 print(json_data) -355 time.sleep(5) -356 -357 # Get CFB Drive data from Football Championship Subdivision (FCS) games -358 # in week 3 ofthe 2020 CFB season, -359 # where the MAC team was on offense. -360 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") -361 json_data = get_cfbd_drives_info( -362 season=2020, -363 week=3, -364 ncaa_division="fcs" -365 ) -366 print(json_data) -367 time.sleep(5) -368 -369 # You can also tell this function to just return the API call as -370 # a Dictionary (read: JSON) object. -371 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") -372 json_data = get_cfbd_drives_info( -373 season=2020, -374 week=10, -375 return_as_dict=True -376 ) -377 print(json_data) -378 -379 ``` -380 -381 Returns -382 ---------- -383 A pandas `DataFrame` object with CFB drive data, -384 or (if `return_as_dict` is set to `True`) -385 a dictionary object with CFB drive data. -386 -387 """ -388 now = datetime.now() -389 cfb_drives_df = pd.DataFrame() -390 row_df = pd.DataFrame() -391 url = "https://api.collegefootballdata.com/drives" -392 -393 # Input validation -394 ######################################################################################################################################################################################################## -395 -396 if api_key != None: -397 real_api_key = api_key -398 del api_key -399 else: -400 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -401 -402 if real_api_key == "tigersAreAwsome": -403 raise ValueError( -404 "You actually need to change `cfbd_key` to your CFBD API key.") -405 elif "Bearer " in real_api_key: -406 pass -407 elif "Bearer" in real_api_key: -408 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -409 else: -410 real_api_key = "Bearer " + real_api_key -411 -412 if season == None: -413 # This should never happen without user tampering, but if it does, -414 # we need to raise an error, because the CFBD API will refuse this call without a valid season. -415 raise SystemError( -416 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + -417 " and the function got to this point in the code." + -418 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + -419 "https://github.com/armstjc/cfbd-json-py/issues" -420 ) -421 elif season > now.year: -422 raise ValueError(f"`season` cannot be greater than {season}.") -423 elif season < 1869: -424 raise ValueError(f"`season` cannot be less than 1869.") -425 -426 if season_type != "regular" and season_type != "postseason": -427 raise ValueError( -428 "`season_type` must be set to either \"regular\" or \"postseason\" for this function to work.") -429 -430 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ -431 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": -432 pass -433 else: -434 raise ValueError( -435 "An invalid NCAA Division was inputted when calling this function." + -436 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + -437 f"\n\nYou entered:\n{ncaa_division}" -438 ) -439 -440 # URL builder -441 ######################################################################################################################################################################################################## -442 -443 # Required by API -444 url += f"?seasonType={season_type}" -445 -446 url += f"&year={season}" -447 -448 if week != None: -449 url += f"&week={week}" -450 -451 if team != None: -452 url += f"&team={team}" -453 -454 if offensive_team != None: -455 url += f"&offense={offensive_team}" -456 -457 if defensive_team != None: -458 url += f"&defense={defensive_team}" -459 -460 if conference_abv != None: -461 url += f"&conference={conference_abv}" -462 -463 if offensive_conference_abv != None: -464 url += f"&offenseConference={offensive_conference_abv}" -465 -466 if defensive_conference_abv != None: -467 url += f"&defenseConference={defensive_conference_abv}" -468 -469 if ncaa_division != None: -470 url += f"&classification={ncaa_division.lower}" -471 -472 headers = { -473 'Authorization': f'{real_api_key}', -474 'accept': 'application/json' -475 } -476 -477 response = requests.get(url, headers=headers) -478 time.sleep(0.1) -479 -480 if response.status_code == 200: -481 pass -482 elif response.status_code == 401: -483 raise ConnectionRefusedError( -484 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -485 ) -486 else: -487 raise ConnectionError( -488 f'Could not connect.\nHTTP Status code {response.status_code}' -489 ) -490 -491 json_data = response.json() -492 -493 if return_as_dict == True: -494 return json_data -495 -496 for drive in tqdm(json_data): -497 offense = drive['offense'] -498 row_df = pd.DataFrame( -499 { -500 "offense": offense -501 }, index=[0] -502 ) -503 del offense -504 -505 row_df['offense_conference'] = drive['offense_conference'] -506 row_df['defense'] = drive['defense'] -507 row_df['defense_conference'] = drive['defense_conference'] -508 row_df['game_id'] = drive['game_id'] -509 row_df['drive_id'] = drive['id'] -510 row_df['drive_number'] = drive['drive_number'] -511 row_df['is_scoring_drive'] = drive['scoring'] -512 row_df['drive_start_period'] = drive['start_period'] -513 row_df['drive_start_yardline'] = drive['start_yardline'] -514 row_df['drive_start_yards_to_goal'] = drive['start_yards_to_goal'] -515 row_df['drive_start_time_minutes'] = drive['start_time']['minutes'] -516 row_df['drive_start_time_seconds'] = drive['start_time']['seconds'] -517 row_df['drive_end_period'] = drive['end_period'] -518 row_df['drive_end_yardline'] = drive['end_yardline'] -519 row_df['drive_end_yards_to_goal'] = drive['end_yards_to_goal'] -520 row_df['drive_end_time_minutes'] = drive['end_time']['minutes'] -521 row_df['drive_end_time_seconds'] = drive['end_time']['seconds'] -522 row_df['drive_elapsed_minutes'] = drive['elapsed']['minutes'] -523 row_df['drive_elapsed_seconds'] = drive['elapsed']['seconds'] -524 row_df['drive_plays'] = drive['plays'] -525 row_df['drive_yards'] = drive['yards'] -526 row_df['drive_result'] = drive['drive_result'] -527 row_df['is_home_offense'] = drive['is_home_offense'] -528 row_df['start_offense_score'] = drive['start_offense_score'] -529 row_df['start_defense_score'] = drive['start_defense_score'] -530 row_df['end_offense_score'] = drive['end_offense_score'] -531 row_df['end_defense_score'] = drive['end_defense_score'] -532 -533 cfb_drives_df = pd.concat([cfb_drives_df, row_df], ignore_index=True) -534 -535 del row_df -536 -537 if len(cfb_drives_df) == 0: -538 logging.error( -539 "The CFBD API accepted your inputs, " + -540 "but found no data within your specified input paramaters." + -541 " Please double check your input paramaters." -542 ) -543 -544 return cfb_drives_df +@@ -1202,7 +1203,7 @@19def get_cfbd_drives_info( + 20 season: int, + 21 api_key: str = None, + 22 api_key_dir: str = None, + 23 season_type: str = "regular", + 24 week: int = None, + 25 team: str = None, + 26 offensive_team: str = None, + 27 defensive_team: str = None, + 28 conference_abv: str = None, + 29 offensive_conference_abv: str = None, + 30 defensive_conference_abv: str = None, + 31 ncaa_division: str = "fbs", + 32 return_as_dict: bool = False): + 33 """ + 34 Retrives a list of CFB drives from the CFBD API. + 35 + 36 Parameters + 37 ---------- + 38 `season` (int, mandatory): + 39 Required argument. + 40 Specifies the season you want CFB drive information from. + 41 This must be specified, otherwise this package, and by extension + 42 the CFBD API, will not accept the request to get CFB drive information. + 43 + 44 `api_key` (str, optional): + 45 Semi-optional argument. + 46 If `api_key` is null, this function will attempt to load a CFBD API key + 47 from the python environment, or from a file on this computer. + 48 If `api_key` is not null, this function will automatically assume that the + 49 inputted `api_key` is a valid CFBD API key. + 50 + 51 `api_key_dir` (str, optional): + 52 Optional argument. + 53 If `api_key` is set to a string non-empty string, this variable is ignored. + 54 If `api_key_dir` is null, and `api_key` is null, + 55 this function will try to find a CFBD API key file in this user's home directory. + 56 If `api_key_dir` is set to a string, and `api_key` is null, + 57 this function will assume that `api_key_dir` is a directory, + 58 and will try to find a CFBD API key file in that directory. + 59 + 60 `season_type` (str, semi-optional): + 61 Semi-optional argument. + 62 By defualt, this will be set to "regular", for the CFB regular season. + 63 If you want CFB drive data for non-regular season games, + 64 set `season_type` to "postseason". + 65 If `season_type` is set to anything but "regular" or "postseason", + 66 a `ValueError()` will be raised. + 67 + 68 `week` (int, optional): + 69 Optional argument. + 70 If `week` is set to an integer, this function will attempt + 71 to load CFB drive data from games in that season, and that week. + 72 + 73 `team` (str, optional): + 74 Optional argument. + 75 If you only want CFB drive data for a team, + 76 regardless if they are the home/away team, + 77 set `team` to the name of the team you want CFB drive data from. + 78 + 79 `offensive_team` (str, optional): + 80 Optional argument. + 81 If you only want CFB drive data from a team, while they are on offense, + 82 regardless if they are the home/away team, + 83 set `team` to the name of the team you want CFB drive data from. + 84 + 85 `defensive_team` (str, optional): + 86 Optional argument. + 87 If you only want CFB drive data from a team, while they are on defense, + 88 regardless if they are the home/away team, + 89 set `team` to the name of the team you want CFB drive data from. + 90 + 91 `conference_abv` (str, optional): + 92 Optional argument. + 93 If you only want CFB drive data from games + 94 involving teams from a specific confrence, + 95 set `conference_abv` to the abbreviation + 96 of the conference you want CFB drive data from. + 97 For a list of confrences, + 98 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` + 99 function. +100 +101 `offensive_conference_abv` (str, optional): +102 Optional argument. +103 If you only want CFB drive data from games +104 where the offensive team is from a specific confrenece, +105 set `conference_abv` to the abbreviation +106 of the conference you want CFB drive data from. +107 For a list of confrences, +108 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` +109 function. +110 +111 `defensive_conference_abv` (str, optional): +112 Optional argument. +113 If you only want CFB drive data from games +114 where the defensive team is from a specific confrenece, +115 set `conference_abv` to the abbreviation +116 of the conference you want CFB drive data from. +117 For a list of confrences, +118 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` +119 function. +120 +121 `ncaa_division` (str, semi-optional): +122 Semi-optional argument. +123 By default, `ncaa_division` will be set to "fbs", +124 short for the Football Bowl Subdivision (FBS), +125 formerly known as D1-A (read as "division one single A"), +126 the highest level in the NCAA football pyramid, +127 where teams can scolarship up to 85 players +128 on their football team soley for athletic ability, +129 and often have the largest athletics budgets +130 within the NCAA. +131 +132 Other valid inputs are: +133 - "fcs": Football Championship Subdivision (FCS), +134 formerly known as D1-AA (read as "division one double A"). +135 An FCS school is still in the 1st division of the NCAA, +136 making them elligable for the March Madness tournament, +137 but may not have the resources to compete at the FBS level +138 at this time. FCS schools are limited to 63 athletic scolarships +139 for football. +140 - "ii": NCAA Division II. Schools in this and D3 are not +141 elligable for the March Madness tournament, +142 and are limited to 36 athletic scolarships for their football team. +143 - "iii": NCAA Division III. The largest single division within the +144 NCAA football pyramid. +145 D3 schools have the distinction of being part of +146 the only NCAA division that cannot give out scolarships soley +147 for athletic ability. +148 +149 `return_as_dict` (bool, semi-optional): +150 Semi-optional argument. +151 If you want this function to return the data as a dictionary (read: JSON object), +152 instead of a pandas `DataFrame` object, +153 set `return_as_dict` to `True`. +154 +155 Usage +156 ---------- +157 ``` +158 import time +159 +160 from cfbd_json_py.drives import get_cfbd_drives_info +161 +162 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +163 +164 if cfbd_key != "tigersAreAwsome": +165 print("Using the user's API key declared in this script for this example.") +166 +167 # Get CFB Drive data from the 2020 CFB season. +168 print("Get CFB Drive data from the 2020 CFB season.") +169 json_data = get_cfbd_drives_info( +170 api_key=cfbd_key, +171 season=2020 +172 ) +173 print(json_data) +174 time.sleep(5) +175 +176 # Get CFB Drive data from week 10 of the 2020 CFB season. +177 print("Get CFB Drive data from week 10 of the 2020 CFB season.") +178 json_data = get_cfbd_drives_info( +179 api_key=cfbd_key, +180 season=2020, +181 week=10 +182 ) +183 print(json_data) +184 time.sleep(5) +185 +186 # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats +187 # Football Team. +188 print("Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.") +189 json_data = get_cfbd_drives_info( +190 api_key=cfbd_key, +191 season=2020, +192 team="Cincinnati" +193 ) +194 print(json_data) +195 time.sleep(5) +196 +197 # Get CFB Drive data from games involving the 2020 Ohio Bobcats +198 # Football Team, when Ohio was on offense. +199 print("Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.") +200 json_data = get_cfbd_drives_info( +201 api_key=cfbd_key, +202 season=2020, +203 offensive_team="Ohio" +204 ) +205 print(json_data) +206 time.sleep(5) +207 +208 # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes +209 # Football Team, when Ohio was on offense. +210 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +211 json_data = get_cfbd_drives_info( +212 api_key=cfbd_key, +213 season=2020, +214 defensive_team="Ohio State" +215 ) +216 print(json_data) +217 time.sleep(5) +218 +219 # Get CFB Drive data from Big 12 games in the 2020 CFB season. +220 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +221 json_data = get_cfbd_drives_info( +222 api_key=cfbd_key, +223 season=2020, +224 conference_abv="B12" +225 ) +226 print(json_data) +227 time.sleep(5) +228 +229 # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season, +230 # where the Big 10 team was on offense. +231 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +232 json_data = get_cfbd_drives_info( +233 api_key=cfbd_key, +234 season=2020, +235 offensive_conference_abv="B1G" +236 ) +237 print(json_data) +238 time.sleep(5) +239 +240 # Get CFB Drive data from Mid-American Conference (MAC) games +241 # in the 2020 CFB season, where the MAC team was on offense. +242 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +243 json_data = get_cfbd_drives_info( +244 api_key=cfbd_key, +245 season=2020, +246 defensive_conference_abv="MAC" +247 ) +248 print(json_data) +249 time.sleep(5) +250 +251 # Get CFB Drive data from Football Championship Subdivision (FCS) games +252 # in week 3 ofthe 2020 CFB season, +253 # where the MAC team was on offense. +254 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +255 json_data = get_cfbd_drives_info( +256 api_key=cfbd_key, +257 season=2020, +258 week=3, +259 ncaa_division="fcs" +260 ) +261 print(json_data) +262 time.sleep(5) +263 +264 # You can also tell this function to just return the API call as +265 # a Dictionary (read: JSON) object. +266 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +267 json_data = get_cfbd_drives_info( +268 season=2020, +269 week=10, +270 api_key=cfbd_key, +271 return_as_dict=True +272 ) +273 print(json_data) +274 +275 else: +276 # Alternatively, if the CFBD API key exists in this python environment, +277 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +278 # you could just call these functions directly, without setting the API key +279 # in the script. +280 print("Using the user's API key suposedly loaded into this python environment for this example.") +281 +282 # Get CFB Drive data from the 2020 CFB season. +283 print("Get CFB Drive data from the 2020 CFB season.") +284 json_data = get_cfbd_drives_info( +285 season=2020 +286 ) +287 print(json_data) +288 time.sleep(5) +289 +290 # Get CFB Drive data from week 10 of the 2020 CFB season. +291 print("Get CFB Drive data from week 10 of the 2020 CFB season.") +292 json_data = get_cfbd_drives_info( +293 season=2020, +294 week=10 +295 ) +296 print(json_data) +297 time.sleep(5) +298 +299 # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats +300 # Football Team. +301 print("Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.") +302 json_data = get_cfbd_drives_info( +303 season=2020, +304 team="Cincinnati" +305 ) +306 print(json_data) +307 time.sleep(5) +308 +309 # Get CFB Drive data from games involving the 2020 Ohio Bobcats +310 # Football Team, when Ohio was on offense. +311 print("Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.") +312 json_data = get_cfbd_drives_info( +313 season=2020, +314 offensive_team="Ohio" +315 ) +316 print(json_data) +317 time.sleep(5) +318 +319 # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes +320 # Football Team, when Ohio was on offense. +321 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +322 json_data = get_cfbd_drives_info( +323 season=2020, +324 defensive_team="Ohio State" +325 ) +326 print(json_data) +327 time.sleep(5) +328 +329 # Get CFB Drive data from Big 12 games in the 2020 CFB season. +330 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +331 json_data = get_cfbd_drives_info( +332 season=2020, +333 conference_abv="B12" +334 ) +335 print(json_data) +336 time.sleep(5) +337 +338 # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season, +339 # where the Big 10 team was on offense. +340 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +341 json_data = get_cfbd_drives_info( +342 season=2020, +343 offensive_conference_abv="B1G" +344 ) +345 print(json_data) +346 time.sleep(5) +347 +348 # Get CFB Drive data from Mid-American Conference (MAC) games +349 # in the 2020 CFB season, where the MAC team was on offense. +350 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +351 json_data = get_cfbd_drives_info( +352 season=2020, +353 defensive_conference_abv="MAC" +354 ) +355 print(json_data) +356 time.sleep(5) +357 +358 # Get CFB Drive data from Football Championship Subdivision (FCS) games +359 # in week 3 ofthe 2020 CFB season, +360 # where the MAC team was on offense. +361 print("Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.") +362 json_data = get_cfbd_drives_info( +363 season=2020, +364 week=3, +365 ncaa_division="fcs" +366 ) +367 print(json_data) +368 time.sleep(5) +369 +370 # You can also tell this function to just return the API call as +371 # a Dictionary (read: JSON) object. +372 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +373 json_data = get_cfbd_drives_info( +374 season=2020, +375 week=10, +376 return_as_dict=True +377 ) +378 print(json_data) +379 +380 ``` +381 +382 Returns +383 ---------- +384 A pandas `DataFrame` object with CFB drive data, +385 or (if `return_as_dict` is set to `True`) +386 a dictionary object with CFB drive data. +387 +388 """ +389 now = datetime.now() +390 cfb_drives_df = pd.DataFrame() +391 row_df = pd.DataFrame() +392 url = "https://api.collegefootballdata.com/drives" +393 +394 # Input validation +395 ######################################################################################################################################################################################################## +396 +397 if api_key != None: +398 real_api_key = api_key +399 del api_key +400 else: +401 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +402 +403 if real_api_key == "tigersAreAwsome": +404 raise ValueError( +405 "You actually need to change `cfbd_key` to your CFBD API key.") +406 elif "Bearer " in real_api_key: +407 pass +408 elif "Bearer" in real_api_key: +409 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +410 else: +411 real_api_key = "Bearer " + real_api_key +412 +413 if season == None: +414 # This should never happen without user tampering, but if it does, +415 # we need to raise an error, because the CFBD API will refuse this call without a valid season. +416 raise SystemError( +417 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + +418 " and the function got to this point in the code." + +419 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + +420 "https://github.com/armstjc/cfbd-json-py/issues" +421 ) +422 elif season > now.year: +423 raise ValueError(f"`season` cannot be greater than {season}.") +424 elif season < 1869: +425 raise ValueError(f"`season` cannot be less than 1869.") +426 +427 if season_type != "regular" and season_type != "postseason": +428 raise ValueError( +429 "`season_type` must be set to either \"regular\" or \"postseason\" for this function to work.") +430 +431 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ +432 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": +433 pass +434 else: +435 raise ValueError( +436 "An invalid NCAA Division was inputted when calling this function." + +437 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + +438 f"\n\nYou entered:\n{ncaa_division}" +439 ) +440 +441 # URL builder +442 ######################################################################################################################################################################################################## +443 +444 # Required by API +445 url += f"?seasonType={season_type}" +446 +447 url += f"&year={season}" +448 +449 if week != None: +450 url += f"&week={week}" +451 +452 if team != None: +453 url += f"&team={team}" +454 +455 if offensive_team != None: +456 url += f"&offense={offensive_team}" +457 +458 if defensive_team != None: +459 url += f"&defense={defensive_team}" +460 +461 if conference_abv != None: +462 url += f"&conference={conference_abv}" +463 +464 if offensive_conference_abv != None: +465 url += f"&offenseConference={offensive_conference_abv}" +466 +467 if defensive_conference_abv != None: +468 url += f"&defenseConference={defensive_conference_abv}" +469 +470 if ncaa_division != None: +471 url += f"&classification={ncaa_division.lower}" +472 +473 headers = { +474 'Authorization': f'{real_api_key}', +475 'accept': 'application/json' +476 } +477 +478 response = requests.get(url, headers=headers) +479 time.sleep(0.1) +480 +481 if response.status_code == 200: +482 pass +483 elif response.status_code == 401: +484 raise ConnectionRefusedError( +485 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +486 ) +487 else: +488 raise ConnectionError( +489 f'Could not connect.\nHTTP Status code {response.status_code}' +490 ) +491 +492 json_data = response.json() +493 +494 if return_as_dict == True: +495 return json_data +496 +497 for drive in tqdm(json_data): +498 offense = drive['offense'] +499 row_df = pd.DataFrame( +500 { +501 "offense": offense +502 }, index=[0] +503 ) +504 del offense +505 +506 row_df['offense_conference'] = drive['offense_conference'] +507 row_df['defense'] = drive['defense'] +508 row_df['defense_conference'] = drive['defense_conference'] +509 row_df['game_id'] = drive['game_id'] +510 row_df['drive_id'] = drive['id'] +511 row_df['drive_number'] = drive['drive_number'] +512 row_df['is_scoring_drive'] = drive['scoring'] +513 row_df['drive_start_period'] = drive['start_period'] +514 row_df['drive_start_yardline'] = drive['start_yardline'] +515 row_df['drive_start_yards_to_goal'] = drive['start_yards_to_goal'] +516 row_df['drive_start_time_minutes'] = drive['start_time']['minutes'] +517 row_df['drive_start_time_seconds'] = drive['start_time']['seconds'] +518 row_df['drive_end_period'] = drive['end_period'] +519 row_df['drive_end_yardline'] = drive['end_yardline'] +520 row_df['drive_end_yards_to_goal'] = drive['end_yards_to_goal'] +521 row_df['drive_end_time_minutes'] = drive['end_time']['minutes'] +522 row_df['drive_end_time_seconds'] = drive['end_time']['seconds'] +523 row_df['drive_elapsed_minutes'] = drive['elapsed']['minutes'] +524 row_df['drive_elapsed_seconds'] = drive['elapsed']['seconds'] +525 row_df['drive_plays'] = drive['plays'] +526 row_df['drive_yards'] = drive['yards'] +527 row_df['drive_result'] = drive['drive_result'] +528 row_df['is_home_offense'] = drive['is_home_offense'] +529 row_df['start_offense_score'] = drive['start_offense_score'] +530 row_df['start_defense_score'] = drive['start_defense_score'] +531 row_df['end_offense_score'] = drive['end_offense_score'] +532 row_df['end_defense_score'] = drive['end_defense_score'] +533 +534 cfb_drives_df = pd.concat([cfb_drives_df, row_df], ignore_index=True) +535 +536 del row_df +537 +538 if len(cfb_drives_df) == 0: +539 logging.error( +540 "The CFBD API accepted your inputs, " + +541 "but found no data within your specified input paramaters." + +542 " Please double check your input paramaters." +543 ) +544 +545 return cfb_drives_dfParameters
conference_abv
(str, optional): Optional argument. If you only want CFB drive data from games - involving teams a specific confrence, + involving teams from a specific confrence, setconference_abv
to the abbreviation of the conference you want CFB drive data from. For a list of confrences, diff --git a/docs/cfbd_json_py/games.html b/docs/cfbd_json_py/games.html index baef47c..2a53f3e 100644 --- a/docs/cfbd_json_py/games.html +++ b/docs/cfbd_json_py/games.html @@ -46,7 +46,7 @@API Documentation
get_cfbd_player_game_stats- get_cfbd_advanced_game_stats + get_cfbd_player_advanced_game_stats get_cfbd_live_scoreboard @@ -75,439 +75,3544 @@ -
-1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: games.py - 4# Purpose: Houses functions pertaining to CFB game data within the CFBD API. - 5#################################################################################################### - 6 - 7from datetime import datetime - 8import logging - 9import time - 10 - 11import pandas as pd - 12import requests - 13 - 14from cfbd_json_py.utls import get_cfbd_api_token - 15 - 16 - 17def get_cfbd_games( - 18 season: int, - 19 api_key: str = None, - 20 api_key_dir: str = None, - 21 season_type: str = "regular", - 22 week: int = None, - 23 team: str = None, - 24 home_team: str = None, - 25 away_team: str = None, - 26 conference_abv: str = None, - 27 ncaa_division: str = "fbs", - 28 game_id: int = None, - 29 return_as_dict: bool = False): - 30 """ - 31 Retrives game schedule data CFBD API. - 32 - 33 Parameters - 34 ---------- - 35 `season` (int, mandatory): - 36 Required argument. - 37 Specifies the season you want CFB game information from. - 38 This must be specified, otherwise this package, and by extension - 39 the CFBD API, will not accept the request to get CFB game information. - 40 - 41 `api_key` (str, optional): - 42 Semi-optional argument. - 43 If `api_key` is null, this function will attempt to load a CFBD API key - 44 from the python environment, or from a file on this computer. - 45 If `api_key` is not null, this function will automatically assume that the - 46 inputted `api_key` is a valid CFBD API key. - 47 - 48 `api_key_dir` (str, optional): - 49 Optional argument. - 50 If `api_key` is set to a string non-empty string, this variable is ignored. - 51 If `api_key_dir` is null, and `api_key` is null, - 52 this function will try to find a CFBD API key file in this user's home directory. - 53 If `api_key_dir` is set to a string, and `api_key` is null, - 54 this function will assume that `api_key_dir` is a directory, - 55 and will try to find a CFBD API key file in that directory. - 56 - 57 `season_type` (str, semi-optional): - 58 Semi-optional argument. - 59 By defualt, this will be set to "regular", for the CFB regular season. - 60 If you want CFB game information for non-regular season games, - 61 set `season_type` to "postseason". - 62 If `season_type` is set to anything but "regular" or "postseason", - 63 a `ValueError()` will be raised. - 64 - 65 `week` (int, optional): - 66 Optional argument. - 67 If `week` is set to an integer, this function will attempt - 68 to load CFB game data from games in that season, and in that week. - 69 - 70 `team` (str, optional): - 71 Optional argument. - 72 If you only want CFB game information for a team, - 73 regardless if they are the home/away team, - 74 set `team` to the name of the team you want CFB game information from. - 75 - 76 `home_team` (str, optional): - 77 Optional argument. - 78 If you only want game information for a team, - 79 where that team was the home team in this season, - 80 set `home_team` to the name of the team you want game information for. - 81 - 82 `away_team` (str, optional): - 83 Optional argument. - 84 If you only want game information for a team, - 85 where that team was the away team in this season, - 86 set `away_team` to the name of the team you want game information for. - 87 - 88 `conference_abv` (str, optional): - 89 Optional argument. - 90 If you only want game information from games - 91 involving teams a specific confrence, - 92 set `conference_abv` to the abbreviation - 93 of the conference you want game information from. - 94 - 95 `ncaa_division` (str, semi-optional): - 96 Semi-optional argument. - 97 By default, `ncaa_division` will be set to "fbs", - 98 short for the Football Bowl Subdivision (FBS), - 99 formerly known as D1-A (read as "division one single A"), -100 the highest level in the NCAA football pyramid, -101 where teams can scolarship up to 85 players -102 on their football team soley for athletic ability, -103 and often have the largest athletics budgets -104 within the NCAA. -105 -106 Other valid inputs are: -107 - "fcs": Football Championship Subdivision (FCS), -108 formerly known as D1-AA (read as "division one double A"). -109 An FCS school is still in the 1st division of the NCAA, -110 making them elligable for the March Madness tournament, -111 but may not have the resources to compete at the FBS level -112 at this time. FCS schools are limited to 63 athletic scolarships -113 for football. -114 - "ii": NCAA Division II. Schools in this and D3 are not -115 elligable for the March Madness tournament, -116 and are limited to 36 athletic scolarships for their football team. -117 - "iii": NCAA Division III. The largest single division within the -118 NCAA football pyramid. -119 D3 schools have the distinction of being part of -120 the only NCAA division that cannot give out scolarships soley -121 for athletic ability. -122 -123 `game_id` (int, optional): -124 Optional argument. -125 If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get -126 game information just for that game ID. -127 -128 Usage -129 ---------- -130 ``` -131 ``` -132 Returns -133 ---------- -134 A pandas `DataFrame` object with college football game information, -135 or (if `return_as_dict` is set to `True`) -136 a dictionary object with college football game information. -137 """ -138 -139 now = datetime.now() -140 cfb_games_df = pd.DataFrame() -141 row_df = pd.DataFrame() -142 url = "https://api.collegefootballdata.com/games" -143 -144 ######################################################################################################################################################################################################## -145 -146 if api_key != None: -147 real_api_key = api_key -148 del api_key -149 else: -150 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -151 -152 if real_api_key == "tigersAreAwsome": -153 raise ValueError( -154 "You actually need to change `cfbd_key` to your CFBD API key.") -155 elif "Bearer " in real_api_key: -156 pass -157 elif "Bearer" in real_api_key: -158 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -159 else: -160 real_api_key = "Bearer " + real_api_key -161 -162 if season == None: -163 # This should never happen without user tampering, but if it does, -164 # we need to raise an error, because the CFBD API will refuse this call without a valid season. -165 raise SystemError( -166 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + -167 " and the function got to this point in the code." + -168 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + -169 "https://github.com/armstjc/cfbd-json-py/issues" -170 ) -171 elif season > now.year: -172 raise ValueError(f"`season` cannot be greater than {season}.") -173 elif season < 1869: -174 raise ValueError(f"`season` cannot be less than 1869.") -175 -176 if season_type != "regular" and season_type != "postseason": -177 raise ValueError( -178 "`season_type` must be set to either \"regular\" or \"postseason\" for this function to work.") -179 -180 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ -181 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": -182 pass -183 else: -184 raise ValueError( -185 "An invalid NCAA Division was inputted when calling this function." + -186 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + -187 f"\n\nYou entered:\n{ncaa_division}" -188 ) -189 -190 # URL builder -191 ######################################################################################################################################################################################################## -192 -193 # Required by API -194 url += f"?seasonType={season_type}" -195 -196 if game_id != None: -197 url += f"&year={season}" -198 url += f"&id={game_id}" -199 -200 if team != None or home_team != None \ -201 or away_team != None or conference_abv != None \ -202 or ncaa_division != None or week != None: -203 logging.warning( -204 "When calling `cfbd_json_py.games.get_cfbd_games()`, " + -205 "and setting `game_id` to a non-null value, " + -206 "only `season` and `game_id` are considered " + -207 "when calling the CFBD API." -208 ) -209 -210 else: -211 url += f"&year={season}" -212 -213 # Optional for the API -214 if week != None: -215 url += f"&week={week}" -216 -217 if team != None: -218 url += f"&year={season}" -219 -220 if home_team != None: -221 url += f"&home={home_team}" -222 -223 if away_team != None: -224 url += f"&away={away_team}" -225 -226 if conference_abv != None: -227 url += f"&conference={conference_abv}" -228 -229 if ncaa_division != None: -230 url += f"&division={ncaa_division}" -231 -232 headers = { -233 'Authorization': f'{real_api_key}', -234 'accept': 'application/json' -235 } -236 -237 response = requests.get(url, headers=headers) -238 time.sleep(0.1) -239 -240 if response.status_code == 200: -241 pass -242 elif response.status_code == 401: -243 raise ConnectionRefusedError( -244 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -245 ) -246 else: -247 raise ConnectionError( -248 f'Could not connect.\nHTTP Status code {response.status_code}' -249 ) -250 -251 json_data = response.json() -252 -253 if return_as_dict == True: -254 return json_data -255 -256 for game in json_data: -257 g_id = game['id'] -258 row_df = pd.DataFrame( -259 { -260 "game_id": g_id -261 }, index=[0] -262 ) -263 del g_id -264 -265 row_df['season'] = game['season'] -266 row_df['week'] = game['week'] -267 row_df['season_type'] = game['season_type'] -268 row_df['start_date'] = game['start_date'] -269 row_df['start_time_tbd'] = game['start_time_tbd'] -270 row_df['is_game_completed'] = game['completed'] -271 row_df['is_neutral_site'] = game['neutral_site'] -272 row_df['is_conference_game'] = game['conference_game'] -273 row_df['game_attendance'] = game['attendance'] -274 row_df['venue_id'] = game['venue_id'] -275 row_df['venue_name'] = game['venue'] -276 row_df['home_id'] = game['home_id'] -277 row_df['home_team'] = game['home_team'] -278 row_df['home_conference'] = game['home_conference'] -279 row_df['home_division'] = game['home_division'] -280 row_df['home_points'] = game['home_points'] -281 row_df['home_line_scores'] = game['home_line_scores'] -282 row_df['home_post_win_prob'] = game['home_post_win_prob'] -283 row_df['home_pregame_elo'] = game['home_pregame_elo'] -284 row_df['home_postgame_elo'] = game['home_postgame_elo'] -285 row_df['away_id'] = game['away_id'] -286 row_df['away_team'] = game['away_team'] -287 row_df['away_conference'] = game['away_conference'] -288 row_df['away_division'] = game['away_division'] -289 row_df['away_points'] = game['away_points'] -290 row_df['away_line_scores'] = game['away_line_scores'] -291 row_df['away_post_win_prob'] = game['away_post_win_prob'] -292 row_df['away_pregame_elo'] = game['away_pregame_elo'] -293 row_df['away_postgame_elo'] = game['away_postgame_elo'] -294 row_df['excitement_index'] = game['excitement_index'] -295 row_df['highlights'] = game['highlights'] -296 row_df['notes'] = game['notes'] -297 -298 cfb_games_df = pd.DataFrame([cfb_games_df, row_df], ignore_index=True) -299 del row_df -300 -301 if len(cfb_games_df) == 0: -302 logging.error( -303 "The CFBD API accepted your inputs, " + -304 "but found no data within your specified input paramaters." + -305 " Please double check your input paramaters." -306 ) -307 -308 return cfb_games_df -309 -310 -311def get_cfbd_team_records( -312 api_key: str = None, -313 api_key_dir: str = None, -314 season: int = None, -315 team: str = None, # Must specify either a year or team -316 conference_abv: str = None, -317 return_as_dict: bool = False): -318 """ -319 -320 """ -321 -322 raise NotImplementedError( -323 'This function has yet to be implemented by this version.' -324 ) -325 -326 -327def get_cfbd_season_weeks( -328 season: int, -329 api_key: str = None, -330 api_key_dir: str = None, -331 return_as_dict: bool = False): -332 """ -333 -334 """ -335 -336 raise NotImplementedError( -337 'This function has yet to be implemented by this version.' -338 ) -339 -340 -341def get_cfbd_game_media_info( -342 season: int, -343 api_key: str = None, -344 api_key_dir: str = None, -345 season_type: str = "regular", # "regular", "postseason", or "both" -346 week: int = None, -347 team: str = None, -348 conference_abv: str = None, -349 media_type: str = "all", # "tv", "radio", "web", "ppv", or "mobile" -350 ncaa_division: str = "fbs", -351 -352 return_as_dict: bool = False): -353 """ -354 -355 """ -356 -357 raise NotImplementedError( -358 'This function has yet to be implemented by this version.' -359 ) -360 -361 -362def get_cfbd_player_game_stats( -363 season: int, -364 api_key: str = None, -365 api_key_dir: str = None, -366 season_type: str = "regular", # "regular" or "postseason" -367 week: int = None, -368 team: str = None, -369 conference_abv: str = None, -370 # `week`, `team`, and/or conference -371 # must be not null for this function to work. -372 stat_category: str = None, -373 game_id: int = None, -374 return_as_dict: bool = False): -375 """ -376 -377 """ -378 -379 raise NotImplementedError( -380 'This function has yet to be implemented by this version.' -381 ) -382 -383 -384def get_cfbd_advanced_game_stats( -385 game_id: int, -386 api_key: str = None, -387 api_key_dir: str = None, -388 return_as_dict: bool = False): -389 """ -390 """ -391 -392 raise NotImplementedError( -393 'This function has yet to be implemented by this version.' -394 ) -395 -396#################################################################################################### -397# Patreon Only Functions. -398# No cacheing, because the entire point of these functions are to get people -399# data ASAP, and right before kickoff. -400#################################################################################################### -401 -402 -403def get_cfbd_live_scoreboard( -404 api_key: str = None, -405 api_key_dir: str = None, -406 ncaa_division: str = "fbs", -407 conference: str = None): -408 """ -409 -410 """ -411 -412 raise NotImplementedError( -413 'This function has yet to be implemented by this version.' -414 ) -415 -416 -417def get_cfbd_weather_info( -418 api_key: str = None, -419 api_key_dir: str = None, -420 ncaa_division: str = "fbs", -421 game_id: int = None, -422 # `game_id` and/or `year` must be not null for this function to work. -423 season: int = None, -424 week: int = None, -425 season_type: str = "regular", # "regular", "postseason", or "both" -426 conference: str = None): -427 """ -428 -429 """ -430 -431 raise NotImplementedError( -432 'This function has yet to be implemented by this version.' -433 ) +@@ -523,302 +3628,500 @@1# Creation Date: 08/30/2023 01:13 EDT + 2# Last Updated Date: 10/06/2023 07:53 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: games.py + 5# Purpose: Houses functions pertaining to CFB game data within the CFBD API. + 6#################################################################################################### + 7 + 8from datetime import datetime + 9import logging + 10import time + 11 + 12import pandas as pd + 13import requests + 14from tqdm import tqdm + 15 + 16from cfbd_json_py.utls import get_cfbd_api_token + 17 + 18 + 19def get_cfbd_games( + 20 season: int, + 21 api_key: str = None, + 22 api_key_dir: str = None, + 23 season_type: str = "regular", + 24 week: int = None, + 25 team: str = None, + 26 home_team: str = None, + 27 away_team: str = None, + 28 conference_abv: str = None, + 29 ncaa_division: str = "fbs", + 30 game_id: int = None, + 31 return_as_dict: bool = False): + 32 """ + 33 Retrives game schedule data from the CFBD API. + 34 + 35 Parameters + 36 ---------- + 37 `season` (int, mandatory): + 38 Required argument. + 39 Specifies the season you want CFB game information from. + 40 This must be specified, otherwise this package, and by extension + 41 the CFBD API, will not accept the request to get CFB game information. + 42 + 43 `api_key` (str, optional): + 44 Semi-optional argument. + 45 If `api_key` is null, this function will attempt to load a CFBD API key + 46 from the python environment, or from a file on this computer. + 47 If `api_key` is not null, this function will automatically assume that the + 48 inputted `api_key` is a valid CFBD API key. + 49 + 50 `api_key_dir` (str, optional): + 51 Optional argument. + 52 If `api_key` is set to a string non-empty string, this variable is ignored. + 53 If `api_key_dir` is null, and `api_key` is null, + 54 this function will try to find a CFBD API key file in this user's home directory. + 55 If `api_key_dir` is set to a string, and `api_key` is null, + 56 this function will assume that `api_key_dir` is a directory, + 57 and will try to find a CFBD API key file in that directory. + 58 + 59 `season_type` (str, semi-optional): + 60 Semi-optional argument. + 61 By defualt, this will be set to "regular", for the CFB regular season. + 62 If you want CFB game information for non-regular season games, + 63 set `season_type` to "postseason". + 64 If `season_type` is set to anything but "regular" or "postseason", + 65 a `ValueError()` will be raised. + 66 + 67 `week` (int, optional): + 68 Optional argument. + 69 If `week` is set to an integer, this function will attempt + 70 to load CFB game data from games in that season, and in that week. + 71 + 72 `team` (str, optional): + 73 Optional argument. + 74 If you only want CFB game information for a team, + 75 regardless if they are the home/away team, + 76 set `team` to the name of the team you want CFB game information from. + 77 + 78 `home_team` (str, optional): + 79 Optional argument. + 80 If you only want game information for a team, + 81 where that team was the home team in this season, + 82 set `home_team` to the name of the team you want game information for. + 83 + 84 `away_team` (str, optional): + 85 Optional argument. + 86 If you only want game information for a team, + 87 where that team was the away team in this season, + 88 set `away_team` to the name of the team you want game information for. + 89 + 90 `conference_abv` (str, optional): + 91 Optional argument. + 92 If you only want game information from games + 93 involving teams a specific confrence, + 94 set `conference_abv` to the abbreviation + 95 of the conference you want game information from. + 96 + 97 `ncaa_division` (str, semi-optional): + 98 Semi-optional argument. + 99 By default, `ncaa_division` will be set to "fbs", + 100 short for the Football Bowl Subdivision (FBS), + 101 formerly known as D1-A (read as "division one single A"), + 102 the highest level in the NCAA football pyramid, + 103 where teams can scolarship up to 85 players + 104 on their football team soley for athletic ability, + 105 and often have the largest athletics budgets + 106 within the NCAA. + 107 + 108 Other valid inputs are: + 109 - "fcs": Football Championship Subdivision (FCS), + 110 formerly known as D1-AA (read as "division one double A"). + 111 An FCS school is still in the 1st division of the NCAA, + 112 making them elligable for the March Madness tournament, + 113 but may not have the resources to compete at the FBS level + 114 at this time. FCS schools are limited to 63 athletic scolarships + 115 for football. + 116 - "ii": NCAA Division II. Schools in this and D3 are not + 117 elligable for the March Madness tournament, + 118 and are limited to 36 athletic scolarships for their football team. + 119 - "iii": NCAA Division III. The largest single division within the + 120 NCAA football pyramid. + 121 D3 schools have the distinction of being part of + 122 the only NCAA division that cannot give out scolarships soley + 123 for athletic ability. + 124 + 125 `game_id` (int, optional): + 126 Optional argument. + 127 If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get + 128 game information just for that game ID. + 129 + 130 `return_as_dict` (bool, semi-optional): + 131 Semi-optional argument. + 132 If you want this function to return the data as a dictionary (read: JSON object), + 133 instead of a pandas `DataFrame` object, + 134 set `return_as_dict` to `True`. + 135 + 136 Usage + 137 ---------- + 138 ``` + 139 import time + 140 + 141 from cfbd_json_py.games import get_cfbd_games + 142 + 143 + 144 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 145 + 146 if cfbd_key != "tigersAreAwsome": + 147 print("Using the user's API key declared in this script for this example.") + 148 + 149 # Get CFB games from the 2020 CFB season. + 150 print("Get CFB games from the 2020 CFB season.") + 151 json_data = get_cfbd_games( + 152 api_key=cfbd_key, + 153 season=2020 + 154 ) + 155 print(json_data) + 156 time.sleep(5) + 157 + 158 # Get CFB games from week 10 of the 2020 CFB season. + 159 print("Get CFB games from week 10 of the 2020 CFB season.") + 160 json_data = get_cfbd_games( + 161 api_key=cfbd_key, + 162 season=2020, + 163 week=10 + 164 ) + 165 print(json_data) + 166 time.sleep(5) + 167 + 168 # Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers. + 169 print("Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.") + 170 json_data = get_cfbd_games( + 171 api_key=cfbd_key, + 172 season=2019, + 173 team="LSU" + 174 ) + 175 print(json_data) + 176 time.sleep(5) + 177 + 178 # Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team. + 179 print("Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.") + 180 json_data = get_cfbd_games( + 181 api_key=cfbd_key, + 182 season=2021, + 183 home_team="Cincinnati" + 184 ) + 185 print(json_data) + 186 time.sleep(5) + 187 + 188 # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. + 189 print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") + 190 json_data = get_cfbd_games( + 191 api_key=cfbd_key, + 192 season=2019, + 193 away_team="Ohio" + 194 ) + 195 print(json_data) + 196 time.sleep(5) + 197 + 198 # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. + 199 print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") + 200 json_data = get_cfbd_games( + 201 api_key=cfbd_key, + 202 season=2018, + 203 away_team="Ohio" + 204 ) + 205 print(json_data) + 206 time.sleep(5) + 207 + 208 # Get 2022 college football games where one or more teams competing + 209 # was a Football Championship Subdivision team. + 210 print("Get 2022 college football games where one or more teams competing was a Football Championship Subdivision team.") + 211 json_data = get_cfbd_games( + 212 api_key=cfbd_key, + 213 season=2018, + 214 away_team="Ohio" + 215 ) + 216 print(json_data) + 217 time.sleep(5) + 218 + 219 # Get game information for the + 220 # 2021 American Athletic Confrence (AAC) Championship Game. + 221 print("Get game information for the 2021 American Athletic Confrence (AAC) Championship Game.") + 222 json_data = get_cfbd_games( + 223 api_key=cfbd_key, + 224 season=2018, + 225 game_id=401331162 + 226 ) + 227 print(json_data) + 228 time.sleep(5) + 229 + 230 # You can also tell this function to just return the API call as + 231 # a Dictionary (read: JSON) object. + 232 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 233 json_data = get_cfbd_games( + 234 season=2020, + 235 week=10, + 236 api_key=cfbd_key, + 237 return_as_dict=True + 238 ) + 239 print(json_data) + 240 + 241 else: + 242 # Alternatively, if the CFBD API key exists in this python environment, + 243 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + 244 # you could just call these functions directly, without setting the API key + 245 # in the script. + 246 print("Using the user's API key suposedly loaded into this python environment for this example.") + 247 + 248 # Get CFB games from the 2020 CFB season. + 249 print("Get CFB games from the 2020 CFB season.") + 250 json_data = get_cfbd_games( + 251 season=2020 + 252 ) + 253 print(json_data) + 254 time.sleep(5) + 255 + 256 # Get CFB games from week 10 of the 2020 CFB season. + 257 print("Get CFB games from week 10 of the 2020 CFB season.") + 258 json_data = get_cfbd_games( + 259 season=2020, + 260 week=10 + 261 ) + 262 print(json_data) + 263 time.sleep(5) + 264 + 265 # Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers. + 266 print("Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.") + 267 json_data = get_cfbd_games( + 268 season=2019, + 269 team="LSU" + 270 ) + 271 print(json_data) + 272 time.sleep(5) + 273 + 274 # Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team. + 275 print("Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.") + 276 json_data = get_cfbd_games( + 277 season=2021, + 278 home_team="Cincinnati" + 279 ) + 280 print(json_data) + 281 time.sleep(5) + 282 + 283 # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. + 284 print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") + 285 json_data = get_cfbd_games( + 286 season=2019, + 287 away_team="Ohio" + 288 ) + 289 print(json_data) + 290 time.sleep(5) + 291 + 292 # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. + 293 print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") + 294 json_data = get_cfbd_games( + 295 season=2018, + 296 away_team="Ohio" + 297 ) + 298 print(json_data) + 299 time.sleep(5) + 300 + 301 # Get 2022 college football games where one or more teams competing + 302 # was a Football Championship Subdivision team. + 303 print("Get 2022 college football games where one or more teams competing was a Football Championship Subdivision team.") + 304 json_data = get_cfbd_games( + 305 season=2018, + 306 away_team="Ohio" + 307 ) + 308 print(json_data) + 309 time.sleep(5) + 310 + 311 # Get game information for the + 312 # 2021 American Athletic Confrence (AAC) Championship Game. + 313 print("Get game information for the 2021 American Athletic Confrence (AAC) Championship Game.") + 314 json_data = get_cfbd_games( + 315 season=2018, + 316 game_id=401331162 + 317 ) + 318 print(json_data) + 319 time.sleep(5) + 320 + 321 # You can also tell this function to just return the API call as + 322 # a Dictionary (read: JSON) object. + 323 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 324 json_data = get_cfbd_games( + 325 season=2020, + 326 week=10, + 327 return_as_dict=True + 328 ) + 329 print(json_data) + 330 + 331 ``` + 332 Returns + 333 ---------- + 334 A pandas `DataFrame` object with college football game information, + 335 or (if `return_as_dict` is set to `True`) + 336 a dictionary object with college football game information. + 337 """ + 338 + 339 now = datetime.now() + 340 cfb_games_df = pd.DataFrame() + 341 row_df = pd.DataFrame() + 342 url = "https://api.collegefootballdata.com/games" + 343 + 344 ######################################################################################################################################################################################################## + 345 + 346 if api_key != None: + 347 real_api_key = api_key + 348 del api_key + 349 else: + 350 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) + 351 + 352 if real_api_key == "tigersAreAwsome": + 353 raise ValueError( + 354 "You actually need to change `cfbd_key` to your CFBD API key.") + 355 elif "Bearer " in real_api_key: + 356 pass + 357 elif "Bearer" in real_api_key: + 358 real_api_key = real_api_key.replace('Bearer', 'Bearer ') + 359 else: + 360 real_api_key = "Bearer " + real_api_key + 361 + 362 if season == None: + 363 # This should never happen without user tampering, but if it does, + 364 # we need to raise an error, because the CFBD API will refuse this call without a valid season. + 365 raise SystemError( + 366 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + + 367 " and the function got to this point in the code." + + 368 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + + 369 "https://github.com/armstjc/cfbd-json-py/issues" + 370 ) + 371 elif season > now.year: + 372 raise ValueError(f"`season` cannot be greater than {season}.") + 373 elif season < 1869: + 374 raise ValueError(f"`season` cannot be less than 1869.") + 375 + 376 if season_type != "regular" and season_type != "postseason": + 377 raise ValueError( + 378 "`season_type` must be set to either \"regular\" or \"postseason\" for this function to work.") + 379 + 380 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ + 381 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": + 382 pass + 383 else: + 384 raise ValueError( + 385 "An invalid NCAA Division was inputted when calling this function." + + 386 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + + 387 f"\n\nYou entered: \n{ncaa_division}" + 388 ) + 389 + 390 # URL builder + 391 ######################################################################################################################################################################################################## + 392 + 393 # Required by API + 394 url += f"?seasonType={season_type}" + 395 + 396 if game_id != None: + 397 url += f"&year={season}" + 398 url += f"&id={game_id}" + 399 + 400 if team != None or home_team != None \ + 401 or away_team != None or conference_abv != None \ + 402 or week != None: + 403 logging.warning( + 404 "When calling `cfbd_json_py.games.get_cfbd_games()`, " + + 405 "and setting `game_id` to a non-null value, " + + 406 "only `season` and `game_id` are considered " + + 407 "when calling the CFBD API." + 408 ) + 409 + 410 else: + 411 url += f"&year={season}" + 412 + 413 # Optional for the API + 414 if week != None: + 415 url += f"&week={week}" + 416 + 417 if team != None: + 418 url += f"&team={team}" + 419 + 420 if home_team != None: + 421 url += f"&home={home_team}" + 422 + 423 if away_team != None: + 424 url += f"&away={away_team}" + 425 + 426 if conference_abv != None: + 427 url += f"&conference={conference_abv}" + 428 + 429 if ncaa_division != None: + 430 url += f"&division={ncaa_division}" + 431 + 432 headers = { + 433 'Authorization': f'{real_api_key}', + 434 'accept': 'application/json' + 435 } + 436 + 437 response = requests.get(url, headers=headers) + 438 time.sleep(0.1) + 439 + 440 if response.status_code == 200: + 441 pass + 442 elif response.status_code == 401: + 443 raise ConnectionRefusedError( + 444 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' + 445 ) + 446 else: + 447 raise ConnectionError( + 448 f'Could not connect.\nHTTP Status code {response.status_code}' + 449 ) + 450 + 451 json_data = response.json() + 452 + 453 if return_as_dict == True: + 454 return json_data + 455 + 456 for game in tqdm(json_data): + 457 g_id = game['id'] + 458 row_df = pd.DataFrame( + 459 { + 460 "game_id": g_id + 461 }, index=[0] + 462 ) + 463 del g_id + 464 + 465 row_df['season'] = game['season'] + 466 row_df['week'] = game['week'] + 467 row_df['season_type'] = game['season_type'] + 468 row_df['start_date'] = game['start_date'] + 469 row_df['start_time_tbd'] = game['start_time_tbd'] + 470 row_df['is_game_completed'] = game['completed'] + 471 row_df['is_neutral_site'] = game['neutral_site'] + 472 row_df['is_conference_game'] = game['conference_game'] + 473 row_df['game_attendance'] = game['attendance'] + 474 row_df['venue_id'] = game['venue_id'] + 475 row_df['venue_name'] = game['venue'] + 476 row_df['home_id'] = game['home_id'] + 477 row_df['home_team'] = game['home_team'] + 478 row_df['home_conference'] = game['home_conference'] + 479 row_df['home_division'] = game['home_division'] + 480 row_df['home_points'] = game['home_points'] + 481 row_df['home_line_scores'] = str(game['home_line_scores']) + 482 row_df['home_post_win_prob'] = game['home_post_win_prob'] + 483 row_df['home_pregame_elo'] = game['home_pregame_elo'] + 484 row_df['home_postgame_elo'] = game['home_postgame_elo'] + 485 row_df['away_id'] = game['away_id'] + 486 row_df['away_team'] = game['away_team'] + 487 row_df['away_conference'] = game['away_conference'] + 488 row_df['away_division'] = game['away_division'] + 489 row_df['away_points'] = game['away_points'] + 490 row_df['away_line_scores'] = str(game['away_line_scores']) + 491 row_df['away_post_win_prob'] = game['away_post_win_prob'] + 492 row_df['away_pregame_elo'] = game['away_pregame_elo'] + 493 row_df['away_postgame_elo'] = game['away_postgame_elo'] + 494 row_df['excitement_index'] = game['excitement_index'] + 495 row_df['highlights'] = game['highlights'] + 496 row_df['notes'] = game['notes'] + 497 + 498 cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) + 499 del row_df + 500 + 501 if len(cfb_games_df) == 0: + 502 logging.error( + 503 "The CFBD API accepted your inputs, " + + 504 "but found no data within your specified input paramaters." + + 505 " Please double check your input paramaters." + 506 ) + 507 + 508 return cfb_games_df + 509 + 510 + 511def get_cfbd_team_records( + 512 api_key: str = None, + 513 api_key_dir: str = None, + 514 season: int = None, + 515 team: str = None, # Must specify either a year or team + 516 conference_abv: str = None, + 517 return_as_dict: bool = False): + 518 """ + 519 Get a team, or multiple team's record (wins, losses, ties) for home games, away games, + 520 confrence games, and the team's record for that season. + 521 + 522 Parameters + 523 ---------- + 524 + 525 `api_key` (str, optional): + 526 Semi-optional argument. + 527 If `api_key` is null, this function will attempt to load a CFBD API key + 528 from the python environment, or from a file on this computer. + 529 If `api_key` is not null, this function will automatically assume that the + 530 inputted `api_key` is a valid CFBD API key. + 531 + 532 `api_key_dir` (str, optional): + 533 Optional argument. + 534 If `api_key` is set to a string non-empty string, this variable is ignored. + 535 If `api_key_dir` is null, and `api_key` is null, + 536 this function will try to find a CFBD API key file in this user's home directory. + 537 If `api_key_dir` is set to a string, and `api_key` is null, + 538 this function will assume that `api_key_dir` is a directory, + 539 and will try to find a CFBD API key file in that directory. + 540 + 541 `season` (int, optional): + 542 Semi-optional argument. + 543 Specifies the season you want CFB team records data from. + 544 You MUST set `season` or `team` to a non-null value for + 545 this function to work. If you don't, a `ValueError()` + 546 will be raised. + 547 + 548 `team` (str, optional): + 549 Semi-ptional argument. + 550 If you only want CFB team records data for a specific team, + 551 set `team` to the name of the team you want CFB drive data from. + 552 You MUST set `season` or `team` to a non-null value for + 553 this function to work. If you don't, a `ValueError()` + 554 will be raised. + 555 + 556 `conference_abv` (str, optional): + 557 Optional argument. + 558 If you only want CFB team records data from games + 559 involving teams from a specific confrence, + 560 set `conference_abv` to the abbreviation + 561 of the conference you want CFB team records data from. + 562 For a list of confrences, + 563 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` + 564 function. + 565 + 566 `return_as_dict` (bool, semi-optional): + 567 Semi-optional argument. + 568 If you want this function to return the data as a dictionary (read: JSON object), + 569 instead of a pandas `DataFrame` object, + 570 set `return_as_dict` to `True`. + 571 + 572 Usage + 573 ---------- + 574 ``` + 575 import time + 576 + 577 from cfbd_json_py.games import get_cfbd_team_records + 578 + 579 + 580 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 581 + 582 if cfbd_key != "tigersAreAwsome": + 583 print("Using the user's API key declared in this script for this example.") + 584 + 585 # Get CFB team records from the 2020 CFB season. + 586 print("Get CFB team records from the 2020 CFB season.") + 587 json_data = get_cfbd_team_records( + 588 api_key=cfbd_key, + 589 season=2020 + 590 ) + 591 print(json_data) + 592 time.sleep(5) + 593 + 594 # Get team records from football teams fielded by the University of Cincinnati. + 595 print("Get team records from football teams fielded by the University of Cincinnati.") + 596 json_data = get_cfbd_team_records( + 597 api_key=cfbd_key, + 598 team="Cincinnati" + 599 ) + 600 print(json_data) + 601 time.sleep(5) + 602 + 603 # Get team records from football teams that played in the Big 10 (B1G) Confrence + 604 # in the 2017 CFB season + 605 print("Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season") + 606 json_data = get_cfbd_team_records( + 607 api_key=cfbd_key, + 608 season=2017, + 609 conference_abv="B1G" + 610 ) + 611 print(json_data) + 612 time.sleep(5) + 613 + 614 + 615 # You can also tell this function to just return the API call as + 616 # a Dictionary (read: JSON) object. + 617 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 618 json_data = get_cfbd_team_records( + 619 season=2020, + 620 api_key=cfbd_key, + 621 return_as_dict=True + 622 ) + 623 print(json_data) + 624 + 625 else: + 626 # Alternatively, if the CFBD API key exists in this python environment, + 627 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + 628 # you could just call these functions directly, without setting the API key + 629 # in the script. + 630 print("Using the user's API key suposedly loaded into this python environment for this example.") + 631 + 632 # Get CFB team records from the 2020 CFB season. + 633 print("Get CFB team records from the 2020 CFB season.") + 634 json_data = get_cfbd_team_records( + 635 season=2020 + 636 ) + 637 print(json_data) + 638 time.sleep(5) + 639 + 640 # Get team records from football teams fielded by the University of Cincinnati. + 641 print("Get team records from football teams fielded by the University of Cincinnati.") + 642 json_data = get_cfbd_team_records( + 643 team="Cincinnati" + 644 ) + 645 print(json_data) + 646 time.sleep(5) + 647 + 648 # Get team records from football teams that played in the Big 10 (B1G) Confrence + 649 # in the 2017 CFB season + 650 print("Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season") + 651 json_data = get_cfbd_team_records( + 652 season=2017, + 653 conference_abv="B1G" + 654 ) + 655 print(json_data) + 656 time.sleep(5) + 657 + 658 # You can also tell this function to just return the API call as + 659 # a Dictionary (read: JSON) object. + 660 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 661 json_data = get_cfbd_team_records( + 662 season=2020, + 663 return_as_dict=True + 664 ) + 665 print(json_data) + 666 + 667 ``` + 668 + 669 Returns + 670 ---------- + 671 A pandas `DataFrame` object with CFB team records data, + 672 or (if `return_as_dict` is set to `True`) + 673 a dictionary object with CFB team records data. + 674 + 675 """ + 676 + 677 now = datetime.now() + 678 cfb_records_df = pd.DataFrame() + 679 row_df = pd.DataFrame() + 680 url = "https://api.collegefootballdata.com/records" + 681 + 682 ######################################################################################################################################################################################################## + 683 + 684 if api_key != None: + 685 real_api_key = api_key + 686 del api_key + 687 else: + 688 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) + 689 + 690 if real_api_key == "tigersAreAwsome": + 691 raise ValueError( + 692 "You actually need to change `cfbd_key` to your CFBD API key.") + 693 elif "Bearer " in real_api_key: + 694 pass + 695 elif "Bearer" in real_api_key: + 696 real_api_key = real_api_key.replace('Bearer', 'Bearer ') + 697 else: + 698 real_api_key = "Bearer " + real_api_key + 699 + 700 if season != None and season > now.year: + 701 raise ValueError(f"`season` cannot be greater than {season}.") + 702 elif season != None and season < 1869: + 703 raise ValueError(f"`season` cannot be less than 1869.") + 704 + 705 if season == None and team == None: + 706 raise ValueError( + 707 f"If you call `cfbd_json_py.games.get_cfbd_team_records()`, you must specifiy at least a team or CFB season.") + 708 + 709 # URL builder + 710 ######################################################################################################################################################################################################## + 711 url_elements = 0 + 712 + 713 if season != None and url_elements == 0: + 714 url += f"?year={season}" + 715 url_elements += 1 + 716 elif season != None: + 717 url += f"&year={season}" + 718 url_elements += 1 + 719 + 720 if team != None and url_elements == 0: + 721 url += f"?team={team}" + 722 url_elements += 1 + 723 elif team != None: + 724 url += f"&team={team}" + 725 url_elements += 1 + 726 + 727 if conference_abv != None and url_elements == 0: + 728 url += f"?conference={conference_abv}" + 729 url_elements += 1 + 730 elif conference_abv != None: + 731 url += f"&conference={conference_abv}" + 732 url_elements += 1 + 733 + 734 headers = { + 735 'Authorization': f'{real_api_key}', + 736 'accept': 'application/json' + 737 } + 738 + 739 response = requests.get(url, headers=headers) + 740 time.sleep(0.1) + 741 + 742 if response.status_code == 200: + 743 pass + 744 elif response.status_code == 401: + 745 raise ConnectionRefusedError( + 746 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' + 747 ) + 748 else: + 749 raise ConnectionError( + 750 f'Could not connect.\nHTTP Status code {response.status_code}' + 751 ) + 752 + 753 json_data = response.json() + 754 + 755 if return_as_dict == True: + 756 return json_data + 757 + 758 for team in json_data: + 759 team_year = team['year'] + 760 row_df = pd.DataFrame( + 761 {"season": team_year}, + 762 index=[0] + 763 ) + 764 row_df['team_id'] = team['teamId'] + 765 row_df['team_name'] = team['team'] + 766 row_df['conference_name'] = team['conference'] + 767 if team['division'] == "" or team['division'] == None: + 768 row_df['conference_division'] = None + 769 else: + 770 row_df['conference_division'] = team['division'] + 771 + 772 row_df['expected_wins'] = team['expectedWins'] + 773 row_df['total_games'] = team['total']['games'] + 774 row_df['total_wins'] = team['total']['wins'] + 775 row_df['total_losses'] = team['total']['losses'] + 776 row_df['total_ties'] = team['total']['ties'] + 777 row_df['conference_games'] = team['conferenceGames']['games'] + 778 row_df['conference_wins'] = team['conferenceGames']['wins'] + 779 row_df['conference_losses'] = team['conferenceGames']['losses'] + 780 row_df['conference_ties'] = team['conferenceGames']['ties'] + 781 row_df['home_games'] = team['homeGames']['games'] + 782 row_df['home_wins'] = team['homeGames']['wins'] + 783 row_df['home_losses'] = team['homeGames']['losses'] + 784 row_df['home_ties'] = team['homeGames']['ties'] + 785 row_df['away_games'] = team['awayGames']['games'] + 786 row_df['away_wins'] = team['awayGames']['wins'] + 787 row_df['away_losses'] = team['awayGames']['losses'] + 788 row_df['away_ties'] = team['awayGames']['ties'] + 789 + 790 cfb_records_df = pd.concat([cfb_records_df, row_df], ignore_index=True) + 791 del row_df + 792 + 793 return cfb_records_df + 794 + 795 + 796def get_cfbd_season_weeks( + 797 season: int, + 798 api_key: str = None, + 799 api_key_dir: str = None, + 800 return_as_dict: bool = False): + 801 """ + 802 Retrives a list of weeks that occured in a given CFB season. + 803 + 804 Parameters + 805 ---------- + 806 `season` (int, mandatory): + 807 Required argument. + 808 Specifies the season you want a list of weeks that occured in a given CFB season information from. + 809 This must be specified, otherwise this package, and by extension + 810 the CFBD API, will not accept the request to get a list of weeks that occured in a given CFB season information. + 811 + 812 `api_key` (str, optional): + 813 Semi-optional argument. + 814 If `api_key` is null, this function will attempt to load a CFBD API key + 815 from the python environment, or from a file on this computer. + 816 If `api_key` is not null, this function will automatically assume that the + 817 inputted `api_key` is a valid CFBD API key. + 818 + 819 `api_key_dir` (str, optional): + 820 Optional argument. + 821 If `api_key` is set to a string non-empty string, this variable is ignored. + 822 If `api_key_dir` is null, and `api_key` is null, + 823 this function will try to find a CFBD API key file in this user's home directory. + 824 If `api_key_dir` is set to a string, and `api_key` is null, + 825 this function will assume that `api_key_dir` is a directory, + 826 and will try to find a CFBD API key file in that directory. + 827 + 828 `return_as_dict` (bool, semi-optional): + 829 Semi-optional argument. + 830 If you want this function to return the data as a dictionary (read: JSON object), + 831 instead of a pandas `DataFrame` object, + 832 set `return_as_dict` to `True`. + 833 + 834 + 835 Usage + 836 ---------- + 837 ``` + 838 import time + 839 + 840 from cfbd_json_py.games import get_cfbd_season_weeks + 841 + 842 + 843 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + 844 + 845 if cfbd_key != "tigersAreAwsome": + 846 print("Using the user's API key declared in this script for this example.") + 847 + 848 # Get a list of weeks in the 2020 CFB season. + 849 print("Get a list of weeks in the 2020 CFB season.") + 850 json_data = get_cfbd_season_weeks( + 851 api_key=cfbd_key, + 852 season=2020 + 853 ) + 854 print(json_data) + 855 time.sleep(5) + 856 + 857 + 858 # You can also tell this function to just return the API call as + 859 # a Dictionary (read: JSON) object. + 860 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 861 json_data = get_cfbd_season_weeks( + 862 season=2020, + 863 api_key=cfbd_key, + 864 return_as_dict=True + 865 ) + 866 print(json_data) + 867 + 868 else: + 869 # Alternatively, if the CFBD API key exists in this python environment, + 870 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + 871 # you could just call these functions directly, without setting the API key + 872 # in the script. + 873 print("Using the user's API key suposedly loaded into this python environment for this example.") + 874 + 875 # Get a list of weeks in the 2020 CFB season. + 876 print("Get a list of weeks in the 2020 CFB season.") + 877 json_data = get_cfbd_season_weeks( + 878 season=2020 + 879 ) + 880 print(json_data) + 881 time.sleep(5) + 882 + 883 + 884 # You can also tell this function to just return the API call as + 885 # a Dictionary (read: JSON) object. + 886 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + 887 json_data = get_cfbd_season_weeks( + 888 season=2020, + 889 return_as_dict=True + 890 ) + 891 print(json_data) + 892 + 893 ``` + 894 + 895 Returns + 896 ---------- + 897 A pandas `DataFrame` object with a list of valid weeks in a given CFB season, + 898 or (if `return_as_dict` is set to `True`) + 899 a dictionary object with a list of valid weeks in a given CFB season. + 900 + 901 + 902 """ + 903 + 904 now = datetime.now() + 905 cfb_weeks_df = pd.DataFrame() + 906 row_df = pd.DataFrame() + 907 url = "https://api.collegefootballdata.com/calendar" + 908 + 909 ######################################################################################################################################################################################################## + 910 + 911 if api_key != None: + 912 real_api_key = api_key + 913 del api_key + 914 else: + 915 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) + 916 + 917 if real_api_key == "tigersAreAwsome": + 918 raise ValueError( + 919 "You actually need to change `cfbd_key` to your CFBD API key.") + 920 elif "Bearer " in real_api_key: + 921 pass + 922 elif "Bearer" in real_api_key: + 923 real_api_key = real_api_key.replace('Bearer', 'Bearer ') + 924 else: + 925 real_api_key = "Bearer " + real_api_key + 926 + 927 if season == None: + 928 # This should never happen without user tampering, but if it does, + 929 # we need to raise an error, because the CFBD API will refuse this call without a valid season. + 930 raise SystemError( + 931 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + + 932 " and the function got to this point in the code." + + 933 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + + 934 "https://github.com/armstjc/cfbd-json-py/issues" + 935 ) + 936 elif season > now.year: + 937 raise ValueError(f"`season` cannot be greater than {season}.") + 938 elif season < 1869: + 939 raise ValueError(f"`season` cannot be less than 1869.") + 940 + 941 # URL builder + 942 ######################################################################################################################################################################################################## + 943 + 944 # Required by API + 945 url += f"?year={season}" + 946 + 947 headers = { + 948 'Authorization': f'{real_api_key}', + 949 'accept': 'application/json' + 950 } + 951 + 952 response = requests.get(url, headers=headers) + 953 time.sleep(0.1) + 954 + 955 if response.status_code == 200: + 956 pass + 957 elif response.status_code == 401: + 958 raise ConnectionRefusedError( + 959 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' + 960 ) + 961 else: + 962 raise ConnectionError( + 963 f'Could not connect.\nHTTP Status code {response.status_code}' + 964 ) + 965 + 966 json_data = response.json() + 967 + 968 if return_as_dict == True: + 969 return json_data + 970 + 971 for week in json_data: + 972 row_df = pd.DataFrame( + 973 {"season": season}, + 974 index=[0] + 975 ) + 976 row_df['week'] = week['week'] + 977 row_df['season_type'] = week['seasonType'] + 978 row_df['first_game_start'] = week['firstGameStart'] + 979 row_df['last_game_start'] = week['lastGameStart'] + 980 + 981 cfb_weeks_df = pd.concat([cfb_weeks_df, row_df], ignore_index=True) + 982 del row_df + 983 + 984 return cfb_weeks_df + 985 + 986 + 987def get_cfbd_game_media_info( + 988 season: int, + 989 api_key: str = None, + 990 api_key_dir: str = None, + 991 season_type: str = "regular", # "regular", "postseason", or "both" + 992 week: int = None, + 993 team: str = None, + 994 conference_abv: str = None, + 995 media_type: str = "all", # "tv", "radio", "web", "ppv", or "mobile" + 996 ncaa_division: str = "fbs", + 997 return_as_dict: bool = False): + 998 """ + 999 Gets known media information for CFB games in a given CFB season. +1000 +1001 Parameters +1002 ---------- +1003 `season` (int, mandatory): +1004 Required argument. +1005 Specifies the season you want CFB media information from. +1006 This must be specified, otherwise this package, and by extension +1007 the CFBD API, will not accept the request to get CFB media information. +1008 +1009 `api_key` (str, optional): +1010 Semi-optional argument. +1011 If `api_key` is null, this function will attempt to load a CFBD API key +1012 from the python environment, or from a file on this computer. +1013 If `api_key` is not null, this function will automatically assume that the +1014 inputted `api_key` is a valid CFBD API key. +1015 +1016 `api_key_dir` (str, optional): +1017 Optional argument. +1018 If `api_key` is set to a string non-empty string, this variable is ignored. +1019 If `api_key_dir` is null, and `api_key` is null, +1020 this function will try to find a CFBD API key file in this user's home directory. +1021 If `api_key_dir` is set to a string, and `api_key` is null, +1022 this function will assume that `api_key_dir` is a directory, +1023 and will try to find a CFBD API key file in that directory. +1024 +1025 `season_type` (str, semi-optional): +1026 Semi-optional argument. +1027 By defualt, this will be set to "regular", for the CFB regular season. +1028 If you want CFB media information for non-regular season games, +1029 set `season_type` to "postseason". +1030 If you want both "regular" and "postseason" games retunred, +1031 set `season_type` to "both" +1032 If `season_type` is set to anything but "regular" or "postseason", +1033 a `ValueError()` will be raised. +1034 +1035 `week` (int, optional): +1036 Optional argument. +1037 If `week` is set to an integer, this function will attempt +1038 to load CFB media information from games in that season, and in that week. +1039 +1040 `team` (str, optional): +1041 Optional argument. +1042 If you only want CFB media information for a team, +1043 regardless if they are the home/away team, +1044 set `team` to the name of the team you want CFB media information from. +1045 +1046 `conference_abv` (str, optional): +1047 Optional argument. +1048 If you only want media information from games +1049 involving teams a specific confrence, +1050 set `conference_abv` to the abbreviation +1051 of the conference you want game information from. +1052 +1053 `media_type` (str, semi-optional): +1054 Semi-optional argument. +1055 If you only want game broadcast information for a specific type of broadcast, +1056 set this to the type of broadcast. +1057 +1058 Valid inputs are: +1059 - `all` (default): Returns all games, and all known broadcasters for those games. +1060 - `tv`: Returns all known TV broadcasters for CFB games in the requested timeframe. +1061 - `radio`: Returns all known radio broadcasters +1062 for CFB games in the requested timeframe. +1063 - `web`: Returns all known web broadcasts (like ESPN+) +1064 for CFB games in the requested timeframe. +1065 - `ppv`: Returns all known Pay Per View (PPV) broadcasts +1066 for CFB games in the requested timeframe. +1067 - `mobile`: Returns all known broadcasters that only broadcasted +1068 games on mobile devices (?) +1069 +1070 `ncaa_division` (str, semi-optional): +1071 Semi-optional argument. +1072 By default, `ncaa_division` will be set to "fbs", +1073 short for the Football Bowl Subdivision (FBS), +1074 formerly known as D1-A (read as "division one single A"), +1075 the highest level in the NCAA football pyramid, +1076 where teams can scolarship up to 85 players +1077 on their football team soley for athletic ability, +1078 and often have the largest athletics budgets +1079 within the NCAA. +1080 +1081 Other valid inputs are: +1082 - "fcs": Football Championship Subdivision (FCS), +1083 formerly known as D1-AA (read as "division one double A"). +1084 An FCS school is still in the 1st division of the NCAA, +1085 making them elligable for the March Madness tournament, +1086 but may not have the resources to compete at the FBS level +1087 at this time. FCS schools are limited to 63 athletic scolarships +1088 for football. +1089 - "ii": NCAA Division II. Schools in this and D3 are not +1090 elligable for the March Madness tournament, +1091 and are limited to 36 athletic scolarships for their football team. +1092 - "iii": NCAA Division III. The largest single division within the +1093 NCAA football pyramid. +1094 D3 schools have the distinction of being part of +1095 the only NCAA division that cannot give out scolarships soley +1096 for athletic ability. +1097 +1098 `return_as_dict` (bool, semi-optional): +1099 Semi-optional argument. +1100 If you want this function to return the data as a dictionary (read: JSON object), +1101 instead of a pandas `DataFrame` object, +1102 set `return_as_dict` to `True`. +1103 +1104 Usage +1105 ---------- +1106 ``` +1107 import time +1108 +1109 from cfbd_json_py.games import get_cfbd_game_media_info +1110 +1111 +1112 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +1113 +1114 if cfbd_key != "tigersAreAwsome": +1115 print("Using the user's API key declared in this script for this example.") +1116 +1117 # Get a media information for the 2020 CFB season. +1118 print("Get a media information for the 2020 CFB season.") +1119 json_data = get_cfbd_game_media_info( +1120 api_key=cfbd_key, +1121 season=2020 +1122 ) +1123 print(json_data) +1124 time.sleep(5) +1125 +1126 # Get a media information for postseason games in the 2020 CFB season. +1127 print("Get a media information for the 2020 CFB season.") +1128 json_data = get_cfbd_game_media_info( +1129 api_key=cfbd_key, +1130 season=2020, +1131 season_type="postseason" +1132 ) +1133 print(json_data) +1134 time.sleep(5) +1135 +1136 # Get a media information for week 10 games in the 2020 CFB season. +1137 print("Get a media information for week 10 games in the 2020 CFB season.") +1138 json_data = get_cfbd_game_media_info( +1139 api_key=cfbd_key, +1140 season=2020, +1141 week=10 +1142 ) +1143 print(json_data) +1144 time.sleep(5) +1145 +1146 # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season. +1147 print("Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.") +1148 json_data = get_cfbd_game_media_info( +1149 api_key=cfbd_key, +1150 season=2020, +1151 team="Ohio State" +1152 ) +1153 print(json_data) +1154 time.sleep(5) +1155 +1156 # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season. +1157 print("Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.") +1158 json_data = get_cfbd_game_media_info( +1159 api_key=cfbd_key, +1160 season=2020, +1161 conference_abv="AAC" +1162 ) +1163 print(json_data) +1164 time.sleep(5) +1165 +1166 # Get all known radio broadcasters for games in the the 2020 CFB season. +1167 print("Get all known radio broadcasters for games in the the 2020 CFB season.") +1168 json_data = get_cfbd_game_media_info( +1169 api_key=cfbd_key, +1170 season=2020, +1171 media_type="radio" +1172 ) +1173 print(json_data) +1174 time.sleep(5) +1175 +1176 # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season. +1177 print("Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.") +1178 json_data = get_cfbd_game_media_info( +1179 api_key=cfbd_key, +1180 season=2020, +1181 ncaa_division="fcs" +1182 ) +1183 print(json_data) +1184 time.sleep(5) +1185 +1186 # You can also tell this function to just return the API call as +1187 # a Dictionary (read: JSON) object. +1188 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +1189 json_data = get_cfbd_game_media_info( +1190 season=2020, +1191 api_key=cfbd_key, +1192 return_as_dict=True +1193 ) +1194 print(json_data) +1195 +1196 else: +1197 # Alternatively, if the CFBD API key exists in this python environment, +1198 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +1199 # you could just call these functions directly, without setting the API key +1200 # in the script. +1201 print("Using the user's API key suposedly loaded into this python environment for this example.") +1202 +1203 # Get a media information for the 2020 CFB season. +1204 print("Get a media information for the 2020 CFB season.") +1205 json_data = get_cfbd_game_media_info( +1206 season=2020 +1207 ) +1208 print(json_data) +1209 time.sleep(5) +1210 +1211 # Get a media information for postseason games in the 2020 CFB season. +1212 print("Get a media information for the 2020 CFB season.") +1213 json_data = get_cfbd_game_media_info( +1214 season=2020, +1215 season_type="postseason" +1216 ) +1217 print(json_data) +1218 time.sleep(5) +1219 +1220 # Get a media information for week 10 games in the 2020 CFB season. +1221 print("Get a media information for week 10 games in the 2020 CFB season.") +1222 json_data = get_cfbd_game_media_info( +1223 season=2020, +1224 week=10 +1225 ) +1226 print(json_data) +1227 time.sleep(5) +1228 +1229 # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season. +1230 print("Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.") +1231 json_data = get_cfbd_game_media_info( +1232 season=2020, +1233 team="Ohio State" +1234 ) +1235 print(json_data) +1236 time.sleep(5) +1237 +1238 # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season. +1239 print("Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.") +1240 json_data = get_cfbd_game_media_info( +1241 season=2020, +1242 conference_abv="AAC" +1243 ) +1244 print(json_data) +1245 time.sleep(5) +1246 +1247 # Get all known radio broadcasters for games in the the 2020 CFB season. +1248 print("Get all known radio broadcasters for games in the the 2020 CFB season.") +1249 json_data = get_cfbd_game_media_info( +1250 season=2020, +1251 media_type="radio" +1252 ) +1253 print(json_data) +1254 time.sleep(5) +1255 +1256 # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season. +1257 print("Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.") +1258 json_data = get_cfbd_game_media_info( +1259 season=2020, +1260 ncaa_division="fcs" +1261 ) +1262 print(json_data) +1263 time.sleep(5) +1264 +1265 +1266 # You can also tell this function to just return the API call as +1267 # a Dictionary (read: JSON) object. +1268 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +1269 json_data = get_cfbd_game_media_info( +1270 season=2020, +1271 return_as_dict=True +1272 ) +1273 print(json_data) +1274 +1275 ``` +1276 Returns +1277 ---------- +1278 A pandas `DataFrame` object with college football media information, +1279 or (if `return_as_dict` is set to `True`) +1280 a dictionary object with college football media information. +1281 +1282 """ +1283 +1284 now = datetime.now() +1285 cfb_games_df = pd.DataFrame() +1286 row_df = pd.DataFrame() +1287 url = "https://api.collegefootballdata.com/games/media" +1288 +1289 ######################################################################################################################################################################################################## +1290 +1291 if api_key != None: +1292 real_api_key = api_key +1293 del api_key +1294 else: +1295 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +1296 +1297 if real_api_key == "tigersAreAwsome": +1298 raise ValueError( +1299 "You actually need to change `cfbd_key` to your CFBD API key.") +1300 elif "Bearer " in real_api_key: +1301 pass +1302 elif "Bearer" in real_api_key: +1303 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +1304 else: +1305 real_api_key = "Bearer " + real_api_key +1306 +1307 if season == None: +1308 # This should never happen without user tampering, but if it does, +1309 # we need to raise an error, because the CFBD API will refuse this call without a valid season. +1310 raise SystemError( +1311 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + +1312 " and the function got to this point in the code." + +1313 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + +1314 "https://github.com/armstjc/cfbd-json-py/issues" +1315 ) +1316 elif season > now.year: +1317 raise ValueError(f"`season` cannot be greater than {season}.") +1318 elif season < 1869: +1319 raise ValueError(f"`season` cannot be less than 1869.") +1320 +1321 if season_type != "both" and season_type != "regular" and season_type != "postseason": +1322 raise ValueError( +1323 "`season_type` must be set to \"both\", \"regular\", or \"postseason\" for this function to work.") +1324 +1325 if media_type != "all" and media_type != "tv" and media_type != "radio" and media_type != "web" and media_type != "ppv" and media_type != "mobile": +1326 raise ValueError( +1327 "`media_type` must be set to one of the following values for this function to work:" + +1328 "\n\t- `all`" + +1329 "\n\t- `tv`" + +1330 "\n\t- `radio`" + +1331 "\n\t- `web`" + +1332 "\n\t- `ppv`" + +1333 "\n\t- `mobile`" +1334 ) +1335 +1336 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ +1337 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": +1338 pass +1339 else: +1340 raise ValueError( +1341 "An invalid NCAA Division was inputted when calling this function." + +1342 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + +1343 f"\n\nYou entered: \n{ncaa_division}" +1344 ) +1345 +1346 # URL builder +1347 ######################################################################################################################################################################################################## +1348 +1349 # Required by API +1350 url += f"?year={season}" +1351 +1352 if week != None: +1353 url += f"&week={week}" +1354 +1355 if team != None: +1356 url += f"&team={team}" +1357 +1358 if conference_abv != None: +1359 url += f"&conference={conference_abv}" +1360 +1361 if season_type != None: +1362 url += f"&seasonType={season_type}" +1363 +1364 if media_type == "all": +1365 # If we don't care about what media type we want back, +1366 # we don't need to add anything to the URL. +1367 pass +1368 elif media_type != None: +1369 url += f"&mediaType={media_type}" +1370 +1371 if ncaa_division != None: +1372 url += f"&classification={ncaa_division}" +1373 +1374 headers = { +1375 'Authorization': f'{real_api_key}', +1376 'accept': 'application/json' +1377 } +1378 +1379 response = requests.get(url, headers=headers) +1380 time.sleep(0.1) +1381 +1382 if response.status_code == 200: +1383 pass +1384 elif response.status_code == 401: +1385 raise ConnectionRefusedError( +1386 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +1387 ) +1388 else: +1389 raise ConnectionError( +1390 f'Could not connect.\nHTTP Status code {response.status_code}' +1391 ) +1392 +1393 json_data = response.json() +1394 +1395 if return_as_dict == True: +1396 return json_data +1397 +1398 for game in tqdm(json_data): +1399 row_df = pd.DataFrame( +1400 {"season": season}, +1401 index=[0] +1402 ) +1403 row_df['week'] = game['week'] +1404 row_df['game_id'] = game['id'] +1405 row_df['season_type'] = game['seasonType'] +1406 row_df['game_start_time'] = game['startTime'] +1407 row_df['is_start_time_tbd'] = game['isStartTimeTBD'] +1408 row_df['home_team'] = game['homeTeam'] +1409 row_df['home_conference'] = game['homeConference'] +1410 row_df['away_team'] = game['awayTeam'] +1411 row_df['away_conference'] = game['awayConference'] +1412 row_df['media_type'] = game['mediaType'] +1413 row_df['outlet'] = game['outlet'] +1414 +1415 cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) +1416 del row_df +1417 +1418 return cfb_games_df +1419 +1420 +1421def get_cfbd_player_game_stats( +1422 season: int, +1423 api_key: str = None, +1424 api_key_dir: str = None, +1425 season_type: str = "regular", # "regular" or "postseason" +1426 week: int = None, +1427 team: str = None, +1428 conference_abv: str = None, +1429 # `week`, `team`, and/or `conference` +1430 # must be not null for this function to work. +1431 stat_category: str = None, +1432 game_id: int = None, +1433 return_as_dict: bool = False): +1434 """ +1435 Retrives player game stats for a given time frame. +1436 +1437 Parameters +1438 ---------- +1439 `season` (int, mandatory): +1440 Required argument. +1441 Specifies the season you want CFB media information from. +1442 This must be specified, otherwise this package, and by extension +1443 the CFBD API, will not accept the request to get CFB media information. +1444 +1445 `api_key` (str, optional): +1446 Semi-optional argument. +1447 If `api_key` is null, this function will attempt to load a CFBD API key +1448 from the python environment, or from a file on this computer. +1449 If `api_key` is not null, this function will automatically assume that the +1450 inputted `api_key` is a valid CFBD API key. +1451 +1452 `api_key_dir` (str, optional): +1453 Optional argument. +1454 If `api_key` is set to a string non-empty string, this variable is ignored. +1455 If `api_key_dir` is null, and `api_key` is null, +1456 this function will try to find a CFBD API key file in this user's home directory. +1457 If `api_key_dir` is set to a string, and `api_key` is null, +1458 this function will assume that `api_key_dir` is a directory, +1459 and will try to find a CFBD API key file in that directory. +1460 +1461 `season_type` (str, semi-optional): +1462 Semi-optional argument. +1463 By defualt, this will be set to "regular", for the CFB regular season. +1464 If you want CFB media information for non-regular season games, +1465 set `season_type` to "postseason". +1466 If `season_type` is set to anything but "regular" or "postseason", +1467 a `ValueError()` will be raised. +1468 +1469 **For the following three variables, +1470 at least one must be set to a non-null variable when calling this function.** +1471 +1472 `week` (int, optional): +1473 Optional argument. +1474 If `week` is set to an integer, this function will attempt +1475 to load CFB media information from games in that season, and in that week. +1476 +1477 `team` (str, optional): +1478 Optional argument. +1479 If you only want CFB media information for a team, +1480 regardless if they are the home/away team, +1481 set `team` to the name of the team you want CFB media information from. +1482 +1483 `conference_abv` (str, optional): +1484 Optional argument. +1485 If you only want media information from games +1486 involving teams a specific confrence, +1487 set `conference_abv` to the abbreviation +1488 of the conference you want game information from. +1489 +1490 `stat_category` (str, optional): +1491 Optional argument. +1492 If only want stats for a specific stat category, +1493 set this variable to that category. +1494 +1495 Valid inputs are: +1496 - `passing` +1497 - `rushing` +1498 - `receiving` +1499 - `fumbles` +1500 - `defensive` +1501 - `interceptions` +1502 - `punting` +1503 - `kicking` +1504 - `kickReturns` +1505 - `puntReturns` +1506 +1507 `game_id` (int, optional): +1508 Optional argument. +1509 If `game_id` is set to a game ID, `get_cfbd_player_game_stats()` will try to get +1510 player game stats just for that game ID. +1511 +1512 `return_as_dict` (bool, semi-optional): +1513 Semi-optional argument. +1514 If you want this function to return the data as a dictionary (read: JSON object), +1515 instead of a pandas `DataFrame` object, +1516 set `return_as_dict` to `True`. +1517 +1518 Usage +1519 ---------- +1520 ``` +1521 import time +1522 +1523 from cfbd_json_py.games import get_cfbd_player_game_stats +1524 +1525 +1526 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +1527 +1528 if cfbd_key != "tigersAreAwsome": +1529 print("Using the user's API key declared in this script for this example.") +1530 +1531 # Get player game stats for week 10 of the 2020 CFB season. +1532 print("Get player game stats for week 10 of the 2020 CFB season.") +1533 json_data = get_cfbd_player_game_stats( +1534 api_key=cfbd_key, +1535 season=2020, +1536 week=10 +1537 ) +1538 print(json_data) +1539 time.sleep(5) +1540 +1541 # Get postseason player game stats for the 2020 CFB season. +1542 print("Get postseason player game stats for the 2020 CFB season.") +1543 json_data = get_cfbd_player_game_stats( +1544 api_key=cfbd_key, +1545 season=2020, +1546 season_type="postseason", +1547 week=1 +1548 ) +1549 print(json_data) +1550 time.sleep(5) +1551 +1552 # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season. +1553 print("Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.") +1554 json_data = get_cfbd_player_game_stats( +1555 api_key=cfbd_key, +1556 season=2018, +1557 team="Alabama" +1558 ) +1559 print(json_data) +1560 time.sleep(5) +1561 +1562 # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season. +1563 print("Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.") +1564 json_data = get_cfbd_player_game_stats( +1565 api_key=cfbd_key, +1566 season=2020, +1567 conference_abv="ACC" +1568 ) +1569 print(json_data) +1570 time.sleep(5) +1571 +1572 # Get get passing stats from players who played in week 7 of the 2017 CFB season. +1573 print("Get get passing stats from players who played in week 7 of the 2017 CFB season.") +1574 json_data = get_cfbd_player_game_stats( +1575 api_key=cfbd_key, +1576 season=2017, +1577 week=7, +1578 stat_category="pasing" +1579 ) +1580 print(json_data) +1581 time.sleep(5) +1582 +1583 # Get player game stats from the 2021 Virbo Citrus Bowl, +1584 # a bowl game that happened in the 2020 CFB season. +1585 print("Get player game stats from the 2021 Virbo Citrus Bowl, a bowl game that happened in the 2020 CFB season.") +1586 json_data = get_cfbd_player_game_stats( +1587 api_key=cfbd_key, +1588 season=2020, +1589 game_id=401256199 +1590 ) +1591 print(json_data) +1592 time.sleep(5) +1593 +1594 # You can also tell this function to just return the API call as +1595 # a Dictionary (read: JSON) object. +1596 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +1597 json_data = get_cfbd_player_game_stats( +1598 season=2020, +1599 week=10, +1600 api_key=cfbd_key, +1601 return_as_dict=True +1602 ) +1603 print(json_data) +1604 +1605 else: +1606 # Alternatively, if the CFBD API key exists in this python environment, +1607 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +1608 # you could just call these functions directly, without setting the API key +1609 # in the script. +1610 print("Using the user's API key suposedly loaded into this python environment for this example.") +1611 +1612 # Get player game stats for week 10 of the 2020 CFB season. +1613 print("Get player game stats for week 10 of the 2020 CFB season.") +1614 json_data = get_cfbd_player_game_stats( +1615 season=2020, +1616 week=10 +1617 ) +1618 print(json_data) +1619 time.sleep(5) +1620 +1621 # Get postseason player game stats for the 2020 CFB season. +1622 print("Get postseason player game stats for the 2020 CFB season.") +1623 json_data = get_cfbd_player_game_stats( +1624 season=2020, +1625 season_type="postseason", +1626 week=1 +1627 ) +1628 print(json_data) +1629 time.sleep(5) +1630 +1631 # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season. +1632 print("Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.") +1633 json_data = get_cfbd_player_game_stats( +1634 season=2018, +1635 team="Alabama" +1636 ) +1637 print(json_data) +1638 time.sleep(5) +1639 +1640 # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season. +1641 print("Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.") +1642 json_data = get_cfbd_player_game_stats( +1643 season=2020, +1644 conference_abv="ACC" +1645 ) +1646 print(json_data) +1647 time.sleep(5) +1648 +1649 # Get get passing stats from players who played in week 7 of the 2017 CFB season. +1650 print("Get get passing stats from players who played in week 7 of the 2017 CFB season.") +1651 json_data = get_cfbd_player_game_stats( +1652 season=2017, +1653 week=7, +1654 stat_category="passing" +1655 ) +1656 print(json_data) +1657 time.sleep(5) +1658 +1659 # Get player game stats from the 2021 Virbo Citrus Bowl, +1660 # a bowl game that happened in the 2020 CFB season, +1661 # between the Aubrun Tigers, and the Northwestern Wildcats. +1662 print("Get player game stats from the 2021 Virbo Citrus Bowl, "+ +1663 "a bowl game that happened in the 2020 CFB season between the Aubrun Tigers, and the Northwestern Wildcats.") +1664 json_data = get_cfbd_player_game_stats( +1665 season=2020, +1666 game_id=401256199 +1667 ) +1668 print(json_data) +1669 time.sleep(5) +1670 +1671 +1672 # You can also tell this function to just return the API call as +1673 # a Dictionary (read: JSON) object. +1674 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +1675 json_data = get_cfbd_player_game_stats( +1676 season=2020, +1677 week=10, +1678 return_as_dict=True +1679 ) +1680 print(json_data) +1681 +1682 ``` +1683 Returns +1684 ---------- +1685 A pandas `DataFrame` object with player game stats data, +1686 or (if `return_as_dict` is set to `True`) +1687 a dictionary object with player game stats data. +1688 +1689 """ +1690 +1691 rebuilt_json = {} +1692 now = datetime.now() +1693 cfb_games_df = pd.DataFrame() +1694 row_df = pd.DataFrame() +1695 url = "https://api.collegefootballdata.com/games/players" +1696 stat_columns = [ +1697 'game_id', +1698 'team_name', +1699 'team_confrence', +1700 'player_id', +1701 'player_name', +1702 'home_away', +1703 # PASS +1704 'passing_C/ATT', +1705 'passing_COMP', +1706 'passing_ATT', +1707 'passing_YDS', +1708 'passing_AVG', +1709 'passing_TD', +1710 'passing_INT', +1711 'passing_QBR', +1712 # RUSH +1713 'rushing_CAR', +1714 'rushing_YDS', +1715 'rushing_AVG', +1716 'rushing_TD', +1717 'rushing_LONG', +1718 # REC +1719 'receiving_REC', +1720 'receiving_YDS', +1721 'receiving_AVG', +1722 'receiving_TD', +1723 'receiving_LONG', +1724 # FUM +1725 'fumbles_FUM', +1726 'fumbles_LOST', +1727 'fumbles_REC', +1728 # DEFENSE +1729 'defensive_TOT', +1730 'defensive_SOLO', +1731 'defensive_TFL', +1732 'defensive_QB HUR', +1733 'defensive_SACKS', +1734 'defensive_PD', +1735 'defensive_TD', +1736 # INT +1737 'interceptions_INT', +1738 'interceptions_YDS', +1739 'interceptions_TD', +1740 # PUNT +1741 'punting_NO', +1742 'punting_YDS', +1743 'punting_AVG', +1744 'punting_TB', +1745 'punting_In 20', +1746 'punting_LONG', +1747 # KICK +1748 'kicking_FG', +1749 'kicking_FGM', +1750 'kicking_FGA', +1751 'kicking_PCT', +1752 'kicking_LONG', +1753 'kicking_XP', +1754 'kicking_XPM', +1755 'kicking_XPA', +1756 'kicking_PTS', +1757 # KR +1758 'kickReturns_NO', +1759 'kickReturns_YDS', +1760 'kickReturns_AVG', +1761 'kickReturns_TD', +1762 'kickReturns_LONG', +1763 # PR +1764 'puntReturns_NO', +1765 'puntReturns_YDS', +1766 'puntReturns_AVG', +1767 'puntReturns_TD', +1768 'puntReturns_LONG' +1769 ] +1770 +1771 ######################################################################################################################################################################################################## +1772 +1773 if api_key != None: +1774 real_api_key = api_key +1775 del api_key +1776 else: +1777 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +1778 +1779 if real_api_key == "tigersAreAwsome": +1780 raise ValueError( +1781 "You actually need to change `cfbd_key` to your CFBD API key.") +1782 elif "Bearer " in real_api_key: +1783 pass +1784 elif "Bearer" in real_api_key: +1785 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +1786 else: +1787 real_api_key = "Bearer " + real_api_key +1788 +1789 if season == None: +1790 # This should never happen without user tampering, but if it does, +1791 # we need to raise an error, because the CFBD API will refuse this call without a valid season. +1792 raise SystemError( +1793 "I don't know how, I don't know why, " + +1794 "but you managed to call this function while `season` was `None` (NULL)," + +1795 " and the function got to this point in the code." + +1796 "\nIf you have a GitHub account, " + +1797 "please raise an issue on this python package's GitHub page:\n" + +1798 "https://github.com/armstjc/cfbd-json-py/issues" +1799 ) +1800 elif season > now.year: +1801 raise ValueError(f"`season` cannot be greater than {season}.") +1802 elif season < 1869: +1803 raise ValueError(f"`season` cannot be less than 1869.") +1804 +1805 if season_type != "regular" and season_type != "postseason": +1806 raise ValueError( +1807 "`season_type` must be set to either \"regular\" or " + +1808 "\"postseason\" for this function to work." +1809 ) +1810 +1811 # `week`, `team`, and/or `conference` +1812 # must be not null for this function to work. +1813 +1814 if week == None and team == None and conference_abv == None and game_id == None: +1815 raise ValueError( +1816 "To use `get_cfbd_player_game_stats()`," + +1817 " `week`, `team`, and/or `conference_abv` need to be set to a non-null value." +1818 ) +1819 +1820 filter_by_stat_category = False +1821 +1822 if stat_category == None: +1823 pass +1824 elif stat_category == "passing": +1825 filter_by_stat_category = True +1826 elif stat_category == "rushing": +1827 filter_by_stat_category = True +1828 elif stat_category == "receiving": +1829 filter_by_stat_category = True +1830 elif stat_category == "fumbles": +1831 filter_by_stat_category = True +1832 elif stat_category == "passing": +1833 filter_by_stat_category = True +1834 elif stat_category == "defensive": +1835 filter_by_stat_category = True +1836 elif stat_category == "interceptions": +1837 filter_by_stat_category = True +1838 elif stat_category == "punting": +1839 filter_by_stat_category = True +1840 elif stat_category == "kicking": +1841 filter_by_stat_category = True +1842 elif stat_category == "kickReturns": +1843 filter_by_stat_category = True +1844 elif stat_category == "puntReturns": +1845 filter_by_stat_category = True +1846 else: +1847 raise ValueError( +1848 "Invalid input for `stat_category`." + +1849 "\nValid inputs are:" + +1850 """ +1851 - `passing` +1852 - `rushing` +1853 - `receiving` +1854 - `fumbles` +1855 - `defensive` +1856 - `interceptions` +1857 - `punting` +1858 - `kicking` +1859 - `kickReturns` +1860 - `puntReturns` +1861 """ +1862 ) +1863 +1864 # URL builder +1865 ######################################################################################################################################################################################################## +1866 +1867 # Required by the API +1868 url += f"?year={season}" +1869 +1870 if game_id != None: +1871 url += f"&gameId={game_id}" +1872 +1873 if stat_category != None: +1874 url += f"&category={stat_category}" +1875 +1876 if week != None or team != None or conference_abv != None: +1877 logging.warning( +1878 "When calling `cfbd_json_py.games.get_cfbd_player_game_stats()`, " + +1879 "and setting `game_id` to a non-null value, " + +1880 "only `season`, `stat_category`, and `game_id` are considered " + +1881 "when calling the CFBD API." +1882 ) +1883 else: +1884 if season_type != None: +1885 url += f"&seasonType={season_type}" +1886 +1887 if week != None: +1888 url += f"&week={week}" +1889 +1890 if team != None: +1891 url += f"&team={team}" +1892 +1893 if conference_abv != None: +1894 url += f"&conference={conference_abv}" +1895 +1896 headers = { +1897 'Authorization': f'{real_api_key}', +1898 'accept': 'application/json' +1899 } +1900 +1901 response = requests.get(url, headers=headers) +1902 time.sleep(0.1) +1903 +1904 if response.status_code == 200: +1905 pass +1906 elif response.status_code == 401: +1907 raise ConnectionRefusedError( +1908 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +1909 ) +1910 else: +1911 raise ConnectionError( +1912 f'Could not connect.\nHTTP Status code {response.status_code}' +1913 ) +1914 +1915 json_data = response.json() +1916 +1917 if return_as_dict == True: +1918 return json_data +1919 +1920 for game in tqdm(json_data): +1921 game_id = game['id'] +1922 +1923 for team in game['teams']: +1924 team_name = team['school'] +1925 team_confrence = team['conference'] +1926 home_away = team['homeAway'] +1927 +1928 for s_category in team['categories']: +1929 if s_category['name'] == "passing": +1930 for stat in s_category['types']: +1931 +1932 if stat['name'] == "C/ATT": # passing_C/ATT +1933 +1934 for i in stat['athletes']: +1935 player_id = int(i['id']) +1936 player_name = i['name'] +1937 player_stat = i['stat'] +1938 +1939 if rebuilt_json.get(player_id) == None: +1940 rebuilt_json[player_id] = {} +1941 +1942 rebuilt_json[player_id]['game_id'] = game_id +1943 rebuilt_json[player_id]['team_name'] = team_name +1944 rebuilt_json[player_id]['team_confrence'] = team_confrence +1945 rebuilt_json[player_id]['player_id'] = player_id +1946 rebuilt_json[player_id]['player_name'] = player_name +1947 rebuilt_json[player_id]['home_away'] = home_away +1948 rebuilt_json[player_id]['passing_C/ATT'] = player_stat +1949 +1950 elif stat['name'] == "YDS": # passing_YDS +1951 +1952 for i in stat['athletes']: +1953 player_id = int(i['id']) +1954 player_name = i['name'] +1955 player_stat = int(i['stat']) +1956 +1957 if rebuilt_json.get(player_id) == None: +1958 rebuilt_json[player_id] = {} +1959 +1960 rebuilt_json[player_id]['game_id'] = game_id +1961 rebuilt_json[player_id]['team_name'] = team_name +1962 rebuilt_json[player_id]['team_confrence'] = team_confrence +1963 rebuilt_json[player_id]['player_id'] = player_id +1964 rebuilt_json[player_id]['player_name'] = player_name +1965 rebuilt_json[player_id]['home_away'] = home_away +1966 rebuilt_json[player_id]['passing_YDS'] = player_stat +1967 +1968 elif stat['name'] == "AVG": # passing_AVG +1969 for i in stat['athletes']: +1970 player_id = int(i['id']) +1971 player_name = i['name'] +1972 player_stat = float(i['stat']) +1973 +1974 if rebuilt_json.get(player_id) == None: +1975 rebuilt_json[player_id] = {} +1976 +1977 rebuilt_json[player_id]['game_id'] = game_id +1978 rebuilt_json[player_id]['team_name'] = team_name +1979 rebuilt_json[player_id]['team_confrence'] = team_confrence +1980 rebuilt_json[player_id]['player_id'] = player_id +1981 rebuilt_json[player_id]['player_name'] = player_name +1982 rebuilt_json[player_id]['home_away'] = home_away +1983 rebuilt_json[player_id]['passing_AVG'] = player_stat +1984 +1985 elif stat['name'] == "TD": # passing_TD +1986 +1987 for i in stat['athletes']: +1988 player_id = int(i['id']) +1989 player_name = i['name'] +1990 player_stat = int(i['stat']) +1991 +1992 if rebuilt_json.get(player_id) == None: +1993 rebuilt_json[player_id] = {} +1994 +1995 rebuilt_json[player_id]['game_id'] = game_id +1996 rebuilt_json[player_id]['team_name'] = team_name +1997 rebuilt_json[player_id]['team_confrence'] = team_confrence +1998 rebuilt_json[player_id]['player_id'] = player_id +1999 rebuilt_json[player_id]['player_name'] = player_name +2000 rebuilt_json[player_id]['home_away'] = home_away +2001 rebuilt_json[player_id]['passing_TD'] = player_stat +2002 +2003 elif stat['name'] == "INT": # passing_INT +2004 +2005 for i in stat['athletes']: +2006 player_id = int(i['id']) +2007 player_name = i['name'] +2008 player_stat = int(i['stat']) +2009 +2010 if rebuilt_json.get(player_id) == None: +2011 rebuilt_json[player_id] = {} +2012 +2013 rebuilt_json[player_id]['game_id'] = game_id +2014 rebuilt_json[player_id]['team_name'] = team_name +2015 rebuilt_json[player_id]['team_confrence'] = team_confrence +2016 rebuilt_json[player_id]['player_id'] = player_id +2017 rebuilt_json[player_id]['player_name'] = player_name +2018 rebuilt_json[player_id]['home_away'] = home_away +2019 rebuilt_json[player_id]['passing_INT'] = player_stat +2020 +2021 elif stat['name'] == "QBR": # passing_QBR +2022 for i in stat['athletes']: +2023 player_id = int(i['id']) +2024 player_name = i['name'] +2025 try: +2026 player_stat = float(i['stat']) +2027 except: +2028 player_stat = None +2029 +2030 if rebuilt_json.get(player_id) == None: +2031 rebuilt_json[player_id] = {} +2032 +2033 rebuilt_json[player_id]['game_id'] = game_id +2034 rebuilt_json[player_id]['team_name'] = team_name +2035 rebuilt_json[player_id]['team_confrence'] = team_confrence +2036 rebuilt_json[player_id]['player_id'] = player_id +2037 rebuilt_json[player_id]['player_name'] = player_name +2038 rebuilt_json[player_id]['home_away'] = home_away +2039 rebuilt_json[player_id]['passing_QBR'] = player_stat +2040 +2041 else: +2042 raise IndexError( +2043 f"Unhandled stat: \t{stat['name']}") +2044 # passing_df = pd.DataFrame(s_category['types']) +2045 elif s_category['name'] == "rushing": +2046 for stat in s_category['types']: +2047 if stat['name'] == "CAR": # rushing_CAR +2048 for i in stat['athletes']: +2049 player_id = int(i['id']) +2050 player_name = i['name'] +2051 player_stat = int(i['stat']) +2052 +2053 if rebuilt_json.get(player_id) == None: +2054 rebuilt_json[player_id] = {} +2055 +2056 rebuilt_json[player_id]['game_id'] = game_id +2057 rebuilt_json[player_id]['team_name'] = team_name +2058 rebuilt_json[player_id]['team_confrence'] = team_confrence +2059 rebuilt_json[player_id]['player_id'] = player_id +2060 rebuilt_json[player_id]['player_name'] = player_name +2061 rebuilt_json[player_id]['home_away'] = home_away +2062 rebuilt_json[player_id]['rushing_CAR'] = player_stat +2063 +2064 elif stat['name'] == "YDS": # rushing_YDS +2065 for i in stat['athletes']: +2066 player_id = int(i['id']) +2067 player_name = i['name'] +2068 player_stat = int(i['stat']) +2069 +2070 if rebuilt_json.get(player_id) == None: +2071 rebuilt_json[player_id] = {} +2072 +2073 rebuilt_json[player_id]['game_id'] = game_id +2074 rebuilt_json[player_id]['team_name'] = team_name +2075 rebuilt_json[player_id]['team_confrence'] = team_confrence +2076 rebuilt_json[player_id]['player_id'] = player_id +2077 rebuilt_json[player_id]['player_name'] = player_name +2078 rebuilt_json[player_id]['home_away'] = home_away +2079 rebuilt_json[player_id]['rushing_YDS'] = player_stat +2080 +2081 elif stat['name'] == "AVG": # rushing_AVG +2082 for i in stat['athletes']: +2083 player_id = int(i['id']) +2084 player_name = i['name'] +2085 player_stat = float(i['stat']) +2086 +2087 if rebuilt_json.get(player_id) == None: +2088 rebuilt_json[player_id] = {} +2089 +2090 rebuilt_json[player_id]['game_id'] = game_id +2091 rebuilt_json[player_id]['team_name'] = team_name +2092 rebuilt_json[player_id]['team_confrence'] = team_confrence +2093 rebuilt_json[player_id]['player_id'] = player_id +2094 rebuilt_json[player_id]['player_name'] = player_name +2095 rebuilt_json[player_id]['home_away'] = home_away +2096 rebuilt_json[player_id]['rushing_AVG'] = player_stat +2097 +2098 elif stat['name'] == "TD": # rushing_TD +2099 for i in stat['athletes']: +2100 player_id = int(i['id']) +2101 player_name = i['name'] +2102 player_stat = int(i['stat']) +2103 +2104 if rebuilt_json.get(player_id) == None: +2105 rebuilt_json[player_id] = {} +2106 +2107 rebuilt_json[player_id]['game_id'] = game_id +2108 rebuilt_json[player_id]['team_name'] = team_name +2109 rebuilt_json[player_id]['team_confrence'] = team_confrence +2110 rebuilt_json[player_id]['player_id'] = player_id +2111 rebuilt_json[player_id]['player_name'] = player_name +2112 rebuilt_json[player_id]['home_away'] = home_away +2113 rebuilt_json[player_id]['rushing_TD'] = player_stat +2114 +2115 elif stat['name'] == "LONG": # rushing_LONG +2116 for i in stat['athletes']: +2117 player_id = int(i['id']) +2118 player_name = i['name'] +2119 player_stat = int(i['stat']) +2120 +2121 if rebuilt_json.get(player_id) == None: +2122 rebuilt_json[player_id] = {} +2123 +2124 rebuilt_json[player_id]['game_id'] = game_id +2125 rebuilt_json[player_id]['team_name'] = team_name +2126 rebuilt_json[player_id]['team_confrence'] = team_confrence +2127 rebuilt_json[player_id]['player_id'] = player_id +2128 rebuilt_json[player_id]['player_name'] = player_name +2129 rebuilt_json[player_id]['home_away'] = home_away +2130 rebuilt_json[player_id]['rushing_LONG'] = player_stat +2131 +2132 else: +2133 raise IndexError( +2134 f"Unhandled stat: \t{stat['name']}") +2135 +2136 elif s_category['name'] == "receiving": +2137 for stat in s_category['types']: +2138 if stat['name'] == "REC": # receiving_REC +2139 for i in stat['athletes']: +2140 player_id = int(i['id']) +2141 player_name = i['name'] +2142 player_stat = int(i['stat']) +2143 +2144 if rebuilt_json.get(player_id) == None: +2145 rebuilt_json[player_id] = {} +2146 +2147 rebuilt_json[player_id]['game_id'] = game_id +2148 rebuilt_json[player_id]['team_name'] = team_name +2149 rebuilt_json[player_id]['team_confrence'] = team_confrence +2150 rebuilt_json[player_id]['player_id'] = player_id +2151 rebuilt_json[player_id]['player_name'] = player_name +2152 rebuilt_json[player_id]['home_away'] = home_away +2153 rebuilt_json[player_id]['receiving_REC'] = player_stat +2154 +2155 elif stat['name'] == "YDS": # receiving_YDS +2156 for i in stat['athletes']: +2157 player_id = int(i['id']) +2158 player_name = i['name'] +2159 player_stat = int(i['stat']) +2160 +2161 if rebuilt_json.get(player_id) == None: +2162 rebuilt_json[player_id] = {} +2163 +2164 rebuilt_json[player_id]['game_id'] = game_id +2165 rebuilt_json[player_id]['team_name'] = team_name +2166 rebuilt_json[player_id]['team_confrence'] = team_confrence +2167 rebuilt_json[player_id]['player_id'] = player_id +2168 rebuilt_json[player_id]['player_name'] = player_name +2169 rebuilt_json[player_id]['home_away'] = home_away +2170 rebuilt_json[player_id]['receiving_YDS'] = player_stat +2171 +2172 elif stat['name'] == "AVG": # receiving_AVG +2173 for i in stat['athletes']: +2174 player_id = int(i['id']) +2175 player_name = i['name'] +2176 player_stat = float(i['stat']) +2177 +2178 if rebuilt_json.get(player_id) == None: +2179 rebuilt_json[player_id] = {} +2180 +2181 rebuilt_json[player_id]['game_id'] = game_id +2182 rebuilt_json[player_id]['team_name'] = team_name +2183 rebuilt_json[player_id]['team_confrence'] = team_confrence +2184 rebuilt_json[player_id]['player_id'] = player_id +2185 rebuilt_json[player_id]['player_name'] = player_name +2186 rebuilt_json[player_id]['home_away'] = home_away +2187 rebuilt_json[player_id]['receiving_AVG'] = player_stat +2188 +2189 elif stat['name'] == "TD": # receiving_TD +2190 for i in stat['athletes']: +2191 player_id = int(i['id']) +2192 player_name = i['name'] +2193 player_stat = int(i['stat']) +2194 +2195 if rebuilt_json.get(player_id) == None: +2196 rebuilt_json[player_id] = {} +2197 +2198 rebuilt_json[player_id]['game_id'] = game_id +2199 rebuilt_json[player_id]['team_name'] = team_name +2200 rebuilt_json[player_id]['team_confrence'] = team_confrence +2201 rebuilt_json[player_id]['player_id'] = player_id +2202 rebuilt_json[player_id]['player_name'] = player_name +2203 rebuilt_json[player_id]['home_away'] = home_away +2204 rebuilt_json[player_id]['receiving_TD'] = player_stat +2205 +2206 elif stat['name'] == "LONG": # receiving_LONG +2207 for i in stat['athletes']: +2208 player_id = int(i['id']) +2209 player_name = i['name'] +2210 player_stat = int(i['stat']) +2211 +2212 if rebuilt_json.get(player_id) == None: +2213 rebuilt_json[player_id] = {} +2214 +2215 rebuilt_json[player_id]['game_id'] = game_id +2216 rebuilt_json[player_id]['team_name'] = team_name +2217 rebuilt_json[player_id]['team_confrence'] = team_confrence +2218 rebuilt_json[player_id]['player_id'] = player_id +2219 rebuilt_json[player_id]['player_name'] = player_name +2220 rebuilt_json[player_id]['home_away'] = home_away +2221 rebuilt_json[player_id]['receiving_LONG'] = player_stat +2222 +2223 else: +2224 raise IndexError( +2225 f"Unhandled stat: \t{stat['name']}") +2226 +2227 elif s_category['name'] == "fumbles": +2228 for stat in s_category['types']: +2229 if stat['name'] == "FUM": # fumbles_FUM +2230 for i in stat['athletes']: +2231 player_id = int(i['id']) +2232 player_name = i['name'] +2233 player_stat = int(i['stat']) +2234 +2235 if rebuilt_json.get(player_id) == None: +2236 rebuilt_json[player_id] = {} +2237 +2238 rebuilt_json[player_id]['game_id'] = game_id +2239 rebuilt_json[player_id]['team_name'] = team_name +2240 rebuilt_json[player_id]['team_confrence'] = team_confrence +2241 rebuilt_json[player_id]['player_id'] = player_id +2242 rebuilt_json[player_id]['player_name'] = player_name +2243 rebuilt_json[player_id]['home_away'] = home_away +2244 rebuilt_json[player_id]['fumbles_FUM'] = player_stat +2245 +2246 elif stat['name'] == "LOST": # fumbles_LOST +2247 for i in stat['athletes']: +2248 player_id = int(i['id']) +2249 player_name = i['name'] +2250 player_stat = int(i['stat']) +2251 +2252 if rebuilt_json.get(player_id) == None: +2253 rebuilt_json[player_id] = {} +2254 +2255 rebuilt_json[player_id]['game_id'] = game_id +2256 rebuilt_json[player_id]['team_name'] = team_name +2257 rebuilt_json[player_id]['team_confrence'] = team_confrence +2258 rebuilt_json[player_id]['player_id'] = player_id +2259 rebuilt_json[player_id]['player_name'] = player_name +2260 rebuilt_json[player_id]['home_away'] = home_away +2261 rebuilt_json[player_id]['fumbles_LOST'] = player_stat +2262 +2263 elif stat['name'] == "REC": # fumbles_REC +2264 for i in stat['athletes']: +2265 player_id = int(i['id']) +2266 player_name = i['name'] +2267 player_stat = int(i['stat']) +2268 +2269 if rebuilt_json.get(player_id) == None: +2270 rebuilt_json[player_id] = {} +2271 +2272 rebuilt_json[player_id]['game_id'] = game_id +2273 rebuilt_json[player_id]['team_name'] = team_name +2274 rebuilt_json[player_id]['team_confrence'] = team_confrence +2275 rebuilt_json[player_id]['player_id'] = player_id +2276 rebuilt_json[player_id]['player_name'] = player_name +2277 rebuilt_json[player_id]['home_away'] = home_away +2278 rebuilt_json[player_id]['fumbles_REC'] = player_stat +2279 +2280 else: +2281 raise IndexError( +2282 f"Unhandled stat: \t{stat['name']}") +2283 +2284 elif s_category['name'] == "defensive": +2285 for stat in s_category['types']: +2286 if stat['name'] == "TOT": # defensive_TOT +2287 for i in stat['athletes']: +2288 player_id = int(i['id']) +2289 player_name = i['name'] +2290 player_stat = int(i['stat']) +2291 +2292 if rebuilt_json.get(player_id) == None: +2293 rebuilt_json[player_id] = {} +2294 +2295 rebuilt_json[player_id]['game_id'] = game_id +2296 rebuilt_json[player_id]['team_name'] = team_name +2297 rebuilt_json[player_id]['team_confrence'] = team_confrence +2298 rebuilt_json[player_id]['player_id'] = player_id +2299 rebuilt_json[player_id]['player_name'] = player_name +2300 rebuilt_json[player_id]['home_away'] = home_away +2301 rebuilt_json[player_id]['defensive_TOT'] = player_stat +2302 +2303 elif stat['name'] == "SOLO": # defensive_SOLO +2304 for i in stat['athletes']: +2305 player_id = int(i['id']) +2306 player_name = i['name'] +2307 player_stat = int(i['stat']) +2308 +2309 if rebuilt_json.get(player_id) == None: +2310 rebuilt_json[player_id] = {} +2311 +2312 rebuilt_json[player_id]['game_id'] = game_id +2313 rebuilt_json[player_id]['team_name'] = team_name +2314 rebuilt_json[player_id]['team_confrence'] = team_confrence +2315 rebuilt_json[player_id]['player_id'] = player_id +2316 rebuilt_json[player_id]['player_name'] = player_name +2317 rebuilt_json[player_id]['home_away'] = home_away +2318 rebuilt_json[player_id]['defensive_SOLO'] = player_stat +2319 +2320 elif stat['name'] == "TFL": # defensive_TFL +2321 for i in stat['athletes']: +2322 player_id = int(i['id']) +2323 player_name = i['name'] +2324 player_stat = float(i['stat']) +2325 +2326 if rebuilt_json.get(player_id) == None: +2327 rebuilt_json[player_id] = {} +2328 +2329 rebuilt_json[player_id]['game_id'] = game_id +2330 rebuilt_json[player_id]['team_name'] = team_name +2331 rebuilt_json[player_id]['team_confrence'] = team_confrence +2332 rebuilt_json[player_id]['player_id'] = player_id +2333 rebuilt_json[player_id]['player_name'] = player_name +2334 rebuilt_json[player_id]['home_away'] = home_away +2335 rebuilt_json[player_id]['defensive_TFL'] = player_stat +2336 +2337 elif stat['name'] == "QB HUR": # defensive_QB HUR +2338 for i in stat['athletes']: +2339 player_id = int(i['id']) +2340 player_name = i['name'] +2341 player_stat = int(i['stat']) +2342 +2343 if rebuilt_json.get(player_id) == None: +2344 rebuilt_json[player_id] = {} +2345 +2346 rebuilt_json[player_id]['game_id'] = game_id +2347 rebuilt_json[player_id]['team_name'] = team_name +2348 rebuilt_json[player_id]['team_confrence'] = team_confrence +2349 rebuilt_json[player_id]['player_id'] = player_id +2350 rebuilt_json[player_id]['player_name'] = player_name +2351 rebuilt_json[player_id]['home_away'] = home_away +2352 rebuilt_json[player_id]['defensive_QB HUR'] = player_stat +2353 +2354 elif stat['name'] == "SACKS": # defensive_SACKS +2355 for i in stat['athletes']: +2356 player_id = int(i['id']) +2357 player_name = i['name'] +2358 player_stat = float(i['stat']) +2359 +2360 if rebuilt_json.get(player_id) == None: +2361 rebuilt_json[player_id] = {} +2362 +2363 rebuilt_json[player_id]['game_id'] = game_id +2364 rebuilt_json[player_id]['team_name'] = team_name +2365 rebuilt_json[player_id]['team_confrence'] = team_confrence +2366 rebuilt_json[player_id]['player_id'] = player_id +2367 rebuilt_json[player_id]['player_name'] = player_name +2368 rebuilt_json[player_id]['home_away'] = home_away +2369 rebuilt_json[player_id]['defensive_SACKS'] = player_stat +2370 +2371 elif stat['name'] == "PD": # defensive_PD +2372 for i in stat['athletes']: +2373 player_id = int(i['id']) +2374 player_name = i['name'] +2375 player_stat = int(i['stat']) +2376 +2377 if rebuilt_json.get(player_id) == None: +2378 rebuilt_json[player_id] = {} +2379 +2380 rebuilt_json[player_id]['game_id'] = game_id +2381 rebuilt_json[player_id]['team_name'] = team_name +2382 rebuilt_json[player_id]['team_confrence'] = team_confrence +2383 rebuilt_json[player_id]['player_id'] = player_id +2384 rebuilt_json[player_id]['player_name'] = player_name +2385 rebuilt_json[player_id]['home_away'] = home_away +2386 rebuilt_json[player_id]['defensive_PD'] = player_stat +2387 +2388 elif stat['name'] == "TD": # defensive_TD +2389 for i in stat['athletes']: +2390 player_id = int(i['id']) +2391 player_name = i['name'] +2392 player_stat = int(i['stat']) +2393 +2394 if rebuilt_json.get(player_id) == None: +2395 rebuilt_json[player_id] = {} +2396 +2397 rebuilt_json[player_id]['game_id'] = game_id +2398 rebuilt_json[player_id]['team_name'] = team_name +2399 rebuilt_json[player_id]['team_confrence'] = team_confrence +2400 rebuilt_json[player_id]['player_id'] = player_id +2401 rebuilt_json[player_id]['player_name'] = player_name +2402 rebuilt_json[player_id]['home_away'] = home_away +2403 rebuilt_json[player_id]['defensive_TD'] = player_stat +2404 +2405 else: +2406 raise IndexError( +2407 f"Unhandled stat: \t{stat['name']}") +2408 +2409 elif s_category['name'] == "interceptions": +2410 for stat in s_category['types']: +2411 if stat['name'] == "INT": # interceptions_INT +2412 for i in stat['athletes']: +2413 player_id = int(i['id']) +2414 player_name = i['name'] +2415 player_stat = int(i['stat']) +2416 +2417 if rebuilt_json.get(player_id) == None: +2418 rebuilt_json[player_id] = {} +2419 +2420 rebuilt_json[player_id]['game_id'] = game_id +2421 rebuilt_json[player_id]['team_name'] = team_name +2422 rebuilt_json[player_id]['team_confrence'] = team_confrence +2423 rebuilt_json[player_id]['player_id'] = player_id +2424 rebuilt_json[player_id]['player_name'] = player_name +2425 rebuilt_json[player_id]['home_away'] = home_away +2426 rebuilt_json[player_id]['interceptions_INT'] = player_stat +2427 +2428 elif stat['name'] == "YDS": # interceptions_YDS +2429 for i in stat['athletes']: +2430 player_id = int(i['id']) +2431 player_name = i['name'] +2432 player_stat = int(i['stat']) +2433 +2434 if rebuilt_json.get(player_id) == None: +2435 rebuilt_json[player_id] = {} +2436 +2437 rebuilt_json[player_id]['game_id'] = game_id +2438 rebuilt_json[player_id]['team_name'] = team_name +2439 rebuilt_json[player_id]['team_confrence'] = team_confrence +2440 rebuilt_json[player_id]['player_id'] = player_id +2441 rebuilt_json[player_id]['player_name'] = player_name +2442 rebuilt_json[player_id]['home_away'] = home_away +2443 rebuilt_json[player_id]['interceptions_YDS'] = player_stat +2444 +2445 elif stat['name'] == "TD": # interceptions_TD +2446 for i in stat['athletes']: +2447 player_id = int(i['id']) +2448 player_name = i['name'] +2449 player_stat = int(i['stat']) +2450 +2451 if rebuilt_json.get(player_id) == None: +2452 rebuilt_json[player_id] = {} +2453 +2454 rebuilt_json[player_id]['game_id'] = game_id +2455 rebuilt_json[player_id]['team_name'] = team_name +2456 rebuilt_json[player_id]['team_confrence'] = team_confrence +2457 rebuilt_json[player_id]['player_id'] = player_id +2458 rebuilt_json[player_id]['player_name'] = player_name +2459 rebuilt_json[player_id]['home_away'] = home_away +2460 rebuilt_json[player_id]['interceptions_TD'] = player_stat +2461 +2462 else: +2463 raise IndexError( +2464 f"Unhandled stat: \t{stat['name']}") +2465 +2466 elif s_category['name'] == "punting": +2467 for stat in s_category['types']: +2468 if stat['name'] == "NO": # punting_NO +2469 for i in stat['athletes']: +2470 player_id = int(i['id']) +2471 player_name = i['name'] +2472 player_stat = int(i['stat']) +2473 +2474 if rebuilt_json.get(player_id) == None: +2475 rebuilt_json[player_id] = {} +2476 +2477 rebuilt_json[player_id]['game_id'] = game_id +2478 rebuilt_json[player_id]['team_name'] = team_name +2479 rebuilt_json[player_id]['team_confrence'] = team_confrence +2480 rebuilt_json[player_id]['player_id'] = player_id +2481 rebuilt_json[player_id]['player_name'] = player_name +2482 rebuilt_json[player_id]['home_away'] = home_away +2483 rebuilt_json[player_id]['punting_NO'] = player_stat +2484 +2485 elif stat['name'] == "YDS": # punting_YDS +2486 for i in stat['athletes']: +2487 player_id = int(i['id']) +2488 player_name = i['name'] +2489 player_stat = int(i['stat']) +2490 +2491 if rebuilt_json.get(player_id) == None: +2492 rebuilt_json[player_id] = {} +2493 +2494 rebuilt_json[player_id]['game_id'] = game_id +2495 rebuilt_json[player_id]['team_name'] = team_name +2496 rebuilt_json[player_id]['team_confrence'] = team_confrence +2497 rebuilt_json[player_id]['player_id'] = player_id +2498 rebuilt_json[player_id]['player_name'] = player_name +2499 rebuilt_json[player_id]['home_away'] = home_away +2500 rebuilt_json[player_id]['punting_YDS'] = player_stat +2501 +2502 elif stat['name'] == "AVG": # punting_AVG +2503 for i in stat['athletes']: +2504 player_id = int(i['id']) +2505 player_name = i['name'] +2506 player_stat = float(i['stat']) +2507 +2508 if rebuilt_json.get(player_id) == None: +2509 rebuilt_json[player_id] = {} +2510 +2511 rebuilt_json[player_id]['game_id'] = game_id +2512 rebuilt_json[player_id]['team_name'] = team_name +2513 rebuilt_json[player_id]['team_confrence'] = team_confrence +2514 rebuilt_json[player_id]['player_id'] = player_id +2515 rebuilt_json[player_id]['player_name'] = player_name +2516 rebuilt_json[player_id]['home_away'] = home_away +2517 rebuilt_json[player_id]['punting_AVG'] = player_stat +2518 +2519 elif stat['name'] == "TB": # punting_TB +2520 for i in stat['athletes']: +2521 player_id = int(i['id']) +2522 player_name = i['name'] +2523 player_stat = int(i['stat']) +2524 +2525 if rebuilt_json.get(player_id) == None: +2526 rebuilt_json[player_id] = {} +2527 +2528 rebuilt_json[player_id]['game_id'] = game_id +2529 rebuilt_json[player_id]['team_name'] = team_name +2530 rebuilt_json[player_id]['team_confrence'] = team_confrence +2531 rebuilt_json[player_id]['player_id'] = player_id +2532 rebuilt_json[player_id]['player_name'] = player_name +2533 rebuilt_json[player_id]['home_away'] = home_away +2534 rebuilt_json[player_id]['punting_TB'] = player_stat +2535 +2536 elif stat['name'] == "In 20": # punting_In 20 +2537 for i in stat['athletes']: +2538 player_id = int(i['id']) +2539 player_name = i['name'] +2540 player_stat = int(i['stat']) +2541 +2542 if rebuilt_json.get(player_id) == None: +2543 rebuilt_json[player_id] = {} +2544 +2545 rebuilt_json[player_id]['game_id'] = game_id +2546 rebuilt_json[player_id]['team_name'] = team_name +2547 rebuilt_json[player_id]['team_confrence'] = team_confrence +2548 rebuilt_json[player_id]['player_id'] = player_id +2549 rebuilt_json[player_id]['player_name'] = player_name +2550 rebuilt_json[player_id]['home_away'] = home_away +2551 rebuilt_json[player_id]['punting_In 20'] = player_stat +2552 +2553 elif stat['name'] == "LONG": # punting_LONG +2554 for i in stat['athletes']: +2555 player_id = int(i['id']) +2556 player_name = i['name'] +2557 player_stat = int(i['stat']) +2558 +2559 if rebuilt_json.get(player_id) == None: +2560 rebuilt_json[player_id] = {} +2561 +2562 rebuilt_json[player_id]['game_id'] = game_id +2563 rebuilt_json[player_id]['team_name'] = team_name +2564 rebuilt_json[player_id]['team_confrence'] = team_confrence +2565 rebuilt_json[player_id]['player_id'] = player_id +2566 rebuilt_json[player_id]['player_name'] = player_name +2567 rebuilt_json[player_id]['home_away'] = home_away +2568 rebuilt_json[player_id]['punting_LONG'] = player_stat +2569 +2570 else: +2571 raise IndexError( +2572 f"Unhandled stat: \t{stat['name']}") +2573 +2574 elif s_category['name'] == "kicking": +2575 for stat in s_category['types']: +2576 if stat['name'] == "FG": # kicking_FG +2577 for i in stat['athletes']: +2578 player_id = int(i['id']) +2579 player_name = i['name'] +2580 player_stat = i['stat'] +2581 +2582 if rebuilt_json.get(player_id) == None: +2583 rebuilt_json[player_id] = {} +2584 +2585 rebuilt_json[player_id]['game_id'] = game_id +2586 rebuilt_json[player_id]['team_name'] = team_name +2587 rebuilt_json[player_id]['team_confrence'] = team_confrence +2588 rebuilt_json[player_id]['player_id'] = player_id +2589 rebuilt_json[player_id]['player_name'] = player_name +2590 rebuilt_json[player_id]['home_away'] = home_away +2591 rebuilt_json[player_id]['kicking_FG'] = player_stat +2592 +2593 elif stat['name'] == "TOT": # kicking_FG, special case +2594 for i in stat['athletes']: +2595 player_id = int(i['id']) +2596 player_name = i['name'] +2597 player_stat = i['stat'] +2598 +2599 if rebuilt_json.get(player_id) == None: +2600 rebuilt_json[player_id] = {} +2601 +2602 rebuilt_json[player_id]['game_id'] = game_id +2603 rebuilt_json[player_id]['team_name'] = team_name +2604 rebuilt_json[player_id]['team_confrence'] = team_confrence +2605 rebuilt_json[player_id]['player_id'] = player_id +2606 rebuilt_json[player_id]['player_name'] = player_name +2607 rebuilt_json[player_id]['home_away'] = home_away +2608 rebuilt_json[player_id]['kicking_FG'] = player_stat +2609 +2610 elif stat['name'] == "PCT": # kicking_PCT +2611 for i in stat['athletes']: +2612 player_id = int(i['id']) +2613 player_name = i['name'] +2614 player_stat = float(i['stat']) +2615 +2616 if rebuilt_json.get(player_id) == None: +2617 rebuilt_json[player_id] = {} +2618 +2619 rebuilt_json[player_id]['game_id'] = game_id +2620 rebuilt_json[player_id]['team_name'] = team_name +2621 rebuilt_json[player_id]['team_confrence'] = team_confrence +2622 rebuilt_json[player_id]['player_id'] = player_id +2623 rebuilt_json[player_id]['player_name'] = player_name +2624 rebuilt_json[player_id]['home_away'] = home_away +2625 rebuilt_json[player_id]['kicking_PCT'] = player_stat +2626 +2627 elif stat['name'] == "LONG": # kicking_LONG +2628 for i in stat['athletes']: +2629 player_id = int(i['id']) +2630 player_name = i['name'] +2631 player_stat = int(i['stat']) +2632 +2633 if rebuilt_json.get(player_id) == None: +2634 rebuilt_json[player_id] = {} +2635 +2636 rebuilt_json[player_id]['game_id'] = game_id +2637 rebuilt_json[player_id]['team_name'] = team_name +2638 rebuilt_json[player_id]['team_confrence'] = team_confrence +2639 rebuilt_json[player_id]['player_id'] = player_id +2640 rebuilt_json[player_id]['player_name'] = player_name +2641 rebuilt_json[player_id]['home_away'] = home_away +2642 rebuilt_json[player_id]['kicking_LONG'] = player_stat +2643 +2644 elif stat['name'] == "XP": # kicking_XP +2645 for i in stat['athletes']: +2646 player_id = int(i['id']) +2647 player_name = i['name'] +2648 player_stat = i['stat'] +2649 +2650 if rebuilt_json.get(player_id) == None: +2651 rebuilt_json[player_id] = {} +2652 +2653 rebuilt_json[player_id]['game_id'] = game_id +2654 rebuilt_json[player_id]['team_name'] = team_name +2655 rebuilt_json[player_id]['team_confrence'] = team_confrence +2656 rebuilt_json[player_id]['player_id'] = player_id +2657 rebuilt_json[player_id]['player_name'] = player_name +2658 rebuilt_json[player_id]['home_away'] = home_away +2659 rebuilt_json[player_id]['kicking_XP'] = player_stat +2660 +2661 elif stat['name'] == "PTS": # kicking_PTS +2662 for i in stat['athletes']: +2663 player_id = int(i['id']) +2664 player_name = i['name'] +2665 player_stat = int(i['stat']) +2666 +2667 if rebuilt_json.get(player_id) == None: +2668 rebuilt_json[player_id] = {} +2669 +2670 rebuilt_json[player_id]['game_id'] = game_id +2671 rebuilt_json[player_id]['team_name'] = team_name +2672 rebuilt_json[player_id]['team_confrence'] = team_confrence +2673 rebuilt_json[player_id]['player_id'] = player_id +2674 rebuilt_json[player_id]['player_name'] = player_name +2675 rebuilt_json[player_id]['home_away'] = home_away +2676 rebuilt_json[player_id]['kicking_PTS'] = player_stat +2677 +2678 else: +2679 raise IndexError( +2680 f"Unhandled stat: \t{stat['name']}") +2681 +2682 elif s_category['name'] == "kickReturns": +2683 for stat in s_category['types']: +2684 if stat['name'] == "NO": # kickReturns_NO +2685 for i in stat['athletes']: +2686 player_id = int(i['id']) +2687 player_name = i['name'] +2688 player_stat = int(i['stat']) +2689 +2690 if rebuilt_json.get(player_id) == None: +2691 rebuilt_json[player_id] = {} +2692 +2693 rebuilt_json[player_id]['game_id'] = game_id +2694 rebuilt_json[player_id]['team_name'] = team_name +2695 rebuilt_json[player_id]['team_confrence'] = team_confrence +2696 rebuilt_json[player_id]['player_id'] = player_id +2697 rebuilt_json[player_id]['player_name'] = player_name +2698 rebuilt_json[player_id]['home_away'] = home_away +2699 rebuilt_json[player_id]['kickReturns_NO'] = player_stat +2700 +2701 elif stat['name'] == "YDS": # kickReturns_YDS +2702 for i in stat['athletes']: +2703 player_id = int(i['id']) +2704 player_name = i['name'] +2705 player_stat = int(i['stat']) +2706 +2707 if rebuilt_json.get(player_id) == None: +2708 rebuilt_json[player_id] = {} +2709 +2710 rebuilt_json[player_id]['game_id'] = game_id +2711 rebuilt_json[player_id]['team_name'] = team_name +2712 rebuilt_json[player_id]['team_confrence'] = team_confrence +2713 rebuilt_json[player_id]['player_id'] = player_id +2714 rebuilt_json[player_id]['player_name'] = player_name +2715 rebuilt_json[player_id]['home_away'] = home_away +2716 rebuilt_json[player_id]['kickReturns_YDS'] = player_stat +2717 +2718 elif stat['name'] == "AVG": # kickReturns_AVG +2719 for i in stat['athletes']: +2720 player_id = int(i['id']) +2721 player_name = i['name'] +2722 player_stat = float(i['stat']) +2723 +2724 if rebuilt_json.get(player_id) == None: +2725 rebuilt_json[player_id] = {} +2726 +2727 rebuilt_json[player_id]['game_id'] = game_id +2728 rebuilt_json[player_id]['team_name'] = team_name +2729 rebuilt_json[player_id]['team_confrence'] = team_confrence +2730 rebuilt_json[player_id]['player_id'] = player_id +2731 rebuilt_json[player_id]['player_name'] = player_name +2732 rebuilt_json[player_id]['home_away'] = home_away +2733 rebuilt_json[player_id]['kickReturns_AVG'] = player_stat +2734 +2735 elif stat['name'] == "TD": # kickReturns_TD +2736 for i in stat['athletes']: +2737 player_id = int(i['id']) +2738 player_name = i['name'] +2739 player_stat = int(i['stat']) +2740 +2741 if rebuilt_json.get(player_id) == None: +2742 rebuilt_json[player_id] = {} +2743 +2744 rebuilt_json[player_id]['game_id'] = game_id +2745 rebuilt_json[player_id]['team_name'] = team_name +2746 rebuilt_json[player_id]['team_confrence'] = team_confrence +2747 rebuilt_json[player_id]['player_id'] = player_id +2748 rebuilt_json[player_id]['player_name'] = player_name +2749 rebuilt_json[player_id]['home_away'] = home_away +2750 rebuilt_json[player_id]['kickReturns_TD'] = player_stat +2751 +2752 elif stat['name'] == "LONG": # kickReturns_LONG +2753 for i in stat['athletes']: +2754 player_id = int(i['id']) +2755 player_name = i['name'] +2756 player_stat = int(i['stat']) +2757 +2758 if rebuilt_json.get(player_id) == None: +2759 rebuilt_json[player_id] = {} +2760 +2761 rebuilt_json[player_id]['game_id'] = game_id +2762 rebuilt_json[player_id]['team_name'] = team_name +2763 rebuilt_json[player_id]['team_confrence'] = team_confrence +2764 rebuilt_json[player_id]['player_id'] = player_id +2765 rebuilt_json[player_id]['player_name'] = player_name +2766 rebuilt_json[player_id]['home_away'] = home_away +2767 rebuilt_json[player_id]['kickReturns_LONG'] = player_stat +2768 +2769 else: +2770 raise IndexError( +2771 f"Unhandled stat: \t{stat['name']}") +2772 +2773 elif s_category['name'] == "puntReturns": +2774 for stat in s_category['types']: +2775 if stat['name'] == "NO": # puntReturns_NO +2776 for i in stat['athletes']: +2777 player_id = int(i['id']) +2778 player_name = i['name'] +2779 player_stat = int(i['stat']) +2780 +2781 if rebuilt_json.get(player_id) == None: +2782 rebuilt_json[player_id] = {} +2783 +2784 rebuilt_json[player_id]['game_id'] = game_id +2785 rebuilt_json[player_id]['team_name'] = team_name +2786 rebuilt_json[player_id]['team_confrence'] = team_confrence +2787 rebuilt_json[player_id]['player_id'] = player_id +2788 rebuilt_json[player_id]['player_name'] = player_name +2789 rebuilt_json[player_id]['home_away'] = home_away +2790 rebuilt_json[player_id]['puntReturns_NO'] = player_stat +2791 +2792 elif stat['name'] == "YDS": # puntReturns_YDS +2793 for i in stat['athletes']: +2794 player_id = int(i['id']) +2795 player_name = i['name'] +2796 player_stat = int(i['stat']) +2797 +2798 if rebuilt_json.get(player_id) == None: +2799 rebuilt_json[player_id] = {} +2800 +2801 rebuilt_json[player_id]['game_id'] = game_id +2802 rebuilt_json[player_id]['team_name'] = team_name +2803 rebuilt_json[player_id]['team_confrence'] = team_confrence +2804 rebuilt_json[player_id]['player_id'] = player_id +2805 rebuilt_json[player_id]['player_name'] = player_name +2806 rebuilt_json[player_id]['home_away'] = home_away +2807 rebuilt_json[player_id]['puntReturns_YDS'] = player_stat +2808 +2809 elif stat['name'] == "AVG": # puntReturns_AVG +2810 for i in stat['athletes']: +2811 player_id = int(i['id']) +2812 player_name = i['name'] +2813 player_stat = float(i['stat']) +2814 +2815 if rebuilt_json.get(player_id) == None: +2816 rebuilt_json[player_id] = {} +2817 +2818 rebuilt_json[player_id]['game_id'] = game_id +2819 rebuilt_json[player_id]['team_name'] = team_name +2820 rebuilt_json[player_id]['team_confrence'] = team_confrence +2821 rebuilt_json[player_id]['player_id'] = player_id +2822 rebuilt_json[player_id]['player_name'] = player_name +2823 rebuilt_json[player_id]['home_away'] = home_away +2824 rebuilt_json[player_id]['puntReturns_AVG'] = player_stat +2825 +2826 elif stat['name'] == "TD": # puntReturns_TD +2827 for i in stat['athletes']: +2828 player_id = int(i['id']) +2829 player_name = i['name'] +2830 player_stat = int(i['stat']) +2831 +2832 if rebuilt_json.get(player_id) == None: +2833 rebuilt_json[player_id] = {} +2834 +2835 rebuilt_json[player_id]['game_id'] = game_id +2836 rebuilt_json[player_id]['team_name'] = team_name +2837 rebuilt_json[player_id]['team_confrence'] = team_confrence +2838 rebuilt_json[player_id]['player_id'] = player_id +2839 rebuilt_json[player_id]['player_name'] = player_name +2840 rebuilt_json[player_id]['home_away'] = home_away +2841 rebuilt_json[player_id]['puntReturns_TD'] = player_stat +2842 +2843 elif stat['name'] == "LONG": # puntReturns_LONG +2844 for i in stat['athletes']: +2845 player_id = int(i['id']) +2846 player_name = i['name'] +2847 player_stat = int(i['stat']) +2848 +2849 if rebuilt_json.get(player_id) == None: +2850 rebuilt_json[player_id] = {} +2851 +2852 rebuilt_json[player_id]['game_id'] = game_id +2853 rebuilt_json[player_id]['team_name'] = team_name +2854 rebuilt_json[player_id]['team_confrence'] = team_confrence +2855 rebuilt_json[player_id]['player_id'] = player_id +2856 rebuilt_json[player_id]['player_name'] = player_name +2857 rebuilt_json[player_id]['home_away'] = home_away +2858 rebuilt_json[player_id]['puntReturns_LONG'] = player_stat +2859 +2860 else: +2861 raise IndexError( +2862 f"Unhandled stat: \t{stat['name']}") +2863 +2864 else: +2865 raise IndexError(f"Unhandled stat category: \t{ +2866 s_category['name']}") +2867 +2868 for key, value in tqdm(rebuilt_json.items()): +2869 # print(key) +2870 +2871 # print(value) +2872 game_id = value['game_id'] +2873 team_name = value['team_name'] +2874 team_confrence = value['team_confrence'] +2875 player_id = value['player_id'] +2876 player_name = value['player_name'] +2877 home_away = value['home_away'] +2878 +2879 row_df = pd.DataFrame( +2880 { +2881 "game_id": game_id, +2882 "team_name": team_name, +2883 "team_confrence": team_confrence, +2884 "player_id": player_id, +2885 "player_name": player_name, +2886 "home_away": home_away +2887 }, +2888 index=[0] +2889 ) +2890 # Passing +2891 if value.get('passing_C/ATT') != None: +2892 row_df['passing_C/ATT'] = value['passing_C/ATT'] +2893 +2894 if value.get('passing_YDS') != None: +2895 row_df['passing_YDS'] = value['passing_YDS'] +2896 +2897 if value.get('passing_AVG') != None: +2898 row_df['passing_AVG'] = value['passing_AVG'] +2899 +2900 if value.get('passing_TD') != None: +2901 row_df['passing_TD'] = value['passing_TD'] +2902 +2903 if value.get('passing_INT') != None: +2904 row_df['passing_INT'] = value['passing_INT'] +2905 +2906 if value.get('passing_QBR') != None: +2907 row_df['passing_QBR'] = value['passing_QBR'] +2908 +2909 # Rushing +2910 if value.get('rushing_CAR') != None: +2911 row_df['rushing_CAR'] = value['rushing_CAR'] +2912 +2913 if value.get('rushing_YDS') != None: +2914 row_df['rushing_YDS'] = value['rushing_YDS'] +2915 +2916 if value.get('rushing_AVG') != None: +2917 row_df['rushing_AVG'] = value['rushing_AVG'] +2918 +2919 if value.get('rushing_TD') != None: +2920 row_df['rushing_TD'] = value['rushing_TD'] +2921 +2922 if value.get('rushing_LONG') != None: +2923 row_df['rushing_LONG'] = value['rushing_LONG'] +2924 +2925 # Receiving +2926 if value.get('receiving_REC') != None: +2927 row_df['receiving_REC'] = value['receiving_REC'] +2928 +2929 if value.get('receiving_YDS') != None: +2930 row_df['receiving_YDS'] = value['receiving_YDS'] +2931 +2932 if value.get('receiving_AVG') != None: +2933 row_df['receiving_AVG'] = value['receiving_AVG'] +2934 +2935 if value.get('receiving_TD') != None: +2936 row_df['receiving_TD'] = value['receiving_TD'] +2937 +2938 if value.get('receiving_LONG') != None: +2939 row_df['receiving_LONG'] = value['receiving_LONG'] +2940 +2941 # Fumbles +2942 if value.get('fumbles_FUM') != None: +2943 row_df['fumbles_FUM'] = value['fumbles_FUM'] +2944 +2945 if value.get('fumbles_LOST') != None: +2946 row_df['fumbles_LOST'] = value['fumbles_LOST'] +2947 +2948 if value.get('fumbles_REC') != None: +2949 row_df['fumbles_REC'] = value['fumbles_REC'] +2950 +2951 # Defense +2952 if value.get('defensive_TOT') != None: +2953 row_df['defensive_TOT'] = value['defensive_TOT'] +2954 +2955 if value.get('defensive_SOLO') != None: +2956 row_df['defensive_SOLO'] = value['defensive_SOLO'] +2957 +2958 if value.get('defensive_TFL') != None: +2959 row_df['defensive_TFL'] = value['defensive_TFL'] +2960 +2961 if value.get('defensive_QB HUR') != None: +2962 row_df['defensive_QB HUR'] = value['defensive_QB HUR'] +2963 +2964 if value.get('defensive_SACKS') != None: +2965 row_df['defensive_SACKS'] = value['defensive_SACKS'] +2966 +2967 if value.get('defensive_PD') != None: +2968 row_df['defensive_PD'] = value['defensive_PD'] +2969 +2970 if value.get('defensive_TD') != None: +2971 row_df['defensive_TD'] = value['defensive_TD'] +2972 +2973 # interceptions +2974 if value.get('interceptions_INT') != None: +2975 row_df['interceptions_INT'] = value['interceptions_INT'] +2976 +2977 if value.get('interceptions_YDS') != None: +2978 row_df['interceptions_YDS'] = value['interceptions_YDS'] +2979 +2980 if value.get('interceptions_TD') != None: +2981 row_df['interceptions_TD'] = value['interceptions_TD'] +2982 +2983 # punting +2984 if value.get('punting_NO') != None: +2985 row_df['punting_NO'] = value['punting_NO'] +2986 +2987 if value.get('punting_YDS') != None: +2988 row_df['punting_YDS'] = value['punting_YDS'] +2989 +2990 if value.get('punting_AVG') != None: +2991 row_df['punting_AVG'] = value['punting_AVG'] +2992 +2993 if value.get('punting_TB') != None: +2994 row_df['punting_TB'] = value['punting_TB'] +2995 +2996 if value.get('punting_In 20') != None: +2997 row_df['punting_In 20'] = value['punting_In 20'] +2998 +2999 if value.get('punting_LONG') != None: +3000 row_df['punting_LONG'] = value['punting_LONG'] +3001 +3002 # kicking +3003 if value.get('kicking_FG') != None: +3004 row_df['kicking_FG'] = value['kicking_FG'] +3005 +3006 if value.get('kicking_PCT') != None: +3007 row_df['kicking_PCT'] = value['kicking_PCT'] +3008 +3009 if value.get('kicking_LONG') != None: +3010 row_df['kicking_LONG'] = value['kicking_LONG'] +3011 +3012 if value.get('kicking_XP') != None: +3013 row_df['kicking_XP'] = value['kicking_XP'] +3014 +3015 if value.get('kicking_PTS') != None: +3016 row_df['kicking_PTS'] = value['kicking_PTS'] +3017 +3018 # kickReturns +3019 if value.get('kickReturns_NO') != None: +3020 row_df['kickReturns_NO'] = value['kickReturns_NO'] +3021 +3022 if value.get('kickReturns_YDS') != None: +3023 row_df['kickReturns_YDS'] = value['kickReturns_YDS'] +3024 +3025 if value.get('kickReturns_AVG') != None: +3026 row_df['kickReturns_AVG'] = value['kickReturns_AVG'] +3027 +3028 if value.get('kickReturns_TD') != None: +3029 row_df['kickReturns_TD'] = value['kickReturns_TD'] +3030 +3031 if value.get('kickReturns_LONG') != None: +3032 row_df['kickReturns_LONG'] = value['kickReturns_LONG'] +3033 +3034 # puntReturns +3035 if value.get('puntReturns_NO') != None: +3036 row_df['puntReturns_NO'] = value['puntReturns_NO'] +3037 +3038 if value.get('puntReturns_YDS') != None: +3039 row_df['puntReturns_YDS'] = value['puntReturns_YDS'] +3040 +3041 if value.get('puntReturns_AVG') != None: +3042 row_df['puntReturns_AVG'] = value['puntReturns_AVG'] +3043 +3044 if value.get('puntReturns_TD') != None: +3045 row_df['puntReturns_TD'] = value['puntReturns_TD'] +3046 +3047 if value.get('puntReturns_LONG') != None: +3048 row_df['puntReturns_LONG'] = value['puntReturns_LONG'] +3049 +3050 cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) +3051 del row_df +3052 +3053 cfb_games_df[['passing_COMP', 'passing_ATT'] +3054 ] = cfb_games_df['passing_C/ATT'].str.split('/', expand=True) +3055 +3056 cfb_games_df[['kicking_FGM', 'kicking_FGA'] +3057 ] = cfb_games_df['kicking_FG'].str.split('/', expand=True) +3058 cfb_games_df[['kicking_XPM', 'kicking_XPA'] +3059 ] = cfb_games_df['kicking_XP'].str.split('/', expand=True) +3060 +3061 cfb_games_df = cfb_games_df.fillna(0) +3062 +3063 cfb_games_df = cfb_games_df.astype({ +3064 "passing_COMP": "int", +3065 "passing_ATT": "int", +3066 "kicking_FGM": "int", +3067 "kicking_FGA": "int", +3068 "kicking_XPM": "int", +3069 "kicking_XPA": "int" +3070 }) +3071 # print(cfb_games_df.columns) +3072 +3073 if filter_by_stat_category == False: +3074 cfb_games_df = cfb_games_df.reindex(columns=stat_columns) +3075 +3076 elif filter_by_stat_category == True and stat_category == "passing": +3077 cfb_games_df = cfb_games_df[[ +3078 'game_id', +3079 'team_name', +3080 'team_confrence', +3081 'player_id', +3082 'player_name', +3083 'home_away', +3084 # PASS +3085 'passing_C/ATT', +3086 'passing_COMP', +3087 'passing_ATT', +3088 'passing_YDS', +3089 'passing_AVG', +3090 'passing_TD', +3091 'passing_INT', +3092 'passing_QBR' +3093 ]] +3094 +3095 elif filter_by_stat_category == True and stat_category == "rushing": +3096 cfb_games_df = cfb_games_df[[ +3097 'game_id', +3098 'team_name', +3099 'team_confrence', +3100 'player_id', +3101 'player_name', +3102 'home_away', +3103 # RUSH +3104 'rushing_CAR', +3105 'rushing_YDS', +3106 'rushing_AVG', +3107 'rushing_TD', +3108 'rushing_LONG', +3109 ]] +3110 +3111 elif filter_by_stat_category == True and stat_category == "receiving": +3112 cfb_games_df = cfb_games_df[[ +3113 'game_id', +3114 'team_name', +3115 'team_confrence', +3116 'player_id', +3117 'player_name', +3118 'home_away', +3119 # REC +3120 'receiving_REC', +3121 'receiving_YDS', +3122 'receiving_AVG', +3123 'receiving_TD', +3124 'receiving_LONG' +3125 ]] +3126 +3127 elif filter_by_stat_category == True and stat_category == "fumbles": +3128 cfb_games_df = cfb_games_df[[ +3129 'game_id', +3130 'team_name', +3131 'team_confrence', +3132 'player_id', +3133 'player_name', +3134 'home_away', +3135 # FUM +3136 'fumbles_FUM', +3137 'fumbles_LOST', +3138 'fumbles_REC' +3139 ]] +3140 +3141 elif filter_by_stat_category == True and stat_category == "defensive": +3142 cfb_games_df = cfb_games_df[[ +3143 'game_id', +3144 'team_name', +3145 'team_confrence', +3146 'player_id', +3147 'player_name', +3148 'home_away', +3149 # DEFENSE +3150 'defensive_TOT', +3151 'defensive_SOLO', +3152 'defensive_TFL', +3153 'defensive_QB HUR', +3154 'defensive_SACKS', +3155 'defensive_PD', +3156 'defensive_TD' +3157 ]] +3158 +3159 elif filter_by_stat_category == True and stat_category == "interceptions": +3160 cfb_games_df = cfb_games_df[[ +3161 'game_id', +3162 'team_name', +3163 'team_confrence', +3164 'player_id', +3165 'player_name', +3166 'home_away', +3167 # INT +3168 'interceptions_INT', +3169 'interceptions_YDS', +3170 'interceptions_TD', +3171 ]] +3172 +3173 elif filter_by_stat_category == True and stat_category == "punting": +3174 cfb_games_df = cfb_games_df[[ +3175 'game_id', +3176 'team_name', +3177 'team_confrence', +3178 'player_id', +3179 'player_name', +3180 'home_away', +3181 # PUNT +3182 'punting_NO', +3183 'punting_YDS', +3184 'punting_AVG', +3185 'punting_TB', +3186 'punting_In 20', +3187 'punting_LONG' +3188 ]] +3189 +3190 elif filter_by_stat_category == True and stat_category == "kicking": +3191 cfb_games_df = cfb_games_df[[ +3192 'game_id', +3193 'team_name', +3194 'team_confrence', +3195 'player_id', +3196 'player_name', +3197 'home_away', +3198 # KICK +3199 'kicking_FG', +3200 'kicking_FGM', +3201 'kicking_FGA', +3202 'kicking_PCT', +3203 'kicking_LONG', +3204 'kicking_XP', +3205 'kicking_XPM', +3206 'kicking_XPA', +3207 'kicking_PTS' +3208 ]] +3209 +3210 elif filter_by_stat_category == True and stat_category == "kickReturns": +3211 cfb_games_df = cfb_games_df[[ +3212 'game_id', +3213 'team_name', +3214 'team_confrence', +3215 'player_id', +3216 'player_name', +3217 'home_away', +3218 # KR +3219 'kickReturns_NO', +3220 'kickReturns_YDS', +3221 'kickReturns_AVG', +3222 'kickReturns_TD', +3223 'kickReturns_LONG' +3224 ]] +3225 +3226 elif filter_by_stat_category == True and stat_category == "puntReturns": +3227 cfb_games_df = cfb_games_df[[ +3228 'game_id', +3229 'team_name', +3230 'team_confrence', +3231 'player_id', +3232 'player_name', +3233 'home_away', +3234 # KR +3235 'puntReturns_NO', +3236 'puntReturns_YDS', +3237 'puntReturns_AVG', +3238 'puntReturns_TD', +3239 'puntReturns_LONG' +3240 ]] +3241 +3242 return cfb_games_df +3243 +3244 +3245def get_cfbd_player_advanced_game_stats( +3246 game_id: int, +3247 api_key: str = None, +3248 api_key_dir: str = None, +3249 return_as_dict: bool = False): +3250 """ +3251 Retrives advanced game stats from the CFBD API. +3252 +3253 Parameters +3254 ---------- +3255 +3256 `api_key` (str, optional): +3257 Semi-optional argument. +3258 If `api_key` is null, this function will attempt to load a CFBD API key +3259 from the python environment, or from a file on this computer. +3260 If `api_key` is not null, this function will automatically assume that the +3261 inputted `api_key` is a valid CFBD API key. +3262 +3263 `api_key_dir` (str, optional): +3264 Optional argument. +3265 If `api_key` is set to a string non-empty string, this variable is ignored. +3266 If `api_key_dir` is null, and `api_key` is null, +3267 this function will try to find a CFBD API key file in this user's home directory. +3268 If `api_key_dir` is set to a string, and `api_key` is null, +3269 this function will assume that `api_key_dir` is a directory, +3270 and will try to find a CFBD API key file in that directory. +3271 +3272 `return_as_dict` (bool, semi-optional): +3273 Semi-optional argument. +3274 If you want this function to return the data as a dictionary (read: JSON object), +3275 instead of a pandas `DataFrame` object, +3276 set `return_as_dict` to `True`. +3277 +3278 Usage +3279 ---------- +3280 ``` +3281 import time +3282 +3283 from cfbd_json_py.games import get_cfbd_player_advanced_game_stats +3284 +3285 +3286 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +3287 +3288 if cfbd_key != "tigersAreAwsome": +3289 print("Using the user's API key declared in this script for this example.") +3290 +3291 # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, +3292 # and the Oklahoma Sooners Football Program. +3293 print("Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.") +3294 json_data = get_cfbd_player_advanced_game_stats( +3295 api_key=cfbd_key, +3296 game_id=401135278 +3297 ) +3298 print(json_data) +3299 time.sleep(5) +3300 +3301 +3302 # You can also tell this function to just return the API call as +3303 # a Dictionary (read: JSON) object. +3304 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +3305 json_data = get_cfbd_player_advanced_game_stats( +3306 api_key=cfbd_key, +3307 game_id=401135278, +3308 return_as_dict=True +3309 ) +3310 print(json_data) +3311 +3312 else: +3313 # Alternatively, if the CFBD API key exists in this python environment, +3314 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +3315 # you could just call these functions directly, without setting the API key +3316 # in the script. +3317 print("Using the user's API key suposedly loaded into this python environment for this example.") +3318 +3319 # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, +3320 # and the Oklahoma Sooners Football Program. +3321 print("Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.") +3322 json_data = get_cfbd_player_advanced_game_stats( +3323 game_id=401135278 +3324 ) +3325 print(json_data) +3326 time.sleep(5) +3327 +3328 +3329 # You can also tell this function to just return the API call as +3330 # a Dictionary (read: JSON) object. +3331 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +3332 json_data = get_cfbd_player_advanced_game_stats( +3333 game_id=401135278, +3334 return_as_dict=True +3335 ) +3336 print(json_data) +3337 +3338 ``` +3339 Returns +3340 ---------- +3341 A pandas `DataFrame` object with college football game information, +3342 or (if `return_as_dict` is set to `True`) +3343 a dictionary object with college football game information. +3344 """ +3345 +3346 #now = datetime.now() +3347 usage_df = pd.DataFrame() +3348 ppa_df = pd.DataFrame() +3349 adv_stats_df = pd.DataFrame() +3350 row_df = pd.DataFrame() +3351 url = "https://api.collegefootballdata.com/game/box/advanced" +3352 +3353 ######################################################################################################################################################################################################## +3354 +3355 if api_key != None: +3356 real_api_key = api_key +3357 del api_key +3358 else: +3359 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +3360 +3361 if real_api_key == "tigersAreAwsome": +3362 raise ValueError( +3363 "You actually need to change `cfbd_key` to your CFBD API key.") +3364 elif "Bearer " in real_api_key: +3365 pass +3366 elif "Bearer" in real_api_key: +3367 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +3368 else: +3369 real_api_key = "Bearer " + real_api_key +3370 +3371 # URL builder +3372 ######################################################################################################################################################################################################## +3373 +3374 # Required by API +3375 url += f"?gameId={game_id}" +3376 +3377 headers = { +3378 'Authorization': f'{real_api_key}', +3379 'accept': 'application/json' +3380 } +3381 +3382 response = requests.get(url, headers=headers) +3383 time.sleep(0.1) +3384 +3385 if response.status_code == 200: +3386 pass +3387 elif response.status_code == 401: +3388 raise ConnectionRefusedError( +3389 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +3390 ) +3391 else: +3392 raise ConnectionError( +3393 f'Could not connect.\nHTTP Status code {response.status_code}' +3394 ) +3395 +3396 json_data = response.json() +3397 +3398 if return_as_dict == True: +3399 return json_data +3400 +3401 home_team_name = json_data['gameInfo']['homeTeam'] +3402 home_points = json_data['gameInfo']['homePoints'] +3403 home_win_prob = json_data['gameInfo']['homeWinProb'] +3404 away_team_name = json_data['gameInfo']['awayTeam'] +3405 away_points = json_data['gameInfo']['awayPoints'] +3406 away_win_prob = json_data['gameInfo']['awayWinProb'] +3407 home_winner = json_data['gameInfo']['homeWinner'] +3408 game_excitement_score = json_data['gameInfo']['excitement'] +3409 +3410 +3411 # Parsing Usage +3412 print("Parsing player usage data.") +3413 for player in tqdm(json_data['players']['usage']): +3414 row_df = pd.DataFrame( +3415 { +3416 "game_id":game_id +3417 }, +3418 index=[0] +3419 ) +3420 row_df['player_name'] = player['player'] +3421 row_df['team'] = player['team'] +3422 row_df['position'] = player['position'] +3423 +3424 row_df['total_usage'] = player['total'] +3425 row_df['q1_usage'] = player['quarter1'] +3426 row_df['q2_usage'] = player['quarter2'] +3427 row_df['q3_usage'] = player['quarter3'] +3428 row_df['q4_usage'] = player['quarter4'] +3429 row_df['rushing_usage'] = player['rushing'] +3430 row_df['passing_usage'] = player['passing'] +3431 +3432 usage_df = pd.concat([usage_df,row_df],ignore_index=True) +3433 del row_df +3434 +3435 # Parsing PPA +3436 print("Parsing player PPA data.") +3437 for player in tqdm(json_data['players']['ppa']): +3438 row_df = pd.DataFrame( +3439 { +3440 "game_id":game_id +3441 }, +3442 index=[0] +3443 ) +3444 row_df['player_name'] = player['player'] +3445 row_df['team'] = player['team'] +3446 row_df['position'] = player['position'] +3447 +3448 row_df['average_ppa_total'] = player['average']['total'] +3449 row_df['average_ppa_q1'] = player['average']['quarter1'] +3450 row_df['average_ppa_q2'] = player['average']['quarter2'] +3451 row_df['average_ppa_q3'] = player['average']['quarter3'] +3452 row_df['average_ppa_q4'] = player['average']['quarter4'] +3453 row_df['average_ppa_rushing'] = player['average']['rushing'] +3454 row_df['average_ppa_passing'] = player['average']['passing'] +3455 +3456 row_df['cumulative_ppa_total'] = player['cumulative']['total'] +3457 row_df['cumulative_ppa_q1'] = player['cumulative']['quarter1'] +3458 row_df['cumulative_ppa_q2'] = player['cumulative']['quarter2'] +3459 row_df['cumulative_ppa_q3'] = player['cumulative']['quarter3'] +3460 row_df['cumulative_ppa_q4'] = player['cumulative']['quarter4'] +3461 row_df['cumulative_ppa_rushing'] = player['cumulative']['rushing'] +3462 row_df['cumulative_ppa_passing'] = player['cumulative']['passing'] +3463 +3464 ppa_df = pd.concat([ppa_df,row_df],ignore_index=True) +3465 +3466 # Join `usage_df` and `ppa_df` together +3467 adv_stats_df = pd.merge( +3468 left=usage_df, +3469 right=ppa_df, +3470 how="outer", +3471 on=["game_id","player_name","team","position"] +3472 ) +3473 +3474 # Add in these columns for completeness. +3475 +3476 adv_stats_df.loc[adv_stats_df["team"]==home_team_name,"home_away"] = "home" +3477 adv_stats_df.loc[adv_stats_df["team"]==home_team_name,"opponent"] = away_team_name +3478 +3479 adv_stats_df.loc[adv_stats_df["team"]==away_team_name,"home_away"] = "away" +3480 adv_stats_df.loc[adv_stats_df["team"]==away_team_name,"opponent"] = home_team_name +3481 +3482 adv_stats_df['home_team'] = home_team_name +3483 adv_stats_df['away_team'] = away_team_name +3484 +3485 adv_stats_df['home_win_prob'] = home_win_prob +3486 adv_stats_df['away_win_prob'] = away_win_prob +3487 +3488 adv_stats_df['home_points'] = home_points +3489 adv_stats_df['away_points'] = away_points +3490 +3491 adv_stats_df['home_winner'] = home_winner +3492 adv_stats_df['game_excitement_score'] = game_excitement_score +3493 +3494 return adv_stats_df +3495 +3496 +3497#################################################################################################### +3498# Patreon Only Functions. +3499# No cacheing, because the entire point of these functions are to get people +3500# data ASAP, and right before kickoff. +3501#################################################################################################### +3502 +3503 +3504def get_cfbd_live_scoreboard( +3505 api_key: str = None, +3506 api_key_dir: str = None, +3507 ncaa_division: str = "fbs", +3508 conference: str = None): +3509 """ +3510 YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! +3511 To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata +3512 +3513 +3514 """ +3515 +3516 raise NotImplementedError( +3517 'This function has yet to be implemented by this version.' +3518 ) +3519 +3520 +3521def get_cfbd_weather_info( +3522 api_key: str = None, +3523 api_key_dir: str = None, +3524 ncaa_division: str = "fbs", +3525 game_id: int = None, +3526 # `game_id` and/or `year` must be not null for this function to work. +3527 season: int = None, +3528 week: int = None, +3529 season_type: str = "regular", # "regular", "postseason", or "both" +3530 conference: str = None): +3531 """ +3532 YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! +3533 To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata +3534 """ +3535 +3536 raise NotImplementedError( +3537 'This function has yet to be implemented by this version.' +3538 )
18def get_cfbd_games( - 19 season: int, - 20 api_key: str = None, - 21 api_key_dir: str = None, - 22 season_type: str = "regular", - 23 week: int = None, - 24 team: str = None, - 25 home_team: str = None, - 26 away_team: str = None, - 27 conference_abv: str = None, - 28 ncaa_division: str = "fbs", - 29 game_id: int = None, - 30 return_as_dict: bool = False): - 31 """ - 32 Retrives game schedule data CFBD API. - 33 - 34 Parameters - 35 ---------- - 36 `season` (int, mandatory): - 37 Required argument. - 38 Specifies the season you want CFB game information from. - 39 This must be specified, otherwise this package, and by extension - 40 the CFBD API, will not accept the request to get CFB game information. - 41 - 42 `api_key` (str, optional): - 43 Semi-optional argument. - 44 If `api_key` is null, this function will attempt to load a CFBD API key - 45 from the python environment, or from a file on this computer. - 46 If `api_key` is not null, this function will automatically assume that the - 47 inputted `api_key` is a valid CFBD API key. - 48 - 49 `api_key_dir` (str, optional): - 50 Optional argument. - 51 If `api_key` is set to a string non-empty string, this variable is ignored. - 52 If `api_key_dir` is null, and `api_key` is null, - 53 this function will try to find a CFBD API key file in this user's home directory. - 54 If `api_key_dir` is set to a string, and `api_key` is null, - 55 this function will assume that `api_key_dir` is a directory, - 56 and will try to find a CFBD API key file in that directory. - 57 - 58 `season_type` (str, semi-optional): - 59 Semi-optional argument. - 60 By defualt, this will be set to "regular", for the CFB regular season. - 61 If you want CFB game information for non-regular season games, - 62 set `season_type` to "postseason". - 63 If `season_type` is set to anything but "regular" or "postseason", - 64 a `ValueError()` will be raised. - 65 - 66 `week` (int, optional): - 67 Optional argument. - 68 If `week` is set to an integer, this function will attempt - 69 to load CFB game data from games in that season, and in that week. - 70 - 71 `team` (str, optional): - 72 Optional argument. - 73 If you only want CFB game information for a team, - 74 regardless if they are the home/away team, - 75 set `team` to the name of the team you want CFB game information from. - 76 - 77 `home_team` (str, optional): - 78 Optional argument. - 79 If you only want game information for a team, - 80 where that team was the home team in this season, - 81 set `home_team` to the name of the team you want game information for. - 82 - 83 `away_team` (str, optional): - 84 Optional argument. - 85 If you only want game information for a team, - 86 where that team was the away team in this season, - 87 set `away_team` to the name of the team you want game information for. - 88 - 89 `conference_abv` (str, optional): - 90 Optional argument. - 91 If you only want game information from games - 92 involving teams a specific confrence, - 93 set `conference_abv` to the abbreviation - 94 of the conference you want game information from. - 95 - 96 `ncaa_division` (str, semi-optional): - 97 Semi-optional argument. - 98 By default, `ncaa_division` will be set to "fbs", - 99 short for the Football Bowl Subdivision (FBS), -100 formerly known as D1-A (read as "division one single A"), -101 the highest level in the NCAA football pyramid, -102 where teams can scolarship up to 85 players -103 on their football team soley for athletic ability, -104 and often have the largest athletics budgets -105 within the NCAA. -106 -107 Other valid inputs are: -108 - "fcs": Football Championship Subdivision (FCS), -109 formerly known as D1-AA (read as "division one double A"). -110 An FCS school is still in the 1st division of the NCAA, -111 making them elligable for the March Madness tournament, -112 but may not have the resources to compete at the FBS level -113 at this time. FCS schools are limited to 63 athletic scolarships -114 for football. -115 - "ii": NCAA Division II. Schools in this and D3 are not -116 elligable for the March Madness tournament, -117 and are limited to 36 athletic scolarships for their football team. -118 - "iii": NCAA Division III. The largest single division within the -119 NCAA football pyramid. -120 D3 schools have the distinction of being part of -121 the only NCAA division that cannot give out scolarships soley -122 for athletic ability. -123 -124 `game_id` (int, optional): -125 Optional argument. -126 If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get -127 game information just for that game ID. -128 -129 Usage -130 ---------- -131 ``` -132 ``` -133 Returns -134 ---------- -135 A pandas `DataFrame` object with college football game information, -136 or (if `return_as_dict` is set to `True`) -137 a dictionary object with college football game information. -138 """ -139 -140 now = datetime.now() -141 cfb_games_df = pd.DataFrame() -142 row_df = pd.DataFrame() -143 url = "https://api.collegefootballdata.com/games" +-20def get_cfbd_games( + 21 season: int, + 22 api_key: str = None, + 23 api_key_dir: str = None, + 24 season_type: str = "regular", + 25 week: int = None, + 26 team: str = None, + 27 home_team: str = None, + 28 away_team: str = None, + 29 conference_abv: str = None, + 30 ncaa_division: str = "fbs", + 31 game_id: int = None, + 32 return_as_dict: bool = False): + 33 """ + 34 Retrives game schedule data from the CFBD API. + 35 + 36 Parameters + 37 ---------- + 38 `season` (int, mandatory): + 39 Required argument. + 40 Specifies the season you want CFB game information from. + 41 This must be specified, otherwise this package, and by extension + 42 the CFBD API, will not accept the request to get CFB game information. + 43 + 44 `api_key` (str, optional): + 45 Semi-optional argument. + 46 If `api_key` is null, this function will attempt to load a CFBD API key + 47 from the python environment, or from a file on this computer. + 48 If `api_key` is not null, this function will automatically assume that the + 49 inputted `api_key` is a valid CFBD API key. + 50 + 51 `api_key_dir` (str, optional): + 52 Optional argument. + 53 If `api_key` is set to a string non-empty string, this variable is ignored. + 54 If `api_key_dir` is null, and `api_key` is null, + 55 this function will try to find a CFBD API key file in this user's home directory. + 56 If `api_key_dir` is set to a string, and `api_key` is null, + 57 this function will assume that `api_key_dir` is a directory, + 58 and will try to find a CFBD API key file in that directory. + 59 + 60 `season_type` (str, semi-optional): + 61 Semi-optional argument. + 62 By defualt, this will be set to "regular", for the CFB regular season. + 63 If you want CFB game information for non-regular season games, + 64 set `season_type` to "postseason". + 65 If `season_type` is set to anything but "regular" or "postseason", + 66 a `ValueError()` will be raised. + 67 + 68 `week` (int, optional): + 69 Optional argument. + 70 If `week` is set to an integer, this function will attempt + 71 to load CFB game data from games in that season, and in that week. + 72 + 73 `team` (str, optional): + 74 Optional argument. + 75 If you only want CFB game information for a team, + 76 regardless if they are the home/away team, + 77 set `team` to the name of the team you want CFB game information from. + 78 + 79 `home_team` (str, optional): + 80 Optional argument. + 81 If you only want game information for a team, + 82 where that team was the home team in this season, + 83 set `home_team` to the name of the team you want game information for. + 84 + 85 `away_team` (str, optional): + 86 Optional argument. + 87 If you only want game information for a team, + 88 where that team was the away team in this season, + 89 set `away_team` to the name of the team you want game information for. + 90 + 91 `conference_abv` (str, optional): + 92 Optional argument. + 93 If you only want game information from games + 94 involving teams a specific confrence, + 95 set `conference_abv` to the abbreviation + 96 of the conference you want game information from. + 97 + 98 `ncaa_division` (str, semi-optional): + 99 Semi-optional argument. +100 By default, `ncaa_division` will be set to "fbs", +101 short for the Football Bowl Subdivision (FBS), +102 formerly known as D1-A (read as "division one single A"), +103 the highest level in the NCAA football pyramid, +104 where teams can scolarship up to 85 players +105 on their football team soley for athletic ability, +106 and often have the largest athletics budgets +107 within the NCAA. +108 +109 Other valid inputs are: +110 - "fcs": Football Championship Subdivision (FCS), +111 formerly known as D1-AA (read as "division one double A"). +112 An FCS school is still in the 1st division of the NCAA, +113 making them elligable for the March Madness tournament, +114 but may not have the resources to compete at the FBS level +115 at this time. FCS schools are limited to 63 athletic scolarships +116 for football. +117 - "ii": NCAA Division II. Schools in this and D3 are not +118 elligable for the March Madness tournament, +119 and are limited to 36 athletic scolarships for their football team. +120 - "iii": NCAA Division III. The largest single division within the +121 NCAA football pyramid. +122 D3 schools have the distinction of being part of +123 the only NCAA division that cannot give out scolarships soley +124 for athletic ability. +125 +126 `game_id` (int, optional): +127 Optional argument. +128 If `game_id` is set to a game ID, `get_cfb_betting_lines()` will try to get +129 game information just for that game ID. +130 +131 `return_as_dict` (bool, semi-optional): +132 Semi-optional argument. +133 If you want this function to return the data as a dictionary (read: JSON object), +134 instead of a pandas `DataFrame` object, +135 set `return_as_dict` to `True`. +136 +137 Usage +138 ---------- +139 ``` +140 import time +141 +142 from cfbd_json_py.games import get_cfbd_games +143 144 -145 ######################################################################################################################################################################################################## +145 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. 146 -147 if api_key != None: -148 real_api_key = api_key -149 del api_key -150 else: -151 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) -152 -153 if real_api_key == "tigersAreAwsome": -154 raise ValueError( -155 "You actually need to change `cfbd_key` to your CFBD API key.") -156 elif "Bearer " in real_api_key: -157 pass -158 elif "Bearer" in real_api_key: -159 real_api_key = real_api_key.replace('Bearer', 'Bearer ') -160 else: -161 real_api_key = "Bearer " + real_api_key -162 -163 if season == None: -164 # This should never happen without user tampering, but if it does, -165 # we need to raise an error, because the CFBD API will refuse this call without a valid season. -166 raise SystemError( -167 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + -168 " and the function got to this point in the code." + -169 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + -170 "https://github.com/armstjc/cfbd-json-py/issues" -171 ) -172 elif season > now.year: -173 raise ValueError(f"`season` cannot be greater than {season}.") -174 elif season < 1869: -175 raise ValueError(f"`season` cannot be less than 1869.") -176 -177 if season_type != "regular" and season_type != "postseason": -178 raise ValueError( -179 "`season_type` must be set to either \"regular\" or \"postseason\" for this function to work.") -180 -181 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ -182 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": -183 pass -184 else: -185 raise ValueError( -186 "An invalid NCAA Division was inputted when calling this function." + -187 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + -188 f"\n\nYou entered:\n{ncaa_division}" -189 ) -190 -191 # URL builder -192 ######################################################################################################################################################################################################## -193 -194 # Required by API -195 url += f"?seasonType={season_type}" -196 -197 if game_id != None: -198 url += f"&year={season}" -199 url += f"&id={game_id}" -200 -201 if team != None or home_team != None \ -202 or away_team != None or conference_abv != None \ -203 or ncaa_division != None or week != None: -204 logging.warning( -205 "When calling `cfbd_json_py.games.get_cfbd_games()`, " + -206 "and setting `game_id` to a non-null value, " + -207 "only `season` and `game_id` are considered " + -208 "when calling the CFBD API." -209 ) -210 -211 else: -212 url += f"&year={season}" -213 -214 # Optional for the API -215 if week != None: -216 url += f"&week={week}" -217 -218 if team != None: -219 url += f"&year={season}" -220 -221 if home_team != None: -222 url += f"&home={home_team}" -223 -224 if away_team != None: -225 url += f"&away={away_team}" -226 -227 if conference_abv != None: -228 url += f"&conference={conference_abv}" -229 -230 if ncaa_division != None: -231 url += f"&division={ncaa_division}" -232 -233 headers = { -234 'Authorization': f'{real_api_key}', -235 'accept': 'application/json' -236 } -237 -238 response = requests.get(url, headers=headers) -239 time.sleep(0.1) -240 -241 if response.status_code == 200: -242 pass -243 elif response.status_code == 401: -244 raise ConnectionRefusedError( -245 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' -246 ) -247 else: -248 raise ConnectionError( -249 f'Could not connect.\nHTTP Status code {response.status_code}' -250 ) -251 -252 json_data = response.json() -253 -254 if return_as_dict == True: -255 return json_data +147 if cfbd_key != "tigersAreAwsome": +148 print("Using the user's API key declared in this script for this example.") +149 +150 # Get CFB games from the 2020 CFB season. +151 print("Get CFB games from the 2020 CFB season.") +152 json_data = get_cfbd_games( +153 api_key=cfbd_key, +154 season=2020 +155 ) +156 print(json_data) +157 time.sleep(5) +158 +159 # Get CFB games from week 10 of the 2020 CFB season. +160 print("Get CFB games from week 10 of the 2020 CFB season.") +161 json_data = get_cfbd_games( +162 api_key=cfbd_key, +163 season=2020, +164 week=10 +165 ) +166 print(json_data) +167 time.sleep(5) +168 +169 # Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers. +170 print("Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.") +171 json_data = get_cfbd_games( +172 api_key=cfbd_key, +173 season=2019, +174 team="LSU" +175 ) +176 print(json_data) +177 time.sleep(5) +178 +179 # Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team. +180 print("Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.") +181 json_data = get_cfbd_games( +182 api_key=cfbd_key, +183 season=2021, +184 home_team="Cincinnati" +185 ) +186 print(json_data) +187 time.sleep(5) +188 +189 # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. +190 print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") +191 json_data = get_cfbd_games( +192 api_key=cfbd_key, +193 season=2019, +194 away_team="Ohio" +195 ) +196 print(json_data) +197 time.sleep(5) +198 +199 # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. +200 print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") +201 json_data = get_cfbd_games( +202 api_key=cfbd_key, +203 season=2018, +204 away_team="Ohio" +205 ) +206 print(json_data) +207 time.sleep(5) +208 +209 # Get 2022 college football games where one or more teams competing +210 # was a Football Championship Subdivision team. +211 print("Get 2022 college football games where one or more teams competing was a Football Championship Subdivision team.") +212 json_data = get_cfbd_games( +213 api_key=cfbd_key, +214 season=2018, +215 away_team="Ohio" +216 ) +217 print(json_data) +218 time.sleep(5) +219 +220 # Get game information for the +221 # 2021 American Athletic Confrence (AAC) Championship Game. +222 print("Get game information for the 2021 American Athletic Confrence (AAC) Championship Game.") +223 json_data = get_cfbd_games( +224 api_key=cfbd_key, +225 season=2018, +226 game_id=401331162 +227 ) +228 print(json_data) +229 time.sleep(5) +230 +231 # You can also tell this function to just return the API call as +232 # a Dictionary (read: JSON) object. +233 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +234 json_data = get_cfbd_games( +235 season=2020, +236 week=10, +237 api_key=cfbd_key, +238 return_as_dict=True +239 ) +240 print(json_data) +241 +242 else: +243 # Alternatively, if the CFBD API key exists in this python environment, +244 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +245 # you could just call these functions directly, without setting the API key +246 # in the script. +247 print("Using the user's API key suposedly loaded into this python environment for this example.") +248 +249 # Get CFB games from the 2020 CFB season. +250 print("Get CFB games from the 2020 CFB season.") +251 json_data = get_cfbd_games( +252 season=2020 +253 ) +254 print(json_data) +255 time.sleep(5) 256 -257 for game in json_data: -258 g_id = game['id'] -259 row_df = pd.DataFrame( -260 { -261 "game_id": g_id -262 }, index=[0] -263 ) -264 del g_id +257 # Get CFB games from week 10 of the 2020 CFB season. +258 print("Get CFB games from week 10 of the 2020 CFB season.") +259 json_data = get_cfbd_games( +260 season=2020, +261 week=10 +262 ) +263 print(json_data) +264 time.sleep(5) 265 -266 row_df['season'] = game['season'] -267 row_df['week'] = game['week'] -268 row_df['season_type'] = game['season_type'] -269 row_df['start_date'] = game['start_date'] -270 row_df['start_time_tbd'] = game['start_time_tbd'] -271 row_df['is_game_completed'] = game['completed'] -272 row_df['is_neutral_site'] = game['neutral_site'] -273 row_df['is_conference_game'] = game['conference_game'] -274 row_df['game_attendance'] = game['attendance'] -275 row_df['venue_id'] = game['venue_id'] -276 row_df['venue_name'] = game['venue'] -277 row_df['home_id'] = game['home_id'] -278 row_df['home_team'] = game['home_team'] -279 row_df['home_conference'] = game['home_conference'] -280 row_df['home_division'] = game['home_division'] -281 row_df['home_points'] = game['home_points'] -282 row_df['home_line_scores'] = game['home_line_scores'] -283 row_df['home_post_win_prob'] = game['home_post_win_prob'] -284 row_df['home_pregame_elo'] = game['home_pregame_elo'] -285 row_df['home_postgame_elo'] = game['home_postgame_elo'] -286 row_df['away_id'] = game['away_id'] -287 row_df['away_team'] = game['away_team'] -288 row_df['away_conference'] = game['away_conference'] -289 row_df['away_division'] = game['away_division'] -290 row_df['away_points'] = game['away_points'] -291 row_df['away_line_scores'] = game['away_line_scores'] -292 row_df['away_post_win_prob'] = game['away_post_win_prob'] -293 row_df['away_pregame_elo'] = game['away_pregame_elo'] -294 row_df['away_postgame_elo'] = game['away_postgame_elo'] -295 row_df['excitement_index'] = game['excitement_index'] -296 row_df['highlights'] = game['highlights'] -297 row_df['notes'] = game['notes'] -298 -299 cfb_games_df = pd.DataFrame([cfb_games_df, row_df], ignore_index=True) -300 del row_df +266 # Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers. +267 print("Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.") +268 json_data = get_cfbd_games( +269 season=2019, +270 team="LSU" +271 ) +272 print(json_data) +273 time.sleep(5) +274 +275 # Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team. +276 print("Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.") +277 json_data = get_cfbd_games( +278 season=2021, +279 home_team="Cincinnati" +280 ) +281 print(json_data) +282 time.sleep(5) +283 +284 # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. +285 print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") +286 json_data = get_cfbd_games( +287 season=2019, +288 away_team="Ohio" +289 ) +290 print(json_data) +291 time.sleep(5) +292 +293 # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. +294 print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") +295 json_data = get_cfbd_games( +296 season=2018, +297 away_team="Ohio" +298 ) +299 print(json_data) +300 time.sleep(5) 301 -302 if len(cfb_games_df) == 0: -303 logging.error( -304 "The CFBD API accepted your inputs, " + -305 "but found no data within your specified input paramaters." + -306 " Please double check your input paramaters." -307 ) -308 -309 return cfb_games_df +302 # Get 2022 college football games where one or more teams competing +303 # was a Football Championship Subdivision team. +304 print("Get 2022 college football games where one or more teams competing was a Football Championship Subdivision team.") +305 json_data = get_cfbd_games( +306 season=2018, +307 away_team="Ohio" +308 ) +309 print(json_data) +310 time.sleep(5) +311 +312 # Get game information for the +313 # 2021 American Athletic Confrence (AAC) Championship Game. +314 print("Get game information for the 2021 American Athletic Confrence (AAC) Championship Game.") +315 json_data = get_cfbd_games( +316 season=2018, +317 game_id=401331162 +318 ) +319 print(json_data) +320 time.sleep(5) +321 +322 # You can also tell this function to just return the API call as +323 # a Dictionary (read: JSON) object. +324 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +325 json_data = get_cfbd_games( +326 season=2020, +327 week=10, +328 return_as_dict=True +329 ) +330 print(json_data) +331 +332 ``` +333 Returns +334 ---------- +335 A pandas `DataFrame` object with college football game information, +336 or (if `return_as_dict` is set to `True`) +337 a dictionary object with college football game information. +338 """ +339 +340 now = datetime.now() +341 cfb_games_df = pd.DataFrame() +342 row_df = pd.DataFrame() +343 url = "https://api.collegefootballdata.com/games" +344 +345 ######################################################################################################################################################################################################## +346 +347 if api_key != None: +348 real_api_key = api_key +349 del api_key +350 else: +351 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +352 +353 if real_api_key == "tigersAreAwsome": +354 raise ValueError( +355 "You actually need to change `cfbd_key` to your CFBD API key.") +356 elif "Bearer " in real_api_key: +357 pass +358 elif "Bearer" in real_api_key: +359 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +360 else: +361 real_api_key = "Bearer " + real_api_key +362 +363 if season == None: +364 # This should never happen without user tampering, but if it does, +365 # we need to raise an error, because the CFBD API will refuse this call without a valid season. +366 raise SystemError( +367 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + +368 " and the function got to this point in the code." + +369 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + +370 "https://github.com/armstjc/cfbd-json-py/issues" +371 ) +372 elif season > now.year: +373 raise ValueError(f"`season` cannot be greater than {season}.") +374 elif season < 1869: +375 raise ValueError(f"`season` cannot be less than 1869.") +376 +377 if season_type != "regular" and season_type != "postseason": +378 raise ValueError( +379 "`season_type` must be set to either \"regular\" or \"postseason\" for this function to work.") +380 +381 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ +382 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": +383 pass +384 else: +385 raise ValueError( +386 "An invalid NCAA Division was inputted when calling this function." + +387 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + +388 f"\n\nYou entered: \n{ncaa_division}" +389 ) +390 +391 # URL builder +392 ######################################################################################################################################################################################################## +393 +394 # Required by API +395 url += f"?seasonType={season_type}" +396 +397 if game_id != None: +398 url += f"&year={season}" +399 url += f"&id={game_id}" +400 +401 if team != None or home_team != None \ +402 or away_team != None or conference_abv != None \ +403 or week != None: +404 logging.warning( +405 "When calling `cfbd_json_py.games.get_cfbd_games()`, " + +406 "and setting `game_id` to a non-null value, " + +407 "only `season` and `game_id` are considered " + +408 "when calling the CFBD API." +409 ) +410 +411 else: +412 url += f"&year={season}" +413 +414 # Optional for the API +415 if week != None: +416 url += f"&week={week}" +417 +418 if team != None: +419 url += f"&team={team}" +420 +421 if home_team != None: +422 url += f"&home={home_team}" +423 +424 if away_team != None: +425 url += f"&away={away_team}" +426 +427 if conference_abv != None: +428 url += f"&conference={conference_abv}" +429 +430 if ncaa_division != None: +431 url += f"&division={ncaa_division}" +432 +433 headers = { +434 'Authorization': f'{real_api_key}', +435 'accept': 'application/json' +436 } +437 +438 response = requests.get(url, headers=headers) +439 time.sleep(0.1) +440 +441 if response.status_code == 200: +442 pass +443 elif response.status_code == 401: +444 raise ConnectionRefusedError( +445 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +446 ) +447 else: +448 raise ConnectionError( +449 f'Could not connect.\nHTTP Status code {response.status_code}' +450 ) +451 +452 json_data = response.json() +453 +454 if return_as_dict == True: +455 return json_data +456 +457 for game in tqdm(json_data): +458 g_id = game['id'] +459 row_df = pd.DataFrame( +460 { +461 "game_id": g_id +462 }, index=[0] +463 ) +464 del g_id +465 +466 row_df['season'] = game['season'] +467 row_df['week'] = game['week'] +468 row_df['season_type'] = game['season_type'] +469 row_df['start_date'] = game['start_date'] +470 row_df['start_time_tbd'] = game['start_time_tbd'] +471 row_df['is_game_completed'] = game['completed'] +472 row_df['is_neutral_site'] = game['neutral_site'] +473 row_df['is_conference_game'] = game['conference_game'] +474 row_df['game_attendance'] = game['attendance'] +475 row_df['venue_id'] = game['venue_id'] +476 row_df['venue_name'] = game['venue'] +477 row_df['home_id'] = game['home_id'] +478 row_df['home_team'] = game['home_team'] +479 row_df['home_conference'] = game['home_conference'] +480 row_df['home_division'] = game['home_division'] +481 row_df['home_points'] = game['home_points'] +482 row_df['home_line_scores'] = str(game['home_line_scores']) +483 row_df['home_post_win_prob'] = game['home_post_win_prob'] +484 row_df['home_pregame_elo'] = game['home_pregame_elo'] +485 row_df['home_postgame_elo'] = game['home_postgame_elo'] +486 row_df['away_id'] = game['away_id'] +487 row_df['away_team'] = game['away_team'] +488 row_df['away_conference'] = game['away_conference'] +489 row_df['away_division'] = game['away_division'] +490 row_df['away_points'] = game['away_points'] +491 row_df['away_line_scores'] = str(game['away_line_scores']) +492 row_df['away_post_win_prob'] = game['away_post_win_prob'] +493 row_df['away_pregame_elo'] = game['away_pregame_elo'] +494 row_df['away_postgame_elo'] = game['away_postgame_elo'] +495 row_df['excitement_index'] = game['excitement_index'] +496 row_df['highlights'] = game['highlights'] +497 row_df['notes'] = game['notes'] +498 +499 cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) +500 del row_df +501 +502 if len(cfb_games_df) == 0: +503 logging.error( +504 "The CFBD API accepted your inputs, " + +505 "but found no data within your specified input paramaters." + +506 " Please double check your input paramaters." +507 ) +508 +509 return cfb_games_dfRetrives game schedule data CFBD API.
+-Retrives game schedule data from the CFBD API.
Parameters
@@ -916,9 +4219,206 @@Parameters
Ifgame_id
is set to a game ID,get_cfb_betting_lines()
will try to get game information just for that game ID. ++
return_as_dict
(bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandasDataFrame
object, + setreturn_as_dict
toTrue
.Usage
-+
import time + +from cfbd_json_py.games import get_cfbd_games + + +cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + +if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get CFB games from the 2020 CFB season. + print("Get CFB games from the 2020 CFB season.") + json_data = get_cfbd_games( + api_key=cfbd_key, + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get CFB games from week 10 of the 2020 CFB season. + print("Get CFB games from week 10 of the 2020 CFB season.") + json_data = get_cfbd_games( + api_key=cfbd_key, + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers. + print("Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.") + json_data = get_cfbd_games( + api_key=cfbd_key, + season=2019, + team="LSU" + ) + print(json_data) + time.sleep(5) + + # Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team. + print("Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.") + json_data = get_cfbd_games( + api_key=cfbd_key, + season=2021, + home_team="Cincinnati" + ) + print(json_data) + time.sleep(5) + + # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. + print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") + json_data = get_cfbd_games( + api_key=cfbd_key, + season=2019, + away_team="Ohio" + ) + print(json_data) + time.sleep(5) + + # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. + print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") + json_data = get_cfbd_games( + api_key=cfbd_key, + season=2018, + away_team="Ohio" + ) + print(json_data) + time.sleep(5) + + # Get 2022 college football games where one or more teams competing + # was a Football Championship Subdivision team. + print("Get 2022 college football games where one or more teams competing was a Football Championship Subdivision team.") + json_data = get_cfbd_games( + api_key=cfbd_key, + season=2018, + away_team="Ohio" + ) + print(json_data) + time.sleep(5) + + # Get game information for the + # 2021 American Athletic Confrence (AAC) Championship Game. + print("Get game information for the 2021 American Athletic Confrence (AAC) Championship Game.") + json_data = get_cfbd_games( + api_key=cfbd_key, + season=2018, + game_id=401331162 + ) + print(json_data) + time.sleep(5) + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_games( + season=2020, + week=10, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + +else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get CFB games from the 2020 CFB season. + print("Get CFB games from the 2020 CFB season.") + json_data = get_cfbd_games( + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get CFB games from week 10 of the 2020 CFB season. + print("Get CFB games from week 10 of the 2020 CFB season.") + json_data = get_cfbd_games( + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers. + print("Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.") + json_data = get_cfbd_games( + season=2019, + team="LSU" + ) + print(json_data) + time.sleep(5) + + # Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team. + print("Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.") + json_data = get_cfbd_games( + season=2021, + home_team="Cincinnati" + ) + print(json_data) + time.sleep(5) + + # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. + print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") + json_data = get_cfbd_games( + season=2019, + away_team="Ohio" + ) + print(json_data) + time.sleep(5) + + # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team. + print("Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.") + json_data = get_cfbd_games( + season=2018, + away_team="Ohio" + ) + print(json_data) + time.sleep(5) + + # Get 2022 college football games where one or more teams competing + # was a Football Championship Subdivision team. + print("Get 2022 college football games where one or more teams competing was a Football Championship Subdivision team.") + json_data = get_cfbd_games( + season=2018, + away_team="Ohio" + ) + print(json_data) + time.sleep(5) + + # Get game information for the + # 2021 American Athletic Confrence (AAC) Championship Game. + print("Get game information for the 2021 American Athletic Confrence (AAC) Championship Game.") + json_data = get_cfbd_games( + season=2018, + game_id=401331162 + ) + print(json_data) + time.sleep(5) + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_games( + season=2020, + week=10, + return_as_dict=True + ) + print(json_data) +
Returns
@@ -941,24 +4441,447 @@Returns
-312def get_cfbd_team_records( -313 api_key: str = None, -314 api_key_dir: str = None, -315 season: int = None, -316 team: str = None, # Must specify either a year or team -317 conference_abv: str = None, -318 return_as_dict: bool = False): -319 """ -320 -321 """ -322 -323 raise NotImplementedError( -324 'This function has yet to be implemented by this version.' -325 ) +- +512def get_cfbd_team_records( +513 api_key: str = None, +514 api_key_dir: str = None, +515 season: int = None, +516 team: str = None, # Must specify either a year or team +517 conference_abv: str = None, +518 return_as_dict: bool = False): +519 """ +520 Get a team, or multiple team's record (wins, losses, ties) for home games, away games, +521 confrence games, and the team's record for that season. +522 +523 Parameters +524 ---------- +525 +526 `api_key` (str, optional): +527 Semi-optional argument. +528 If `api_key` is null, this function will attempt to load a CFBD API key +529 from the python environment, or from a file on this computer. +530 If `api_key` is not null, this function will automatically assume that the +531 inputted `api_key` is a valid CFBD API key. +532 +533 `api_key_dir` (str, optional): +534 Optional argument. +535 If `api_key` is set to a string non-empty string, this variable is ignored. +536 If `api_key_dir` is null, and `api_key` is null, +537 this function will try to find a CFBD API key file in this user's home directory. +538 If `api_key_dir` is set to a string, and `api_key` is null, +539 this function will assume that `api_key_dir` is a directory, +540 and will try to find a CFBD API key file in that directory. +541 +542 `season` (int, optional): +543 Semi-optional argument. +544 Specifies the season you want CFB team records data from. +545 You MUST set `season` or `team` to a non-null value for +546 this function to work. If you don't, a `ValueError()` +547 will be raised. +548 +549 `team` (str, optional): +550 Semi-ptional argument. +551 If you only want CFB team records data for a specific team, +552 set `team` to the name of the team you want CFB drive data from. +553 You MUST set `season` or `team` to a non-null value for +554 this function to work. If you don't, a `ValueError()` +555 will be raised. +556 +557 `conference_abv` (str, optional): +558 Optional argument. +559 If you only want CFB team records data from games +560 involving teams from a specific confrence, +561 set `conference_abv` to the abbreviation +562 of the conference you want CFB team records data from. +563 For a list of confrences, +564 use the `cfbd_json_py.conferences.get_cfbd_conference_info()` +565 function. +566 +567 `return_as_dict` (bool, semi-optional): +568 Semi-optional argument. +569 If you want this function to return the data as a dictionary (read: JSON object), +570 instead of a pandas `DataFrame` object, +571 set `return_as_dict` to `True`. +572 +573 Usage +574 ---------- +575 ``` +576 import time +577 +578 from cfbd_json_py.games import get_cfbd_team_records +579 +580 +581 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +582 +583 if cfbd_key != "tigersAreAwsome": +584 print("Using the user's API key declared in this script for this example.") +585 +586 # Get CFB team records from the 2020 CFB season. +587 print("Get CFB team records from the 2020 CFB season.") +588 json_data = get_cfbd_team_records( +589 api_key=cfbd_key, +590 season=2020 +591 ) +592 print(json_data) +593 time.sleep(5) +594 +595 # Get team records from football teams fielded by the University of Cincinnati. +596 print("Get team records from football teams fielded by the University of Cincinnati.") +597 json_data = get_cfbd_team_records( +598 api_key=cfbd_key, +599 team="Cincinnati" +600 ) +601 print(json_data) +602 time.sleep(5) +603 +604 # Get team records from football teams that played in the Big 10 (B1G) Confrence +605 # in the 2017 CFB season +606 print("Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season") +607 json_data = get_cfbd_team_records( +608 api_key=cfbd_key, +609 season=2017, +610 conference_abv="B1G" +611 ) +612 print(json_data) +613 time.sleep(5) +614 +615 +616 # You can also tell this function to just return the API call as +617 # a Dictionary (read: JSON) object. +618 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +619 json_data = get_cfbd_team_records( +620 season=2020, +621 api_key=cfbd_key, +622 return_as_dict=True +623 ) +624 print(json_data) +625 +626 else: +627 # Alternatively, if the CFBD API key exists in this python environment, +628 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +629 # you could just call these functions directly, without setting the API key +630 # in the script. +631 print("Using the user's API key suposedly loaded into this python environment for this example.") +632 +633 # Get CFB team records from the 2020 CFB season. +634 print("Get CFB team records from the 2020 CFB season.") +635 json_data = get_cfbd_team_records( +636 season=2020 +637 ) +638 print(json_data) +639 time.sleep(5) +640 +641 # Get team records from football teams fielded by the University of Cincinnati. +642 print("Get team records from football teams fielded by the University of Cincinnati.") +643 json_data = get_cfbd_team_records( +644 team="Cincinnati" +645 ) +646 print(json_data) +647 time.sleep(5) +648 +649 # Get team records from football teams that played in the Big 10 (B1G) Confrence +650 # in the 2017 CFB season +651 print("Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season") +652 json_data = get_cfbd_team_records( +653 season=2017, +654 conference_abv="B1G" +655 ) +656 print(json_data) +657 time.sleep(5) +658 +659 # You can also tell this function to just return the API call as +660 # a Dictionary (read: JSON) object. +661 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +662 json_data = get_cfbd_team_records( +663 season=2020, +664 return_as_dict=True +665 ) +666 print(json_data) +667 +668 ``` +669 +670 Returns +671 ---------- +672 A pandas `DataFrame` object with CFB team records data, +673 or (if `return_as_dict` is set to `True`) +674 a dictionary object with CFB team records data. +675 +676 """ +677 +678 now = datetime.now() +679 cfb_records_df = pd.DataFrame() +680 row_df = pd.DataFrame() +681 url = "https://api.collegefootballdata.com/records" +682 +683 ######################################################################################################################################################################################################## +684 +685 if api_key != None: +686 real_api_key = api_key +687 del api_key +688 else: +689 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +690 +691 if real_api_key == "tigersAreAwsome": +692 raise ValueError( +693 "You actually need to change `cfbd_key` to your CFBD API key.") +694 elif "Bearer " in real_api_key: +695 pass +696 elif "Bearer" in real_api_key: +697 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +698 else: +699 real_api_key = "Bearer " + real_api_key +700 +701 if season != None and season > now.year: +702 raise ValueError(f"`season` cannot be greater than {season}.") +703 elif season != None and season < 1869: +704 raise ValueError(f"`season` cannot be less than 1869.") +705 +706 if season == None and team == None: +707 raise ValueError( +708 f"If you call `cfbd_json_py.games.get_cfbd_team_records()`, you must specifiy at least a team or CFB season.") +709 +710 # URL builder +711 ######################################################################################################################################################################################################## +712 url_elements = 0 +713 +714 if season != None and url_elements == 0: +715 url += f"?year={season}" +716 url_elements += 1 +717 elif season != None: +718 url += f"&year={season}" +719 url_elements += 1 +720 +721 if team != None and url_elements == 0: +722 url += f"?team={team}" +723 url_elements += 1 +724 elif team != None: +725 url += f"&team={team}" +726 url_elements += 1 +727 +728 if conference_abv != None and url_elements == 0: +729 url += f"?conference={conference_abv}" +730 url_elements += 1 +731 elif conference_abv != None: +732 url += f"&conference={conference_abv}" +733 url_elements += 1 +734 +735 headers = { +736 'Authorization': f'{real_api_key}', +737 'accept': 'application/json' +738 } +739 +740 response = requests.get(url, headers=headers) +741 time.sleep(0.1) +742 +743 if response.status_code == 200: +744 pass +745 elif response.status_code == 401: +746 raise ConnectionRefusedError( +747 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +748 ) +749 else: +750 raise ConnectionError( +751 f'Could not connect.\nHTTP Status code {response.status_code}' +752 ) +753 +754 json_data = response.json() +755 +756 if return_as_dict == True: +757 return json_data +758 +759 for team in json_data: +760 team_year = team['year'] +761 row_df = pd.DataFrame( +762 {"season": team_year}, +763 index=[0] +764 ) +765 row_df['team_id'] = team['teamId'] +766 row_df['team_name'] = team['team'] +767 row_df['conference_name'] = team['conference'] +768 if team['division'] == "" or team['division'] == None: +769 row_df['conference_division'] = None +770 else: +771 row_df['conference_division'] = team['division'] +772 +773 row_df['expected_wins'] = team['expectedWins'] +774 row_df['total_games'] = team['total']['games'] +775 row_df['total_wins'] = team['total']['wins'] +776 row_df['total_losses'] = team['total']['losses'] +777 row_df['total_ties'] = team['total']['ties'] +778 row_df['conference_games'] = team['conferenceGames']['games'] +779 row_df['conference_wins'] = team['conferenceGames']['wins'] +780 row_df['conference_losses'] = team['conferenceGames']['losses'] +781 row_df['conference_ties'] = team['conferenceGames']['ties'] +782 row_df['home_games'] = team['homeGames']['games'] +783 row_df['home_wins'] = team['homeGames']['wins'] +784 row_df['home_losses'] = team['homeGames']['losses'] +785 row_df['home_ties'] = team['homeGames']['ties'] +786 row_df['away_games'] = team['awayGames']['games'] +787 row_df['away_wins'] = team['awayGames']['wins'] +788 row_df['away_losses'] = team['awayGames']['losses'] +789 row_df['away_ties'] = team['awayGames']['ties'] +790 +791 cfb_records_df = pd.concat([cfb_records_df, row_df], ignore_index=True) +792 del row_df +793 +794 return cfb_records_df+Get a team, or multiple team's record (wins, losses, ties) for home games, away games, +confrence games, and the team's record for that season.
+ +Parameters
+ ++ +
api_key
(str, optional): + Semi-optional argument. + Ifapi_key
is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + Ifapi_key
is not null, this function will automatically assume that the + inputtedapi_key
is a valid CFBD API key.+ +
api_key_dir
(str, optional): + Optional argument. + Ifapi_key
is set to a string non-empty string, this variable is ignored. + Ifapi_key_dir
is null, andapi_key
is null, + this function will try to find a CFBD API key file in this user's home directory. + Ifapi_key_dir
is set to a string, andapi_key
is null, + this function will assume thatapi_key_dir
is a directory, + and will try to find a CFBD API key file in that directory.+ +
season
(int, optional): + Semi-optional argument. + Specifies the season you want CFB team records data from. + You MUST setseason
orteam
to a non-null value for + this function to work. If you don't, aValueError()
+ will be raised.+ +
team
(str, optional): + Semi-ptional argument. + If you only want CFB team records data for a specific team, + setteam
to the name of the team you want CFB drive data from. + You MUST setseason
orteam
to a non-null value for + this function to work. If you don't, aValueError()
+ will be raised.+ +
conference_abv
(str, optional): + Optional argument. + If you only want CFB team records data from games + involving teams from a specific confrence, + setconference_abv
to the abbreviation + of the conference you want CFB team records data from. + For a list of confrences, + use thecfbd_json_py.conferences.get_cfbd_conference_info()
+ function.+ +
return_as_dict
(bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandasDataFrame
object, + setreturn_as_dict
toTrue
.Usage
+ ++ +import time + +from cfbd_json_py.games import get_cfbd_team_records + + +cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + +if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get CFB team records from the 2020 CFB season. + print("Get CFB team records from the 2020 CFB season.") + json_data = get_cfbd_team_records( + api_key=cfbd_key, + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get team records from football teams fielded by the University of Cincinnati. + print("Get team records from football teams fielded by the University of Cincinnati.") + json_data = get_cfbd_team_records( + api_key=cfbd_key, + team="Cincinnati" + ) + print(json_data) + time.sleep(5) + + # Get team records from football teams that played in the Big 10 (B1G) Confrence + # in the 2017 CFB season + print("Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season") + json_data = get_cfbd_team_records( + api_key=cfbd_key, + season=2017, + conference_abv="B1G" + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_team_records( + season=2020, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + +else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get CFB team records from the 2020 CFB season. + print("Get CFB team records from the 2020 CFB season.") + json_data = get_cfbd_team_records( + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get team records from football teams fielded by the University of Cincinnati. + print("Get team records from football teams fielded by the University of Cincinnati.") + json_data = get_cfbd_team_records( + team="Cincinnati" + ) + print(json_data) + time.sleep(5) + + # Get team records from football teams that played in the Big 10 (B1G) Confrence + # in the 2017 CFB season + print("Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season") + json_data = get_cfbd_team_records( + season=2017, + conference_abv="B1G" + ) + print(json_data) + time.sleep(5) + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_team_records( + season=2020, + return_as_dict=True + ) + print(json_data) + +
Returns
+ +A pandas
+DataFrame
object with CFB team records data, +or (ifreturn_as_dict
is set toTrue
) +a dictionary object with CFB team records data.@@ -972,22 +4895,296 @@ Returns
-328def get_cfbd_season_weeks( -329 season: int, -330 api_key: str = None, -331 api_key_dir: str = None, -332 return_as_dict: bool = False): -333 """ -334 -335 """ -336 -337 raise NotImplementedError( -338 'This function has yet to be implemented by this version.' -339 ) +- +797def get_cfbd_season_weeks( +798 season: int, +799 api_key: str = None, +800 api_key_dir: str = None, +801 return_as_dict: bool = False): +802 """ +803 Retrives a list of weeks that occured in a given CFB season. +804 +805 Parameters +806 ---------- +807 `season` (int, mandatory): +808 Required argument. +809 Specifies the season you want a list of weeks that occured in a given CFB season information from. +810 This must be specified, otherwise this package, and by extension +811 the CFBD API, will not accept the request to get a list of weeks that occured in a given CFB season information. +812 +813 `api_key` (str, optional): +814 Semi-optional argument. +815 If `api_key` is null, this function will attempt to load a CFBD API key +816 from the python environment, or from a file on this computer. +817 If `api_key` is not null, this function will automatically assume that the +818 inputted `api_key` is a valid CFBD API key. +819 +820 `api_key_dir` (str, optional): +821 Optional argument. +822 If `api_key` is set to a string non-empty string, this variable is ignored. +823 If `api_key_dir` is null, and `api_key` is null, +824 this function will try to find a CFBD API key file in this user's home directory. +825 If `api_key_dir` is set to a string, and `api_key` is null, +826 this function will assume that `api_key_dir` is a directory, +827 and will try to find a CFBD API key file in that directory. +828 +829 `return_as_dict` (bool, semi-optional): +830 Semi-optional argument. +831 If you want this function to return the data as a dictionary (read: JSON object), +832 instead of a pandas `DataFrame` object, +833 set `return_as_dict` to `True`. +834 +835 +836 Usage +837 ---------- +838 ``` +839 import time +840 +841 from cfbd_json_py.games import get_cfbd_season_weeks +842 +843 +844 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +845 +846 if cfbd_key != "tigersAreAwsome": +847 print("Using the user's API key declared in this script for this example.") +848 +849 # Get a list of weeks in the 2020 CFB season. +850 print("Get a list of weeks in the 2020 CFB season.") +851 json_data = get_cfbd_season_weeks( +852 api_key=cfbd_key, +853 season=2020 +854 ) +855 print(json_data) +856 time.sleep(5) +857 +858 +859 # You can also tell this function to just return the API call as +860 # a Dictionary (read: JSON) object. +861 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +862 json_data = get_cfbd_season_weeks( +863 season=2020, +864 api_key=cfbd_key, +865 return_as_dict=True +866 ) +867 print(json_data) +868 +869 else: +870 # Alternatively, if the CFBD API key exists in this python environment, +871 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +872 # you could just call these functions directly, without setting the API key +873 # in the script. +874 print("Using the user's API key suposedly loaded into this python environment for this example.") +875 +876 # Get a list of weeks in the 2020 CFB season. +877 print("Get a list of weeks in the 2020 CFB season.") +878 json_data = get_cfbd_season_weeks( +879 season=2020 +880 ) +881 print(json_data) +882 time.sleep(5) +883 +884 +885 # You can also tell this function to just return the API call as +886 # a Dictionary (read: JSON) object. +887 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +888 json_data = get_cfbd_season_weeks( +889 season=2020, +890 return_as_dict=True +891 ) +892 print(json_data) +893 +894 ``` +895 +896 Returns +897 ---------- +898 A pandas `DataFrame` object with a list of valid weeks in a given CFB season, +899 or (if `return_as_dict` is set to `True`) +900 a dictionary object with a list of valid weeks in a given CFB season. +901 +902 +903 """ +904 +905 now = datetime.now() +906 cfb_weeks_df = pd.DataFrame() +907 row_df = pd.DataFrame() +908 url = "https://api.collegefootballdata.com/calendar" +909 +910 ######################################################################################################################################################################################################## +911 +912 if api_key != None: +913 real_api_key = api_key +914 del api_key +915 else: +916 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +917 +918 if real_api_key == "tigersAreAwsome": +919 raise ValueError( +920 "You actually need to change `cfbd_key` to your CFBD API key.") +921 elif "Bearer " in real_api_key: +922 pass +923 elif "Bearer" in real_api_key: +924 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +925 else: +926 real_api_key = "Bearer " + real_api_key +927 +928 if season == None: +929 # This should never happen without user tampering, but if it does, +930 # we need to raise an error, because the CFBD API will refuse this call without a valid season. +931 raise SystemError( +932 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + +933 " and the function got to this point in the code." + +934 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + +935 "https://github.com/armstjc/cfbd-json-py/issues" +936 ) +937 elif season > now.year: +938 raise ValueError(f"`season` cannot be greater than {season}.") +939 elif season < 1869: +940 raise ValueError(f"`season` cannot be less than 1869.") +941 +942 # URL builder +943 ######################################################################################################################################################################################################## +944 +945 # Required by API +946 url += f"?year={season}" +947 +948 headers = { +949 'Authorization': f'{real_api_key}', +950 'accept': 'application/json' +951 } +952 +953 response = requests.get(url, headers=headers) +954 time.sleep(0.1) +955 +956 if response.status_code == 200: +957 pass +958 elif response.status_code == 401: +959 raise ConnectionRefusedError( +960 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +961 ) +962 else: +963 raise ConnectionError( +964 f'Could not connect.\nHTTP Status code {response.status_code}' +965 ) +966 +967 json_data = response.json() +968 +969 if return_as_dict == True: +970 return json_data +971 +972 for week in json_data: +973 row_df = pd.DataFrame( +974 {"season": season}, +975 index=[0] +976 ) +977 row_df['week'] = week['week'] +978 row_df['season_type'] = week['seasonType'] +979 row_df['first_game_start'] = week['firstGameStart'] +980 row_df['last_game_start'] = week['lastGameStart'] +981 +982 cfb_weeks_df = pd.concat([cfb_weeks_df, row_df], ignore_index=True) +983 del row_df +984 +985 return cfb_weeks_df+Retrives a list of weeks that occured in a given CFB season.
+ +Parameters
+ ++ +
season
(int, mandatory): + Required argument. + Specifies the season you want a list of weeks that occured in a given CFB season information from. + This must be specified, otherwise this package, and by extension + the CFBD API, will not accept the request to get a list of weeks that occured in a given CFB season information.+ +
api_key
(str, optional): + Semi-optional argument. + Ifapi_key
is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + Ifapi_key
is not null, this function will automatically assume that the + inputtedapi_key
is a valid CFBD API key.+ +
api_key_dir
(str, optional): + Optional argument. + Ifapi_key
is set to a string non-empty string, this variable is ignored. + Ifapi_key_dir
is null, andapi_key
is null, + this function will try to find a CFBD API key file in this user's home directory. + Ifapi_key_dir
is set to a string, andapi_key
is null, + this function will assume thatapi_key_dir
is a directory, + and will try to find a CFBD API key file in that directory.+ +
return_as_dict
(bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandasDataFrame
object, + setreturn_as_dict
toTrue
.Usage
+ ++ +import time + +from cfbd_json_py.games import get_cfbd_season_weeks + + +cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + +if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get a list of weeks in the 2020 CFB season. + print("Get a list of weeks in the 2020 CFB season.") + json_data = get_cfbd_season_weeks( + api_key=cfbd_key, + season=2020 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_season_weeks( + season=2020, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + +else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get a list of weeks in the 2020 CFB season. + print("Get a list of weeks in the 2020 CFB season.") + json_data = get_cfbd_season_weeks( + season=2020 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_season_weeks( + season=2020, + return_as_dict=True + ) + print(json_data) + +
Returns
+ +A pandas
+DataFrame
object with a list of valid weeks in a given CFB season, +or (ifreturn_as_dict
is set toTrue
) +a dictionary object with a list of valid weeks in a given CFB season.@@ -1001,29 +5198,727 @@ Returns
-342def get_cfbd_game_media_info( -343 season: int, -344 api_key: str = None, -345 api_key_dir: str = None, -346 season_type: str = "regular", # "regular", "postseason", or "both" -347 week: int = None, -348 team: str = None, -349 conference_abv: str = None, -350 media_type: str = "all", # "tv", "radio", "web", "ppv", or "mobile" -351 ncaa_division: str = "fbs", -352 -353 return_as_dict: bool = False): -354 """ -355 -356 """ -357 -358 raise NotImplementedError( -359 'This function has yet to be implemented by this version.' -360 ) +- +988def get_cfbd_game_media_info( + 989 season: int, + 990 api_key: str = None, + 991 api_key_dir: str = None, + 992 season_type: str = "regular", # "regular", "postseason", or "both" + 993 week: int = None, + 994 team: str = None, + 995 conference_abv: str = None, + 996 media_type: str = "all", # "tv", "radio", "web", "ppv", or "mobile" + 997 ncaa_division: str = "fbs", + 998 return_as_dict: bool = False): + 999 """ +1000 Gets known media information for CFB games in a given CFB season. +1001 +1002 Parameters +1003 ---------- +1004 `season` (int, mandatory): +1005 Required argument. +1006 Specifies the season you want CFB media information from. +1007 This must be specified, otherwise this package, and by extension +1008 the CFBD API, will not accept the request to get CFB media information. +1009 +1010 `api_key` (str, optional): +1011 Semi-optional argument. +1012 If `api_key` is null, this function will attempt to load a CFBD API key +1013 from the python environment, or from a file on this computer. +1014 If `api_key` is not null, this function will automatically assume that the +1015 inputted `api_key` is a valid CFBD API key. +1016 +1017 `api_key_dir` (str, optional): +1018 Optional argument. +1019 If `api_key` is set to a string non-empty string, this variable is ignored. +1020 If `api_key_dir` is null, and `api_key` is null, +1021 this function will try to find a CFBD API key file in this user's home directory. +1022 If `api_key_dir` is set to a string, and `api_key` is null, +1023 this function will assume that `api_key_dir` is a directory, +1024 and will try to find a CFBD API key file in that directory. +1025 +1026 `season_type` (str, semi-optional): +1027 Semi-optional argument. +1028 By defualt, this will be set to "regular", for the CFB regular season. +1029 If you want CFB media information for non-regular season games, +1030 set `season_type` to "postseason". +1031 If you want both "regular" and "postseason" games retunred, +1032 set `season_type` to "both" +1033 If `season_type` is set to anything but "regular" or "postseason", +1034 a `ValueError()` will be raised. +1035 +1036 `week` (int, optional): +1037 Optional argument. +1038 If `week` is set to an integer, this function will attempt +1039 to load CFB media information from games in that season, and in that week. +1040 +1041 `team` (str, optional): +1042 Optional argument. +1043 If you only want CFB media information for a team, +1044 regardless if they are the home/away team, +1045 set `team` to the name of the team you want CFB media information from. +1046 +1047 `conference_abv` (str, optional): +1048 Optional argument. +1049 If you only want media information from games +1050 involving teams a specific confrence, +1051 set `conference_abv` to the abbreviation +1052 of the conference you want game information from. +1053 +1054 `media_type` (str, semi-optional): +1055 Semi-optional argument. +1056 If you only want game broadcast information for a specific type of broadcast, +1057 set this to the type of broadcast. +1058 +1059 Valid inputs are: +1060 - `all` (default): Returns all games, and all known broadcasters for those games. +1061 - `tv`: Returns all known TV broadcasters for CFB games in the requested timeframe. +1062 - `radio`: Returns all known radio broadcasters +1063 for CFB games in the requested timeframe. +1064 - `web`: Returns all known web broadcasts (like ESPN+) +1065 for CFB games in the requested timeframe. +1066 - `ppv`: Returns all known Pay Per View (PPV) broadcasts +1067 for CFB games in the requested timeframe. +1068 - `mobile`: Returns all known broadcasters that only broadcasted +1069 games on mobile devices (?) +1070 +1071 `ncaa_division` (str, semi-optional): +1072 Semi-optional argument. +1073 By default, `ncaa_division` will be set to "fbs", +1074 short for the Football Bowl Subdivision (FBS), +1075 formerly known as D1-A (read as "division one single A"), +1076 the highest level in the NCAA football pyramid, +1077 where teams can scolarship up to 85 players +1078 on their football team soley for athletic ability, +1079 and often have the largest athletics budgets +1080 within the NCAA. +1081 +1082 Other valid inputs are: +1083 - "fcs": Football Championship Subdivision (FCS), +1084 formerly known as D1-AA (read as "division one double A"). +1085 An FCS school is still in the 1st division of the NCAA, +1086 making them elligable for the March Madness tournament, +1087 but may not have the resources to compete at the FBS level +1088 at this time. FCS schools are limited to 63 athletic scolarships +1089 for football. +1090 - "ii": NCAA Division II. Schools in this and D3 are not +1091 elligable for the March Madness tournament, +1092 and are limited to 36 athletic scolarships for their football team. +1093 - "iii": NCAA Division III. The largest single division within the +1094 NCAA football pyramid. +1095 D3 schools have the distinction of being part of +1096 the only NCAA division that cannot give out scolarships soley +1097 for athletic ability. +1098 +1099 `return_as_dict` (bool, semi-optional): +1100 Semi-optional argument. +1101 If you want this function to return the data as a dictionary (read: JSON object), +1102 instead of a pandas `DataFrame` object, +1103 set `return_as_dict` to `True`. +1104 +1105 Usage +1106 ---------- +1107 ``` +1108 import time +1109 +1110 from cfbd_json_py.games import get_cfbd_game_media_info +1111 +1112 +1113 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +1114 +1115 if cfbd_key != "tigersAreAwsome": +1116 print("Using the user's API key declared in this script for this example.") +1117 +1118 # Get a media information for the 2020 CFB season. +1119 print("Get a media information for the 2020 CFB season.") +1120 json_data = get_cfbd_game_media_info( +1121 api_key=cfbd_key, +1122 season=2020 +1123 ) +1124 print(json_data) +1125 time.sleep(5) +1126 +1127 # Get a media information for postseason games in the 2020 CFB season. +1128 print("Get a media information for the 2020 CFB season.") +1129 json_data = get_cfbd_game_media_info( +1130 api_key=cfbd_key, +1131 season=2020, +1132 season_type="postseason" +1133 ) +1134 print(json_data) +1135 time.sleep(5) +1136 +1137 # Get a media information for week 10 games in the 2020 CFB season. +1138 print("Get a media information for week 10 games in the 2020 CFB season.") +1139 json_data = get_cfbd_game_media_info( +1140 api_key=cfbd_key, +1141 season=2020, +1142 week=10 +1143 ) +1144 print(json_data) +1145 time.sleep(5) +1146 +1147 # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season. +1148 print("Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.") +1149 json_data = get_cfbd_game_media_info( +1150 api_key=cfbd_key, +1151 season=2020, +1152 team="Ohio State" +1153 ) +1154 print(json_data) +1155 time.sleep(5) +1156 +1157 # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season. +1158 print("Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.") +1159 json_data = get_cfbd_game_media_info( +1160 api_key=cfbd_key, +1161 season=2020, +1162 conference_abv="AAC" +1163 ) +1164 print(json_data) +1165 time.sleep(5) +1166 +1167 # Get all known radio broadcasters for games in the the 2020 CFB season. +1168 print("Get all known radio broadcasters for games in the the 2020 CFB season.") +1169 json_data = get_cfbd_game_media_info( +1170 api_key=cfbd_key, +1171 season=2020, +1172 media_type="radio" +1173 ) +1174 print(json_data) +1175 time.sleep(5) +1176 +1177 # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season. +1178 print("Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.") +1179 json_data = get_cfbd_game_media_info( +1180 api_key=cfbd_key, +1181 season=2020, +1182 ncaa_division="fcs" +1183 ) +1184 print(json_data) +1185 time.sleep(5) +1186 +1187 # You can also tell this function to just return the API call as +1188 # a Dictionary (read: JSON) object. +1189 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +1190 json_data = get_cfbd_game_media_info( +1191 season=2020, +1192 api_key=cfbd_key, +1193 return_as_dict=True +1194 ) +1195 print(json_data) +1196 +1197 else: +1198 # Alternatively, if the CFBD API key exists in this python environment, +1199 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +1200 # you could just call these functions directly, without setting the API key +1201 # in the script. +1202 print("Using the user's API key suposedly loaded into this python environment for this example.") +1203 +1204 # Get a media information for the 2020 CFB season. +1205 print("Get a media information for the 2020 CFB season.") +1206 json_data = get_cfbd_game_media_info( +1207 season=2020 +1208 ) +1209 print(json_data) +1210 time.sleep(5) +1211 +1212 # Get a media information for postseason games in the 2020 CFB season. +1213 print("Get a media information for the 2020 CFB season.") +1214 json_data = get_cfbd_game_media_info( +1215 season=2020, +1216 season_type="postseason" +1217 ) +1218 print(json_data) +1219 time.sleep(5) +1220 +1221 # Get a media information for week 10 games in the 2020 CFB season. +1222 print("Get a media information for week 10 games in the 2020 CFB season.") +1223 json_data = get_cfbd_game_media_info( +1224 season=2020, +1225 week=10 +1226 ) +1227 print(json_data) +1228 time.sleep(5) +1229 +1230 # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season. +1231 print("Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.") +1232 json_data = get_cfbd_game_media_info( +1233 season=2020, +1234 team="Ohio State" +1235 ) +1236 print(json_data) +1237 time.sleep(5) +1238 +1239 # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season. +1240 print("Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.") +1241 json_data = get_cfbd_game_media_info( +1242 season=2020, +1243 conference_abv="AAC" +1244 ) +1245 print(json_data) +1246 time.sleep(5) +1247 +1248 # Get all known radio broadcasters for games in the the 2020 CFB season. +1249 print("Get all known radio broadcasters for games in the the 2020 CFB season.") +1250 json_data = get_cfbd_game_media_info( +1251 season=2020, +1252 media_type="radio" +1253 ) +1254 print(json_data) +1255 time.sleep(5) +1256 +1257 # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season. +1258 print("Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.") +1259 json_data = get_cfbd_game_media_info( +1260 season=2020, +1261 ncaa_division="fcs" +1262 ) +1263 print(json_data) +1264 time.sleep(5) +1265 +1266 +1267 # You can also tell this function to just return the API call as +1268 # a Dictionary (read: JSON) object. +1269 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +1270 json_data = get_cfbd_game_media_info( +1271 season=2020, +1272 return_as_dict=True +1273 ) +1274 print(json_data) +1275 +1276 ``` +1277 Returns +1278 ---------- +1279 A pandas `DataFrame` object with college football media information, +1280 or (if `return_as_dict` is set to `True`) +1281 a dictionary object with college football media information. +1282 +1283 """ +1284 +1285 now = datetime.now() +1286 cfb_games_df = pd.DataFrame() +1287 row_df = pd.DataFrame() +1288 url = "https://api.collegefootballdata.com/games/media" +1289 +1290 ######################################################################################################################################################################################################## +1291 +1292 if api_key != None: +1293 real_api_key = api_key +1294 del api_key +1295 else: +1296 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +1297 +1298 if real_api_key == "tigersAreAwsome": +1299 raise ValueError( +1300 "You actually need to change `cfbd_key` to your CFBD API key.") +1301 elif "Bearer " in real_api_key: +1302 pass +1303 elif "Bearer" in real_api_key: +1304 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +1305 else: +1306 real_api_key = "Bearer " + real_api_key +1307 +1308 if season == None: +1309 # This should never happen without user tampering, but if it does, +1310 # we need to raise an error, because the CFBD API will refuse this call without a valid season. +1311 raise SystemError( +1312 "I don't know how, I don't know why, but you managed to call this function while `season` was `None` (NULL)," + +1313 " and the function got to this point in the code." + +1314 "\nIf you have a GitHub account, please raise an issue on this python package's GitHub page:\n" + +1315 "https://github.com/armstjc/cfbd-json-py/issues" +1316 ) +1317 elif season > now.year: +1318 raise ValueError(f"`season` cannot be greater than {season}.") +1319 elif season < 1869: +1320 raise ValueError(f"`season` cannot be less than 1869.") +1321 +1322 if season_type != "both" and season_type != "regular" and season_type != "postseason": +1323 raise ValueError( +1324 "`season_type` must be set to \"both\", \"regular\", or \"postseason\" for this function to work.") +1325 +1326 if media_type != "all" and media_type != "tv" and media_type != "radio" and media_type != "web" and media_type != "ppv" and media_type != "mobile": +1327 raise ValueError( +1328 "`media_type` must be set to one of the following values for this function to work:" + +1329 "\n\t- `all`" + +1330 "\n\t- `tv`" + +1331 "\n\t- `radio`" + +1332 "\n\t- `web`" + +1333 "\n\t- `ppv`" + +1334 "\n\t- `mobile`" +1335 ) +1336 +1337 if ncaa_division.lower() == "fbs" or ncaa_division.lower() == "fcs" \ +1338 or ncaa_division.lower() == "ii" or ncaa_division.lower() == "iii": +1339 pass +1340 else: +1341 raise ValueError( +1342 "An invalid NCAA Division was inputted when calling this function." + +1343 "\nValid inputs are:\n-\"fbs\"\n-\"fcs\"\n-\"ii\"\n-\"iii\"" + +1344 f"\n\nYou entered: \n{ncaa_division}" +1345 ) +1346 +1347 # URL builder +1348 ######################################################################################################################################################################################################## +1349 +1350 # Required by API +1351 url += f"?year={season}" +1352 +1353 if week != None: +1354 url += f"&week={week}" +1355 +1356 if team != None: +1357 url += f"&team={team}" +1358 +1359 if conference_abv != None: +1360 url += f"&conference={conference_abv}" +1361 +1362 if season_type != None: +1363 url += f"&seasonType={season_type}" +1364 +1365 if media_type == "all": +1366 # If we don't care about what media type we want back, +1367 # we don't need to add anything to the URL. +1368 pass +1369 elif media_type != None: +1370 url += f"&mediaType={media_type}" +1371 +1372 if ncaa_division != None: +1373 url += f"&classification={ncaa_division}" +1374 +1375 headers = { +1376 'Authorization': f'{real_api_key}', +1377 'accept': 'application/json' +1378 } +1379 +1380 response = requests.get(url, headers=headers) +1381 time.sleep(0.1) +1382 +1383 if response.status_code == 200: +1384 pass +1385 elif response.status_code == 401: +1386 raise ConnectionRefusedError( +1387 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +1388 ) +1389 else: +1390 raise ConnectionError( +1391 f'Could not connect.\nHTTP Status code {response.status_code}' +1392 ) +1393 +1394 json_data = response.json() +1395 +1396 if return_as_dict == True: +1397 return json_data +1398 +1399 for game in tqdm(json_data): +1400 row_df = pd.DataFrame( +1401 {"season": season}, +1402 index=[0] +1403 ) +1404 row_df['week'] = game['week'] +1405 row_df['game_id'] = game['id'] +1406 row_df['season_type'] = game['seasonType'] +1407 row_df['game_start_time'] = game['startTime'] +1408 row_df['is_start_time_tbd'] = game['isStartTimeTBD'] +1409 row_df['home_team'] = game['homeTeam'] +1410 row_df['home_conference'] = game['homeConference'] +1411 row_df['away_team'] = game['awayTeam'] +1412 row_df['away_conference'] = game['awayConference'] +1413 row_df['media_type'] = game['mediaType'] +1414 row_df['outlet'] = game['outlet'] +1415 +1416 cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) +1417 del row_df +1418 +1419 return cfb_games_df+Gets known media information for CFB games in a given CFB season.
+ +Parameters
+ ++ +
season
(int, mandatory): + Required argument. + Specifies the season you want CFB media information from. + This must be specified, otherwise this package, and by extension + the CFBD API, will not accept the request to get CFB media information.+ +
api_key
(str, optional): + Semi-optional argument. + Ifapi_key
is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + Ifapi_key
is not null, this function will automatically assume that the + inputtedapi_key
is a valid CFBD API key.+ +
api_key_dir
(str, optional): + Optional argument. + Ifapi_key
is set to a string non-empty string, this variable is ignored. + Ifapi_key_dir
is null, andapi_key
is null, + this function will try to find a CFBD API key file in this user's home directory. + Ifapi_key_dir
is set to a string, andapi_key
is null, + this function will assume thatapi_key_dir
is a directory, + and will try to find a CFBD API key file in that directory.+ +
season_type
(str, semi-optional): + Semi-optional argument. + By defualt, this will be set to "regular", for the CFB regular season. + If you want CFB media information for non-regular season games, + setseason_type
to "postseason". + If you want both "regular" and "postseason" games retunred, + setseason_type
to "both" + Ifseason_type
is set to anything but "regular" or "postseason", + aValueError()
will be raised.+ +
week
(int, optional): + Optional argument. + Ifweek
is set to an integer, this function will attempt + to load CFB media information from games in that season, and in that week.+ +
team
(str, optional): + Optional argument. + If you only want CFB media information for a team, + regardless if they are the home/away team, + setteam
to the name of the team you want CFB media information from.+ +
conference_abv
(str, optional): + Optional argument. + If you only want media information from games + involving teams a specific confrence, + setconference_abv
to the abbreviation + of the conference you want game information from.+ +
media_type
(str, semi-optional): + Semi-optional argument. + If you only want game broadcast information for a specific type of broadcast, + set this to the type of broadcast.+ +Valid inputs are: +- `all` (default): Returns all games, and all known broadcasters for those games. +- `tv`: Returns all known TV broadcasters for CFB games in the requested timeframe. +- `radio`: Returns all known radio broadcasters + for CFB games in the requested timeframe. +- `web`: Returns all known web broadcasts (like ESPN+) + for CFB games in the requested timeframe. +- `ppv`: Returns all known Pay Per View (PPV) broadcasts + for CFB games in the requested timeframe. +- `mobile`: Returns all known broadcasters that only broadcasted + games on mobile devices (?) +
+ +
ncaa_division
(str, semi-optional): + Semi-optional argument. + By default,ncaa_division
will be set to "fbs", + short for the Football Bowl Subdivision (FBS), + formerly known as D1-A (read as "division one single A"), + the highest level in the NCAA football pyramid, + where teams can scolarship up to 85 players + on their football team soley for athletic ability, + and often have the largest athletics budgets + within the NCAA.+ +Other valid inputs are: +- "fcs": Football Championship Subdivision (FCS), + formerly known as D1-AA (read as "division one double A"). + An FCS school is still in the 1st division of the NCAA, + making them elligable for the March Madness tournament, + but may not have the resources to compete at the FBS level + at this time. FCS schools are limited to 63 athletic scolarships + for football. +- "ii": NCAA Division II. Schools in this and D3 are not + elligable for the March Madness tournament, + and are limited to 36 athletic scolarships for their football team. +- "iii": NCAA Division III. The largest single division within the + NCAA football pyramid. + D3 schools have the distinction of being part of + the only NCAA division that cannot give out scolarships soley + for athletic ability. +
+ +
return_as_dict
(bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandasDataFrame
object, + setreturn_as_dict
toTrue
.Usage
+ ++ +import time + +from cfbd_json_py.games import get_cfbd_game_media_info + + +cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + +if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get a media information for the 2020 CFB season. + print("Get a media information for the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get a media information for postseason games in the 2020 CFB season. + print("Get a media information for the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + season_type="postseason" + ) + print(json_data) + time.sleep(5) + + # Get a media information for week 10 games in the 2020 CFB season. + print("Get a media information for week 10 games in the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season. + print("Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + team="Ohio State" + ) + print(json_data) + time.sleep(5) + + # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season. + print("Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + conference_abv="AAC" + ) + print(json_data) + time.sleep(5) + + # Get all known radio broadcasters for games in the the 2020 CFB season. + print("Get all known radio broadcasters for games in the the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + media_type="radio" + ) + print(json_data) + time.sleep(5) + + # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season. + print("Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + api_key=cfbd_key, + season=2020, + ncaa_division="fcs" + ) + print(json_data) + time.sleep(5) + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_game_media_info( + season=2020, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + +else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get a media information for the 2020 CFB season. + print("Get a media information for the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020 + ) + print(json_data) + time.sleep(5) + + # Get a media information for postseason games in the 2020 CFB season. + print("Get a media information for the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + season_type="postseason" + ) + print(json_data) + time.sleep(5) + + # Get a media information for week 10 games in the 2020 CFB season. + print("Get a media information for week 10 games in the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season. + print("Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + team="Ohio State" + ) + print(json_data) + time.sleep(5) + + # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season. + print("Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + conference_abv="AAC" + ) + print(json_data) + time.sleep(5) + + # Get all known radio broadcasters for games in the the 2020 CFB season. + print("Get all known radio broadcasters for games in the the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + media_type="radio" + ) + print(json_data) + time.sleep(5) + + # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season. + print("Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.") + json_data = get_cfbd_game_media_info( + season=2020, + ncaa_division="fcs" + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_game_media_info( + season=2020, + return_as_dict=True + ) + print(json_data) + +
Returns
+ +A pandas
+DataFrame
object with college football media information, +or (ifreturn_as_dict
is set toTrue
) +a dictionary object with college football media information.@@ -1037,58 +5932,2447 @@ Returns
363def get_cfbd_player_game_stats( -364 season: int, -365 api_key: str = None, -366 api_key_dir: str = None, -367 season_type: str = "regular", # "regular" or "postseason" -368 week: int = None, -369 team: str = None, -370 conference_abv: str = None, -371 # `week`, `team`, and/or conference -372 # must be not null for this function to work. -373 stat_category: str = None, -374 game_id: int = None, -375 return_as_dict: bool = False): -376 """ -377 -378 """ -379 -380 raise NotImplementedError( -381 'This function has yet to be implemented by this version.' -382 ) +- +1422def get_cfbd_player_game_stats( +1423 season: int, +1424 api_key: str = None, +1425 api_key_dir: str = None, +1426 season_type: str = "regular", # "regular" or "postseason" +1427 week: int = None, +1428 team: str = None, +1429 conference_abv: str = None, +1430 # `week`, `team`, and/or `conference` +1431 # must be not null for this function to work. +1432 stat_category: str = None, +1433 game_id: int = None, +1434 return_as_dict: bool = False): +1435 """ +1436 Retrives player game stats for a given time frame. +1437 +1438 Parameters +1439 ---------- +1440 `season` (int, mandatory): +1441 Required argument. +1442 Specifies the season you want CFB media information from. +1443 This must be specified, otherwise this package, and by extension +1444 the CFBD API, will not accept the request to get CFB media information. +1445 +1446 `api_key` (str, optional): +1447 Semi-optional argument. +1448 If `api_key` is null, this function will attempt to load a CFBD API key +1449 from the python environment, or from a file on this computer. +1450 If `api_key` is not null, this function will automatically assume that the +1451 inputted `api_key` is a valid CFBD API key. +1452 +1453 `api_key_dir` (str, optional): +1454 Optional argument. +1455 If `api_key` is set to a string non-empty string, this variable is ignored. +1456 If `api_key_dir` is null, and `api_key` is null, +1457 this function will try to find a CFBD API key file in this user's home directory. +1458 If `api_key_dir` is set to a string, and `api_key` is null, +1459 this function will assume that `api_key_dir` is a directory, +1460 and will try to find a CFBD API key file in that directory. +1461 +1462 `season_type` (str, semi-optional): +1463 Semi-optional argument. +1464 By defualt, this will be set to "regular", for the CFB regular season. +1465 If you want CFB media information for non-regular season games, +1466 set `season_type` to "postseason". +1467 If `season_type` is set to anything but "regular" or "postseason", +1468 a `ValueError()` will be raised. +1469 +1470 **For the following three variables, +1471 at least one must be set to a non-null variable when calling this function.** +1472 +1473 `week` (int, optional): +1474 Optional argument. +1475 If `week` is set to an integer, this function will attempt +1476 to load CFB media information from games in that season, and in that week. +1477 +1478 `team` (str, optional): +1479 Optional argument. +1480 If you only want CFB media information for a team, +1481 regardless if they are the home/away team, +1482 set `team` to the name of the team you want CFB media information from. +1483 +1484 `conference_abv` (str, optional): +1485 Optional argument. +1486 If you only want media information from games +1487 involving teams a specific confrence, +1488 set `conference_abv` to the abbreviation +1489 of the conference you want game information from. +1490 +1491 `stat_category` (str, optional): +1492 Optional argument. +1493 If only want stats for a specific stat category, +1494 set this variable to that category. +1495 +1496 Valid inputs are: +1497 - `passing` +1498 - `rushing` +1499 - `receiving` +1500 - `fumbles` +1501 - `defensive` +1502 - `interceptions` +1503 - `punting` +1504 - `kicking` +1505 - `kickReturns` +1506 - `puntReturns` +1507 +1508 `game_id` (int, optional): +1509 Optional argument. +1510 If `game_id` is set to a game ID, `get_cfbd_player_game_stats()` will try to get +1511 player game stats just for that game ID. +1512 +1513 `return_as_dict` (bool, semi-optional): +1514 Semi-optional argument. +1515 If you want this function to return the data as a dictionary (read: JSON object), +1516 instead of a pandas `DataFrame` object, +1517 set `return_as_dict` to `True`. +1518 +1519 Usage +1520 ---------- +1521 ``` +1522 import time +1523 +1524 from cfbd_json_py.games import get_cfbd_player_game_stats +1525 +1526 +1527 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +1528 +1529 if cfbd_key != "tigersAreAwsome": +1530 print("Using the user's API key declared in this script for this example.") +1531 +1532 # Get player game stats for week 10 of the 2020 CFB season. +1533 print("Get player game stats for week 10 of the 2020 CFB season.") +1534 json_data = get_cfbd_player_game_stats( +1535 api_key=cfbd_key, +1536 season=2020, +1537 week=10 +1538 ) +1539 print(json_data) +1540 time.sleep(5) +1541 +1542 # Get postseason player game stats for the 2020 CFB season. +1543 print("Get postseason player game stats for the 2020 CFB season.") +1544 json_data = get_cfbd_player_game_stats( +1545 api_key=cfbd_key, +1546 season=2020, +1547 season_type="postseason", +1548 week=1 +1549 ) +1550 print(json_data) +1551 time.sleep(5) +1552 +1553 # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season. +1554 print("Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.") +1555 json_data = get_cfbd_player_game_stats( +1556 api_key=cfbd_key, +1557 season=2018, +1558 team="Alabama" +1559 ) +1560 print(json_data) +1561 time.sleep(5) +1562 +1563 # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season. +1564 print("Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.") +1565 json_data = get_cfbd_player_game_stats( +1566 api_key=cfbd_key, +1567 season=2020, +1568 conference_abv="ACC" +1569 ) +1570 print(json_data) +1571 time.sleep(5) +1572 +1573 # Get get passing stats from players who played in week 7 of the 2017 CFB season. +1574 print("Get get passing stats from players who played in week 7 of the 2017 CFB season.") +1575 json_data = get_cfbd_player_game_stats( +1576 api_key=cfbd_key, +1577 season=2017, +1578 week=7, +1579 stat_category="pasing" +1580 ) +1581 print(json_data) +1582 time.sleep(5) +1583 +1584 # Get player game stats from the 2021 Virbo Citrus Bowl, +1585 # a bowl game that happened in the 2020 CFB season. +1586 print("Get player game stats from the 2021 Virbo Citrus Bowl, a bowl game that happened in the 2020 CFB season.") +1587 json_data = get_cfbd_player_game_stats( +1588 api_key=cfbd_key, +1589 season=2020, +1590 game_id=401256199 +1591 ) +1592 print(json_data) +1593 time.sleep(5) +1594 +1595 # You can also tell this function to just return the API call as +1596 # a Dictionary (read: JSON) object. +1597 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +1598 json_data = get_cfbd_player_game_stats( +1599 season=2020, +1600 week=10, +1601 api_key=cfbd_key, +1602 return_as_dict=True +1603 ) +1604 print(json_data) +1605 +1606 else: +1607 # Alternatively, if the CFBD API key exists in this python environment, +1608 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +1609 # you could just call these functions directly, without setting the API key +1610 # in the script. +1611 print("Using the user's API key suposedly loaded into this python environment for this example.") +1612 +1613 # Get player game stats for week 10 of the 2020 CFB season. +1614 print("Get player game stats for week 10 of the 2020 CFB season.") +1615 json_data = get_cfbd_player_game_stats( +1616 season=2020, +1617 week=10 +1618 ) +1619 print(json_data) +1620 time.sleep(5) +1621 +1622 # Get postseason player game stats for the 2020 CFB season. +1623 print("Get postseason player game stats for the 2020 CFB season.") +1624 json_data = get_cfbd_player_game_stats( +1625 season=2020, +1626 season_type="postseason", +1627 week=1 +1628 ) +1629 print(json_data) +1630 time.sleep(5) +1631 +1632 # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season. +1633 print("Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.") +1634 json_data = get_cfbd_player_game_stats( +1635 season=2018, +1636 team="Alabama" +1637 ) +1638 print(json_data) +1639 time.sleep(5) +1640 +1641 # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season. +1642 print("Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.") +1643 json_data = get_cfbd_player_game_stats( +1644 season=2020, +1645 conference_abv="ACC" +1646 ) +1647 print(json_data) +1648 time.sleep(5) +1649 +1650 # Get get passing stats from players who played in week 7 of the 2017 CFB season. +1651 print("Get get passing stats from players who played in week 7 of the 2017 CFB season.") +1652 json_data = get_cfbd_player_game_stats( +1653 season=2017, +1654 week=7, +1655 stat_category="passing" +1656 ) +1657 print(json_data) +1658 time.sleep(5) +1659 +1660 # Get player game stats from the 2021 Virbo Citrus Bowl, +1661 # a bowl game that happened in the 2020 CFB season, +1662 # between the Aubrun Tigers, and the Northwestern Wildcats. +1663 print("Get player game stats from the 2021 Virbo Citrus Bowl, "+ +1664 "a bowl game that happened in the 2020 CFB season between the Aubrun Tigers, and the Northwestern Wildcats.") +1665 json_data = get_cfbd_player_game_stats( +1666 season=2020, +1667 game_id=401256199 +1668 ) +1669 print(json_data) +1670 time.sleep(5) +1671 +1672 +1673 # You can also tell this function to just return the API call as +1674 # a Dictionary (read: JSON) object. +1675 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +1676 json_data = get_cfbd_player_game_stats( +1677 season=2020, +1678 week=10, +1679 return_as_dict=True +1680 ) +1681 print(json_data) +1682 +1683 ``` +1684 Returns +1685 ---------- +1686 A pandas `DataFrame` object with player game stats data, +1687 or (if `return_as_dict` is set to `True`) +1688 a dictionary object with player game stats data. +1689 +1690 """ +1691 +1692 rebuilt_json = {} +1693 now = datetime.now() +1694 cfb_games_df = pd.DataFrame() +1695 row_df = pd.DataFrame() +1696 url = "https://api.collegefootballdata.com/games/players" +1697 stat_columns = [ +1698 'game_id', +1699 'team_name', +1700 'team_confrence', +1701 'player_id', +1702 'player_name', +1703 'home_away', +1704 # PASS +1705 'passing_C/ATT', +1706 'passing_COMP', +1707 'passing_ATT', +1708 'passing_YDS', +1709 'passing_AVG', +1710 'passing_TD', +1711 'passing_INT', +1712 'passing_QBR', +1713 # RUSH +1714 'rushing_CAR', +1715 'rushing_YDS', +1716 'rushing_AVG', +1717 'rushing_TD', +1718 'rushing_LONG', +1719 # REC +1720 'receiving_REC', +1721 'receiving_YDS', +1722 'receiving_AVG', +1723 'receiving_TD', +1724 'receiving_LONG', +1725 # FUM +1726 'fumbles_FUM', +1727 'fumbles_LOST', +1728 'fumbles_REC', +1729 # DEFENSE +1730 'defensive_TOT', +1731 'defensive_SOLO', +1732 'defensive_TFL', +1733 'defensive_QB HUR', +1734 'defensive_SACKS', +1735 'defensive_PD', +1736 'defensive_TD', +1737 # INT +1738 'interceptions_INT', +1739 'interceptions_YDS', +1740 'interceptions_TD', +1741 # PUNT +1742 'punting_NO', +1743 'punting_YDS', +1744 'punting_AVG', +1745 'punting_TB', +1746 'punting_In 20', +1747 'punting_LONG', +1748 # KICK +1749 'kicking_FG', +1750 'kicking_FGM', +1751 'kicking_FGA', +1752 'kicking_PCT', +1753 'kicking_LONG', +1754 'kicking_XP', +1755 'kicking_XPM', +1756 'kicking_XPA', +1757 'kicking_PTS', +1758 # KR +1759 'kickReturns_NO', +1760 'kickReturns_YDS', +1761 'kickReturns_AVG', +1762 'kickReturns_TD', +1763 'kickReturns_LONG', +1764 # PR +1765 'puntReturns_NO', +1766 'puntReturns_YDS', +1767 'puntReturns_AVG', +1768 'puntReturns_TD', +1769 'puntReturns_LONG' +1770 ] +1771 +1772 ######################################################################################################################################################################################################## +1773 +1774 if api_key != None: +1775 real_api_key = api_key +1776 del api_key +1777 else: +1778 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +1779 +1780 if real_api_key == "tigersAreAwsome": +1781 raise ValueError( +1782 "You actually need to change `cfbd_key` to your CFBD API key.") +1783 elif "Bearer " in real_api_key: +1784 pass +1785 elif "Bearer" in real_api_key: +1786 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +1787 else: +1788 real_api_key = "Bearer " + real_api_key +1789 +1790 if season == None: +1791 # This should never happen without user tampering, but if it does, +1792 # we need to raise an error, because the CFBD API will refuse this call without a valid season. +1793 raise SystemError( +1794 "I don't know how, I don't know why, " + +1795 "but you managed to call this function while `season` was `None` (NULL)," + +1796 " and the function got to this point in the code." + +1797 "\nIf you have a GitHub account, " + +1798 "please raise an issue on this python package's GitHub page:\n" + +1799 "https://github.com/armstjc/cfbd-json-py/issues" +1800 ) +1801 elif season > now.year: +1802 raise ValueError(f"`season` cannot be greater than {season}.") +1803 elif season < 1869: +1804 raise ValueError(f"`season` cannot be less than 1869.") +1805 +1806 if season_type != "regular" and season_type != "postseason": +1807 raise ValueError( +1808 "`season_type` must be set to either \"regular\" or " + +1809 "\"postseason\" for this function to work." +1810 ) +1811 +1812 # `week`, `team`, and/or `conference` +1813 # must be not null for this function to work. +1814 +1815 if week == None and team == None and conference_abv == None and game_id == None: +1816 raise ValueError( +1817 "To use `get_cfbd_player_game_stats()`," + +1818 " `week`, `team`, and/or `conference_abv` need to be set to a non-null value." +1819 ) +1820 +1821 filter_by_stat_category = False +1822 +1823 if stat_category == None: +1824 pass +1825 elif stat_category == "passing": +1826 filter_by_stat_category = True +1827 elif stat_category == "rushing": +1828 filter_by_stat_category = True +1829 elif stat_category == "receiving": +1830 filter_by_stat_category = True +1831 elif stat_category == "fumbles": +1832 filter_by_stat_category = True +1833 elif stat_category == "passing": +1834 filter_by_stat_category = True +1835 elif stat_category == "defensive": +1836 filter_by_stat_category = True +1837 elif stat_category == "interceptions": +1838 filter_by_stat_category = True +1839 elif stat_category == "punting": +1840 filter_by_stat_category = True +1841 elif stat_category == "kicking": +1842 filter_by_stat_category = True +1843 elif stat_category == "kickReturns": +1844 filter_by_stat_category = True +1845 elif stat_category == "puntReturns": +1846 filter_by_stat_category = True +1847 else: +1848 raise ValueError( +1849 "Invalid input for `stat_category`." + +1850 "\nValid inputs are:" + +1851 """ +1852 - `passing` +1853 - `rushing` +1854 - `receiving` +1855 - `fumbles` +1856 - `defensive` +1857 - `interceptions` +1858 - `punting` +1859 - `kicking` +1860 - `kickReturns` +1861 - `puntReturns` +1862 """ +1863 ) +1864 +1865 # URL builder +1866 ######################################################################################################################################################################################################## +1867 +1868 # Required by the API +1869 url += f"?year={season}" +1870 +1871 if game_id != None: +1872 url += f"&gameId={game_id}" +1873 +1874 if stat_category != None: +1875 url += f"&category={stat_category}" +1876 +1877 if week != None or team != None or conference_abv != None: +1878 logging.warning( +1879 "When calling `cfbd_json_py.games.get_cfbd_player_game_stats()`, " + +1880 "and setting `game_id` to a non-null value, " + +1881 "only `season`, `stat_category`, and `game_id` are considered " + +1882 "when calling the CFBD API." +1883 ) +1884 else: +1885 if season_type != None: +1886 url += f"&seasonType={season_type}" +1887 +1888 if week != None: +1889 url += f"&week={week}" +1890 +1891 if team != None: +1892 url += f"&team={team}" +1893 +1894 if conference_abv != None: +1895 url += f"&conference={conference_abv}" +1896 +1897 headers = { +1898 'Authorization': f'{real_api_key}', +1899 'accept': 'application/json' +1900 } +1901 +1902 response = requests.get(url, headers=headers) +1903 time.sleep(0.1) +1904 +1905 if response.status_code == 200: +1906 pass +1907 elif response.status_code == 401: +1908 raise ConnectionRefusedError( +1909 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +1910 ) +1911 else: +1912 raise ConnectionError( +1913 f'Could not connect.\nHTTP Status code {response.status_code}' +1914 ) +1915 +1916 json_data = response.json() +1917 +1918 if return_as_dict == True: +1919 return json_data +1920 +1921 for game in tqdm(json_data): +1922 game_id = game['id'] +1923 +1924 for team in game['teams']: +1925 team_name = team['school'] +1926 team_confrence = team['conference'] +1927 home_away = team['homeAway'] +1928 +1929 for s_category in team['categories']: +1930 if s_category['name'] == "passing": +1931 for stat in s_category['types']: +1932 +1933 if stat['name'] == "C/ATT": # passing_C/ATT +1934 +1935 for i in stat['athletes']: +1936 player_id = int(i['id']) +1937 player_name = i['name'] +1938 player_stat = i['stat'] +1939 +1940 if rebuilt_json.get(player_id) == None: +1941 rebuilt_json[player_id] = {} +1942 +1943 rebuilt_json[player_id]['game_id'] = game_id +1944 rebuilt_json[player_id]['team_name'] = team_name +1945 rebuilt_json[player_id]['team_confrence'] = team_confrence +1946 rebuilt_json[player_id]['player_id'] = player_id +1947 rebuilt_json[player_id]['player_name'] = player_name +1948 rebuilt_json[player_id]['home_away'] = home_away +1949 rebuilt_json[player_id]['passing_C/ATT'] = player_stat +1950 +1951 elif stat['name'] == "YDS": # passing_YDS +1952 +1953 for i in stat['athletes']: +1954 player_id = int(i['id']) +1955 player_name = i['name'] +1956 player_stat = int(i['stat']) +1957 +1958 if rebuilt_json.get(player_id) == None: +1959 rebuilt_json[player_id] = {} +1960 +1961 rebuilt_json[player_id]['game_id'] = game_id +1962 rebuilt_json[player_id]['team_name'] = team_name +1963 rebuilt_json[player_id]['team_confrence'] = team_confrence +1964 rebuilt_json[player_id]['player_id'] = player_id +1965 rebuilt_json[player_id]['player_name'] = player_name +1966 rebuilt_json[player_id]['home_away'] = home_away +1967 rebuilt_json[player_id]['passing_YDS'] = player_stat +1968 +1969 elif stat['name'] == "AVG": # passing_AVG +1970 for i in stat['athletes']: +1971 player_id = int(i['id']) +1972 player_name = i['name'] +1973 player_stat = float(i['stat']) +1974 +1975 if rebuilt_json.get(player_id) == None: +1976 rebuilt_json[player_id] = {} +1977 +1978 rebuilt_json[player_id]['game_id'] = game_id +1979 rebuilt_json[player_id]['team_name'] = team_name +1980 rebuilt_json[player_id]['team_confrence'] = team_confrence +1981 rebuilt_json[player_id]['player_id'] = player_id +1982 rebuilt_json[player_id]['player_name'] = player_name +1983 rebuilt_json[player_id]['home_away'] = home_away +1984 rebuilt_json[player_id]['passing_AVG'] = player_stat +1985 +1986 elif stat['name'] == "TD": # passing_TD +1987 +1988 for i in stat['athletes']: +1989 player_id = int(i['id']) +1990 player_name = i['name'] +1991 player_stat = int(i['stat']) +1992 +1993 if rebuilt_json.get(player_id) == None: +1994 rebuilt_json[player_id] = {} +1995 +1996 rebuilt_json[player_id]['game_id'] = game_id +1997 rebuilt_json[player_id]['team_name'] = team_name +1998 rebuilt_json[player_id]['team_confrence'] = team_confrence +1999 rebuilt_json[player_id]['player_id'] = player_id +2000 rebuilt_json[player_id]['player_name'] = player_name +2001 rebuilt_json[player_id]['home_away'] = home_away +2002 rebuilt_json[player_id]['passing_TD'] = player_stat +2003 +2004 elif stat['name'] == "INT": # passing_INT +2005 +2006 for i in stat['athletes']: +2007 player_id = int(i['id']) +2008 player_name = i['name'] +2009 player_stat = int(i['stat']) +2010 +2011 if rebuilt_json.get(player_id) == None: +2012 rebuilt_json[player_id] = {} +2013 +2014 rebuilt_json[player_id]['game_id'] = game_id +2015 rebuilt_json[player_id]['team_name'] = team_name +2016 rebuilt_json[player_id]['team_confrence'] = team_confrence +2017 rebuilt_json[player_id]['player_id'] = player_id +2018 rebuilt_json[player_id]['player_name'] = player_name +2019 rebuilt_json[player_id]['home_away'] = home_away +2020 rebuilt_json[player_id]['passing_INT'] = player_stat +2021 +2022 elif stat['name'] == "QBR": # passing_QBR +2023 for i in stat['athletes']: +2024 player_id = int(i['id']) +2025 player_name = i['name'] +2026 try: +2027 player_stat = float(i['stat']) +2028 except: +2029 player_stat = None +2030 +2031 if rebuilt_json.get(player_id) == None: +2032 rebuilt_json[player_id] = {} +2033 +2034 rebuilt_json[player_id]['game_id'] = game_id +2035 rebuilt_json[player_id]['team_name'] = team_name +2036 rebuilt_json[player_id]['team_confrence'] = team_confrence +2037 rebuilt_json[player_id]['player_id'] = player_id +2038 rebuilt_json[player_id]['player_name'] = player_name +2039 rebuilt_json[player_id]['home_away'] = home_away +2040 rebuilt_json[player_id]['passing_QBR'] = player_stat +2041 +2042 else: +2043 raise IndexError( +2044 f"Unhandled stat: \t{stat['name']}") +2045 # passing_df = pd.DataFrame(s_category['types']) +2046 elif s_category['name'] == "rushing": +2047 for stat in s_category['types']: +2048 if stat['name'] == "CAR": # rushing_CAR +2049 for i in stat['athletes']: +2050 player_id = int(i['id']) +2051 player_name = i['name'] +2052 player_stat = int(i['stat']) +2053 +2054 if rebuilt_json.get(player_id) == None: +2055 rebuilt_json[player_id] = {} +2056 +2057 rebuilt_json[player_id]['game_id'] = game_id +2058 rebuilt_json[player_id]['team_name'] = team_name +2059 rebuilt_json[player_id]['team_confrence'] = team_confrence +2060 rebuilt_json[player_id]['player_id'] = player_id +2061 rebuilt_json[player_id]['player_name'] = player_name +2062 rebuilt_json[player_id]['home_away'] = home_away +2063 rebuilt_json[player_id]['rushing_CAR'] = player_stat +2064 +2065 elif stat['name'] == "YDS": # rushing_YDS +2066 for i in stat['athletes']: +2067 player_id = int(i['id']) +2068 player_name = i['name'] +2069 player_stat = int(i['stat']) +2070 +2071 if rebuilt_json.get(player_id) == None: +2072 rebuilt_json[player_id] = {} +2073 +2074 rebuilt_json[player_id]['game_id'] = game_id +2075 rebuilt_json[player_id]['team_name'] = team_name +2076 rebuilt_json[player_id]['team_confrence'] = team_confrence +2077 rebuilt_json[player_id]['player_id'] = player_id +2078 rebuilt_json[player_id]['player_name'] = player_name +2079 rebuilt_json[player_id]['home_away'] = home_away +2080 rebuilt_json[player_id]['rushing_YDS'] = player_stat +2081 +2082 elif stat['name'] == "AVG": # rushing_AVG +2083 for i in stat['athletes']: +2084 player_id = int(i['id']) +2085 player_name = i['name'] +2086 player_stat = float(i['stat']) +2087 +2088 if rebuilt_json.get(player_id) == None: +2089 rebuilt_json[player_id] = {} +2090 +2091 rebuilt_json[player_id]['game_id'] = game_id +2092 rebuilt_json[player_id]['team_name'] = team_name +2093 rebuilt_json[player_id]['team_confrence'] = team_confrence +2094 rebuilt_json[player_id]['player_id'] = player_id +2095 rebuilt_json[player_id]['player_name'] = player_name +2096 rebuilt_json[player_id]['home_away'] = home_away +2097 rebuilt_json[player_id]['rushing_AVG'] = player_stat +2098 +2099 elif stat['name'] == "TD": # rushing_TD +2100 for i in stat['athletes']: +2101 player_id = int(i['id']) +2102 player_name = i['name'] +2103 player_stat = int(i['stat']) +2104 +2105 if rebuilt_json.get(player_id) == None: +2106 rebuilt_json[player_id] = {} +2107 +2108 rebuilt_json[player_id]['game_id'] = game_id +2109 rebuilt_json[player_id]['team_name'] = team_name +2110 rebuilt_json[player_id]['team_confrence'] = team_confrence +2111 rebuilt_json[player_id]['player_id'] = player_id +2112 rebuilt_json[player_id]['player_name'] = player_name +2113 rebuilt_json[player_id]['home_away'] = home_away +2114 rebuilt_json[player_id]['rushing_TD'] = player_stat +2115 +2116 elif stat['name'] == "LONG": # rushing_LONG +2117 for i in stat['athletes']: +2118 player_id = int(i['id']) +2119 player_name = i['name'] +2120 player_stat = int(i['stat']) +2121 +2122 if rebuilt_json.get(player_id) == None: +2123 rebuilt_json[player_id] = {} +2124 +2125 rebuilt_json[player_id]['game_id'] = game_id +2126 rebuilt_json[player_id]['team_name'] = team_name +2127 rebuilt_json[player_id]['team_confrence'] = team_confrence +2128 rebuilt_json[player_id]['player_id'] = player_id +2129 rebuilt_json[player_id]['player_name'] = player_name +2130 rebuilt_json[player_id]['home_away'] = home_away +2131 rebuilt_json[player_id]['rushing_LONG'] = player_stat +2132 +2133 else: +2134 raise IndexError( +2135 f"Unhandled stat: \t{stat['name']}") +2136 +2137 elif s_category['name'] == "receiving": +2138 for stat in s_category['types']: +2139 if stat['name'] == "REC": # receiving_REC +2140 for i in stat['athletes']: +2141 player_id = int(i['id']) +2142 player_name = i['name'] +2143 player_stat = int(i['stat']) +2144 +2145 if rebuilt_json.get(player_id) == None: +2146 rebuilt_json[player_id] = {} +2147 +2148 rebuilt_json[player_id]['game_id'] = game_id +2149 rebuilt_json[player_id]['team_name'] = team_name +2150 rebuilt_json[player_id]['team_confrence'] = team_confrence +2151 rebuilt_json[player_id]['player_id'] = player_id +2152 rebuilt_json[player_id]['player_name'] = player_name +2153 rebuilt_json[player_id]['home_away'] = home_away +2154 rebuilt_json[player_id]['receiving_REC'] = player_stat +2155 +2156 elif stat['name'] == "YDS": # receiving_YDS +2157 for i in stat['athletes']: +2158 player_id = int(i['id']) +2159 player_name = i['name'] +2160 player_stat = int(i['stat']) +2161 +2162 if rebuilt_json.get(player_id) == None: +2163 rebuilt_json[player_id] = {} +2164 +2165 rebuilt_json[player_id]['game_id'] = game_id +2166 rebuilt_json[player_id]['team_name'] = team_name +2167 rebuilt_json[player_id]['team_confrence'] = team_confrence +2168 rebuilt_json[player_id]['player_id'] = player_id +2169 rebuilt_json[player_id]['player_name'] = player_name +2170 rebuilt_json[player_id]['home_away'] = home_away +2171 rebuilt_json[player_id]['receiving_YDS'] = player_stat +2172 +2173 elif stat['name'] == "AVG": # receiving_AVG +2174 for i in stat['athletes']: +2175 player_id = int(i['id']) +2176 player_name = i['name'] +2177 player_stat = float(i['stat']) +2178 +2179 if rebuilt_json.get(player_id) == None: +2180 rebuilt_json[player_id] = {} +2181 +2182 rebuilt_json[player_id]['game_id'] = game_id +2183 rebuilt_json[player_id]['team_name'] = team_name +2184 rebuilt_json[player_id]['team_confrence'] = team_confrence +2185 rebuilt_json[player_id]['player_id'] = player_id +2186 rebuilt_json[player_id]['player_name'] = player_name +2187 rebuilt_json[player_id]['home_away'] = home_away +2188 rebuilt_json[player_id]['receiving_AVG'] = player_stat +2189 +2190 elif stat['name'] == "TD": # receiving_TD +2191 for i in stat['athletes']: +2192 player_id = int(i['id']) +2193 player_name = i['name'] +2194 player_stat = int(i['stat']) +2195 +2196 if rebuilt_json.get(player_id) == None: +2197 rebuilt_json[player_id] = {} +2198 +2199 rebuilt_json[player_id]['game_id'] = game_id +2200 rebuilt_json[player_id]['team_name'] = team_name +2201 rebuilt_json[player_id]['team_confrence'] = team_confrence +2202 rebuilt_json[player_id]['player_id'] = player_id +2203 rebuilt_json[player_id]['player_name'] = player_name +2204 rebuilt_json[player_id]['home_away'] = home_away +2205 rebuilt_json[player_id]['receiving_TD'] = player_stat +2206 +2207 elif stat['name'] == "LONG": # receiving_LONG +2208 for i in stat['athletes']: +2209 player_id = int(i['id']) +2210 player_name = i['name'] +2211 player_stat = int(i['stat']) +2212 +2213 if rebuilt_json.get(player_id) == None: +2214 rebuilt_json[player_id] = {} +2215 +2216 rebuilt_json[player_id]['game_id'] = game_id +2217 rebuilt_json[player_id]['team_name'] = team_name +2218 rebuilt_json[player_id]['team_confrence'] = team_confrence +2219 rebuilt_json[player_id]['player_id'] = player_id +2220 rebuilt_json[player_id]['player_name'] = player_name +2221 rebuilt_json[player_id]['home_away'] = home_away +2222 rebuilt_json[player_id]['receiving_LONG'] = player_stat +2223 +2224 else: +2225 raise IndexError( +2226 f"Unhandled stat: \t{stat['name']}") +2227 +2228 elif s_category['name'] == "fumbles": +2229 for stat in s_category['types']: +2230 if stat['name'] == "FUM": # fumbles_FUM +2231 for i in stat['athletes']: +2232 player_id = int(i['id']) +2233 player_name = i['name'] +2234 player_stat = int(i['stat']) +2235 +2236 if rebuilt_json.get(player_id) == None: +2237 rebuilt_json[player_id] = {} +2238 +2239 rebuilt_json[player_id]['game_id'] = game_id +2240 rebuilt_json[player_id]['team_name'] = team_name +2241 rebuilt_json[player_id]['team_confrence'] = team_confrence +2242 rebuilt_json[player_id]['player_id'] = player_id +2243 rebuilt_json[player_id]['player_name'] = player_name +2244 rebuilt_json[player_id]['home_away'] = home_away +2245 rebuilt_json[player_id]['fumbles_FUM'] = player_stat +2246 +2247 elif stat['name'] == "LOST": # fumbles_LOST +2248 for i in stat['athletes']: +2249 player_id = int(i['id']) +2250 player_name = i['name'] +2251 player_stat = int(i['stat']) +2252 +2253 if rebuilt_json.get(player_id) == None: +2254 rebuilt_json[player_id] = {} +2255 +2256 rebuilt_json[player_id]['game_id'] = game_id +2257 rebuilt_json[player_id]['team_name'] = team_name +2258 rebuilt_json[player_id]['team_confrence'] = team_confrence +2259 rebuilt_json[player_id]['player_id'] = player_id +2260 rebuilt_json[player_id]['player_name'] = player_name +2261 rebuilt_json[player_id]['home_away'] = home_away +2262 rebuilt_json[player_id]['fumbles_LOST'] = player_stat +2263 +2264 elif stat['name'] == "REC": # fumbles_REC +2265 for i in stat['athletes']: +2266 player_id = int(i['id']) +2267 player_name = i['name'] +2268 player_stat = int(i['stat']) +2269 +2270 if rebuilt_json.get(player_id) == None: +2271 rebuilt_json[player_id] = {} +2272 +2273 rebuilt_json[player_id]['game_id'] = game_id +2274 rebuilt_json[player_id]['team_name'] = team_name +2275 rebuilt_json[player_id]['team_confrence'] = team_confrence +2276 rebuilt_json[player_id]['player_id'] = player_id +2277 rebuilt_json[player_id]['player_name'] = player_name +2278 rebuilt_json[player_id]['home_away'] = home_away +2279 rebuilt_json[player_id]['fumbles_REC'] = player_stat +2280 +2281 else: +2282 raise IndexError( +2283 f"Unhandled stat: \t{stat['name']}") +2284 +2285 elif s_category['name'] == "defensive": +2286 for stat in s_category['types']: +2287 if stat['name'] == "TOT": # defensive_TOT +2288 for i in stat['athletes']: +2289 player_id = int(i['id']) +2290 player_name = i['name'] +2291 player_stat = int(i['stat']) +2292 +2293 if rebuilt_json.get(player_id) == None: +2294 rebuilt_json[player_id] = {} +2295 +2296 rebuilt_json[player_id]['game_id'] = game_id +2297 rebuilt_json[player_id]['team_name'] = team_name +2298 rebuilt_json[player_id]['team_confrence'] = team_confrence +2299 rebuilt_json[player_id]['player_id'] = player_id +2300 rebuilt_json[player_id]['player_name'] = player_name +2301 rebuilt_json[player_id]['home_away'] = home_away +2302 rebuilt_json[player_id]['defensive_TOT'] = player_stat +2303 +2304 elif stat['name'] == "SOLO": # defensive_SOLO +2305 for i in stat['athletes']: +2306 player_id = int(i['id']) +2307 player_name = i['name'] +2308 player_stat = int(i['stat']) +2309 +2310 if rebuilt_json.get(player_id) == None: +2311 rebuilt_json[player_id] = {} +2312 +2313 rebuilt_json[player_id]['game_id'] = game_id +2314 rebuilt_json[player_id]['team_name'] = team_name +2315 rebuilt_json[player_id]['team_confrence'] = team_confrence +2316 rebuilt_json[player_id]['player_id'] = player_id +2317 rebuilt_json[player_id]['player_name'] = player_name +2318 rebuilt_json[player_id]['home_away'] = home_away +2319 rebuilt_json[player_id]['defensive_SOLO'] = player_stat +2320 +2321 elif stat['name'] == "TFL": # defensive_TFL +2322 for i in stat['athletes']: +2323 player_id = int(i['id']) +2324 player_name = i['name'] +2325 player_stat = float(i['stat']) +2326 +2327 if rebuilt_json.get(player_id) == None: +2328 rebuilt_json[player_id] = {} +2329 +2330 rebuilt_json[player_id]['game_id'] = game_id +2331 rebuilt_json[player_id]['team_name'] = team_name +2332 rebuilt_json[player_id]['team_confrence'] = team_confrence +2333 rebuilt_json[player_id]['player_id'] = player_id +2334 rebuilt_json[player_id]['player_name'] = player_name +2335 rebuilt_json[player_id]['home_away'] = home_away +2336 rebuilt_json[player_id]['defensive_TFL'] = player_stat +2337 +2338 elif stat['name'] == "QB HUR": # defensive_QB HUR +2339 for i in stat['athletes']: +2340 player_id = int(i['id']) +2341 player_name = i['name'] +2342 player_stat = int(i['stat']) +2343 +2344 if rebuilt_json.get(player_id) == None: +2345 rebuilt_json[player_id] = {} +2346 +2347 rebuilt_json[player_id]['game_id'] = game_id +2348 rebuilt_json[player_id]['team_name'] = team_name +2349 rebuilt_json[player_id]['team_confrence'] = team_confrence +2350 rebuilt_json[player_id]['player_id'] = player_id +2351 rebuilt_json[player_id]['player_name'] = player_name +2352 rebuilt_json[player_id]['home_away'] = home_away +2353 rebuilt_json[player_id]['defensive_QB HUR'] = player_stat +2354 +2355 elif stat['name'] == "SACKS": # defensive_SACKS +2356 for i in stat['athletes']: +2357 player_id = int(i['id']) +2358 player_name = i['name'] +2359 player_stat = float(i['stat']) +2360 +2361 if rebuilt_json.get(player_id) == None: +2362 rebuilt_json[player_id] = {} +2363 +2364 rebuilt_json[player_id]['game_id'] = game_id +2365 rebuilt_json[player_id]['team_name'] = team_name +2366 rebuilt_json[player_id]['team_confrence'] = team_confrence +2367 rebuilt_json[player_id]['player_id'] = player_id +2368 rebuilt_json[player_id]['player_name'] = player_name +2369 rebuilt_json[player_id]['home_away'] = home_away +2370 rebuilt_json[player_id]['defensive_SACKS'] = player_stat +2371 +2372 elif stat['name'] == "PD": # defensive_PD +2373 for i in stat['athletes']: +2374 player_id = int(i['id']) +2375 player_name = i['name'] +2376 player_stat = int(i['stat']) +2377 +2378 if rebuilt_json.get(player_id) == None: +2379 rebuilt_json[player_id] = {} +2380 +2381 rebuilt_json[player_id]['game_id'] = game_id +2382 rebuilt_json[player_id]['team_name'] = team_name +2383 rebuilt_json[player_id]['team_confrence'] = team_confrence +2384 rebuilt_json[player_id]['player_id'] = player_id +2385 rebuilt_json[player_id]['player_name'] = player_name +2386 rebuilt_json[player_id]['home_away'] = home_away +2387 rebuilt_json[player_id]['defensive_PD'] = player_stat +2388 +2389 elif stat['name'] == "TD": # defensive_TD +2390 for i in stat['athletes']: +2391 player_id = int(i['id']) +2392 player_name = i['name'] +2393 player_stat = int(i['stat']) +2394 +2395 if rebuilt_json.get(player_id) == None: +2396 rebuilt_json[player_id] = {} +2397 +2398 rebuilt_json[player_id]['game_id'] = game_id +2399 rebuilt_json[player_id]['team_name'] = team_name +2400 rebuilt_json[player_id]['team_confrence'] = team_confrence +2401 rebuilt_json[player_id]['player_id'] = player_id +2402 rebuilt_json[player_id]['player_name'] = player_name +2403 rebuilt_json[player_id]['home_away'] = home_away +2404 rebuilt_json[player_id]['defensive_TD'] = player_stat +2405 +2406 else: +2407 raise IndexError( +2408 f"Unhandled stat: \t{stat['name']}") +2409 +2410 elif s_category['name'] == "interceptions": +2411 for stat in s_category['types']: +2412 if stat['name'] == "INT": # interceptions_INT +2413 for i in stat['athletes']: +2414 player_id = int(i['id']) +2415 player_name = i['name'] +2416 player_stat = int(i['stat']) +2417 +2418 if rebuilt_json.get(player_id) == None: +2419 rebuilt_json[player_id] = {} +2420 +2421 rebuilt_json[player_id]['game_id'] = game_id +2422 rebuilt_json[player_id]['team_name'] = team_name +2423 rebuilt_json[player_id]['team_confrence'] = team_confrence +2424 rebuilt_json[player_id]['player_id'] = player_id +2425 rebuilt_json[player_id]['player_name'] = player_name +2426 rebuilt_json[player_id]['home_away'] = home_away +2427 rebuilt_json[player_id]['interceptions_INT'] = player_stat +2428 +2429 elif stat['name'] == "YDS": # interceptions_YDS +2430 for i in stat['athletes']: +2431 player_id = int(i['id']) +2432 player_name = i['name'] +2433 player_stat = int(i['stat']) +2434 +2435 if rebuilt_json.get(player_id) == None: +2436 rebuilt_json[player_id] = {} +2437 +2438 rebuilt_json[player_id]['game_id'] = game_id +2439 rebuilt_json[player_id]['team_name'] = team_name +2440 rebuilt_json[player_id]['team_confrence'] = team_confrence +2441 rebuilt_json[player_id]['player_id'] = player_id +2442 rebuilt_json[player_id]['player_name'] = player_name +2443 rebuilt_json[player_id]['home_away'] = home_away +2444 rebuilt_json[player_id]['interceptions_YDS'] = player_stat +2445 +2446 elif stat['name'] == "TD": # interceptions_TD +2447 for i in stat['athletes']: +2448 player_id = int(i['id']) +2449 player_name = i['name'] +2450 player_stat = int(i['stat']) +2451 +2452 if rebuilt_json.get(player_id) == None: +2453 rebuilt_json[player_id] = {} +2454 +2455 rebuilt_json[player_id]['game_id'] = game_id +2456 rebuilt_json[player_id]['team_name'] = team_name +2457 rebuilt_json[player_id]['team_confrence'] = team_confrence +2458 rebuilt_json[player_id]['player_id'] = player_id +2459 rebuilt_json[player_id]['player_name'] = player_name +2460 rebuilt_json[player_id]['home_away'] = home_away +2461 rebuilt_json[player_id]['interceptions_TD'] = player_stat +2462 +2463 else: +2464 raise IndexError( +2465 f"Unhandled stat: \t{stat['name']}") +2466 +2467 elif s_category['name'] == "punting": +2468 for stat in s_category['types']: +2469 if stat['name'] == "NO": # punting_NO +2470 for i in stat['athletes']: +2471 player_id = int(i['id']) +2472 player_name = i['name'] +2473 player_stat = int(i['stat']) +2474 +2475 if rebuilt_json.get(player_id) == None: +2476 rebuilt_json[player_id] = {} +2477 +2478 rebuilt_json[player_id]['game_id'] = game_id +2479 rebuilt_json[player_id]['team_name'] = team_name +2480 rebuilt_json[player_id]['team_confrence'] = team_confrence +2481 rebuilt_json[player_id]['player_id'] = player_id +2482 rebuilt_json[player_id]['player_name'] = player_name +2483 rebuilt_json[player_id]['home_away'] = home_away +2484 rebuilt_json[player_id]['punting_NO'] = player_stat +2485 +2486 elif stat['name'] == "YDS": # punting_YDS +2487 for i in stat['athletes']: +2488 player_id = int(i['id']) +2489 player_name = i['name'] +2490 player_stat = int(i['stat']) +2491 +2492 if rebuilt_json.get(player_id) == None: +2493 rebuilt_json[player_id] = {} +2494 +2495 rebuilt_json[player_id]['game_id'] = game_id +2496 rebuilt_json[player_id]['team_name'] = team_name +2497 rebuilt_json[player_id]['team_confrence'] = team_confrence +2498 rebuilt_json[player_id]['player_id'] = player_id +2499 rebuilt_json[player_id]['player_name'] = player_name +2500 rebuilt_json[player_id]['home_away'] = home_away +2501 rebuilt_json[player_id]['punting_YDS'] = player_stat +2502 +2503 elif stat['name'] == "AVG": # punting_AVG +2504 for i in stat['athletes']: +2505 player_id = int(i['id']) +2506 player_name = i['name'] +2507 player_stat = float(i['stat']) +2508 +2509 if rebuilt_json.get(player_id) == None: +2510 rebuilt_json[player_id] = {} +2511 +2512 rebuilt_json[player_id]['game_id'] = game_id +2513 rebuilt_json[player_id]['team_name'] = team_name +2514 rebuilt_json[player_id]['team_confrence'] = team_confrence +2515 rebuilt_json[player_id]['player_id'] = player_id +2516 rebuilt_json[player_id]['player_name'] = player_name +2517 rebuilt_json[player_id]['home_away'] = home_away +2518 rebuilt_json[player_id]['punting_AVG'] = player_stat +2519 +2520 elif stat['name'] == "TB": # punting_TB +2521 for i in stat['athletes']: +2522 player_id = int(i['id']) +2523 player_name = i['name'] +2524 player_stat = int(i['stat']) +2525 +2526 if rebuilt_json.get(player_id) == None: +2527 rebuilt_json[player_id] = {} +2528 +2529 rebuilt_json[player_id]['game_id'] = game_id +2530 rebuilt_json[player_id]['team_name'] = team_name +2531 rebuilt_json[player_id]['team_confrence'] = team_confrence +2532 rebuilt_json[player_id]['player_id'] = player_id +2533 rebuilt_json[player_id]['player_name'] = player_name +2534 rebuilt_json[player_id]['home_away'] = home_away +2535 rebuilt_json[player_id]['punting_TB'] = player_stat +2536 +2537 elif stat['name'] == "In 20": # punting_In 20 +2538 for i in stat['athletes']: +2539 player_id = int(i['id']) +2540 player_name = i['name'] +2541 player_stat = int(i['stat']) +2542 +2543 if rebuilt_json.get(player_id) == None: +2544 rebuilt_json[player_id] = {} +2545 +2546 rebuilt_json[player_id]['game_id'] = game_id +2547 rebuilt_json[player_id]['team_name'] = team_name +2548 rebuilt_json[player_id]['team_confrence'] = team_confrence +2549 rebuilt_json[player_id]['player_id'] = player_id +2550 rebuilt_json[player_id]['player_name'] = player_name +2551 rebuilt_json[player_id]['home_away'] = home_away +2552 rebuilt_json[player_id]['punting_In 20'] = player_stat +2553 +2554 elif stat['name'] == "LONG": # punting_LONG +2555 for i in stat['athletes']: +2556 player_id = int(i['id']) +2557 player_name = i['name'] +2558 player_stat = int(i['stat']) +2559 +2560 if rebuilt_json.get(player_id) == None: +2561 rebuilt_json[player_id] = {} +2562 +2563 rebuilt_json[player_id]['game_id'] = game_id +2564 rebuilt_json[player_id]['team_name'] = team_name +2565 rebuilt_json[player_id]['team_confrence'] = team_confrence +2566 rebuilt_json[player_id]['player_id'] = player_id +2567 rebuilt_json[player_id]['player_name'] = player_name +2568 rebuilt_json[player_id]['home_away'] = home_away +2569 rebuilt_json[player_id]['punting_LONG'] = player_stat +2570 +2571 else: +2572 raise IndexError( +2573 f"Unhandled stat: \t{stat['name']}") +2574 +2575 elif s_category['name'] == "kicking": +2576 for stat in s_category['types']: +2577 if stat['name'] == "FG": # kicking_FG +2578 for i in stat['athletes']: +2579 player_id = int(i['id']) +2580 player_name = i['name'] +2581 player_stat = i['stat'] +2582 +2583 if rebuilt_json.get(player_id) == None: +2584 rebuilt_json[player_id] = {} +2585 +2586 rebuilt_json[player_id]['game_id'] = game_id +2587 rebuilt_json[player_id]['team_name'] = team_name +2588 rebuilt_json[player_id]['team_confrence'] = team_confrence +2589 rebuilt_json[player_id]['player_id'] = player_id +2590 rebuilt_json[player_id]['player_name'] = player_name +2591 rebuilt_json[player_id]['home_away'] = home_away +2592 rebuilt_json[player_id]['kicking_FG'] = player_stat +2593 +2594 elif stat['name'] == "TOT": # kicking_FG, special case +2595 for i in stat['athletes']: +2596 player_id = int(i['id']) +2597 player_name = i['name'] +2598 player_stat = i['stat'] +2599 +2600 if rebuilt_json.get(player_id) == None: +2601 rebuilt_json[player_id] = {} +2602 +2603 rebuilt_json[player_id]['game_id'] = game_id +2604 rebuilt_json[player_id]['team_name'] = team_name +2605 rebuilt_json[player_id]['team_confrence'] = team_confrence +2606 rebuilt_json[player_id]['player_id'] = player_id +2607 rebuilt_json[player_id]['player_name'] = player_name +2608 rebuilt_json[player_id]['home_away'] = home_away +2609 rebuilt_json[player_id]['kicking_FG'] = player_stat +2610 +2611 elif stat['name'] == "PCT": # kicking_PCT +2612 for i in stat['athletes']: +2613 player_id = int(i['id']) +2614 player_name = i['name'] +2615 player_stat = float(i['stat']) +2616 +2617 if rebuilt_json.get(player_id) == None: +2618 rebuilt_json[player_id] = {} +2619 +2620 rebuilt_json[player_id]['game_id'] = game_id +2621 rebuilt_json[player_id]['team_name'] = team_name +2622 rebuilt_json[player_id]['team_confrence'] = team_confrence +2623 rebuilt_json[player_id]['player_id'] = player_id +2624 rebuilt_json[player_id]['player_name'] = player_name +2625 rebuilt_json[player_id]['home_away'] = home_away +2626 rebuilt_json[player_id]['kicking_PCT'] = player_stat +2627 +2628 elif stat['name'] == "LONG": # kicking_LONG +2629 for i in stat['athletes']: +2630 player_id = int(i['id']) +2631 player_name = i['name'] +2632 player_stat = int(i['stat']) +2633 +2634 if rebuilt_json.get(player_id) == None: +2635 rebuilt_json[player_id] = {} +2636 +2637 rebuilt_json[player_id]['game_id'] = game_id +2638 rebuilt_json[player_id]['team_name'] = team_name +2639 rebuilt_json[player_id]['team_confrence'] = team_confrence +2640 rebuilt_json[player_id]['player_id'] = player_id +2641 rebuilt_json[player_id]['player_name'] = player_name +2642 rebuilt_json[player_id]['home_away'] = home_away +2643 rebuilt_json[player_id]['kicking_LONG'] = player_stat +2644 +2645 elif stat['name'] == "XP": # kicking_XP +2646 for i in stat['athletes']: +2647 player_id = int(i['id']) +2648 player_name = i['name'] +2649 player_stat = i['stat'] +2650 +2651 if rebuilt_json.get(player_id) == None: +2652 rebuilt_json[player_id] = {} +2653 +2654 rebuilt_json[player_id]['game_id'] = game_id +2655 rebuilt_json[player_id]['team_name'] = team_name +2656 rebuilt_json[player_id]['team_confrence'] = team_confrence +2657 rebuilt_json[player_id]['player_id'] = player_id +2658 rebuilt_json[player_id]['player_name'] = player_name +2659 rebuilt_json[player_id]['home_away'] = home_away +2660 rebuilt_json[player_id]['kicking_XP'] = player_stat +2661 +2662 elif stat['name'] == "PTS": # kicking_PTS +2663 for i in stat['athletes']: +2664 player_id = int(i['id']) +2665 player_name = i['name'] +2666 player_stat = int(i['stat']) +2667 +2668 if rebuilt_json.get(player_id) == None: +2669 rebuilt_json[player_id] = {} +2670 +2671 rebuilt_json[player_id]['game_id'] = game_id +2672 rebuilt_json[player_id]['team_name'] = team_name +2673 rebuilt_json[player_id]['team_confrence'] = team_confrence +2674 rebuilt_json[player_id]['player_id'] = player_id +2675 rebuilt_json[player_id]['player_name'] = player_name +2676 rebuilt_json[player_id]['home_away'] = home_away +2677 rebuilt_json[player_id]['kicking_PTS'] = player_stat +2678 +2679 else: +2680 raise IndexError( +2681 f"Unhandled stat: \t{stat['name']}") +2682 +2683 elif s_category['name'] == "kickReturns": +2684 for stat in s_category['types']: +2685 if stat['name'] == "NO": # kickReturns_NO +2686 for i in stat['athletes']: +2687 player_id = int(i['id']) +2688 player_name = i['name'] +2689 player_stat = int(i['stat']) +2690 +2691 if rebuilt_json.get(player_id) == None: +2692 rebuilt_json[player_id] = {} +2693 +2694 rebuilt_json[player_id]['game_id'] = game_id +2695 rebuilt_json[player_id]['team_name'] = team_name +2696 rebuilt_json[player_id]['team_confrence'] = team_confrence +2697 rebuilt_json[player_id]['player_id'] = player_id +2698 rebuilt_json[player_id]['player_name'] = player_name +2699 rebuilt_json[player_id]['home_away'] = home_away +2700 rebuilt_json[player_id]['kickReturns_NO'] = player_stat +2701 +2702 elif stat['name'] == "YDS": # kickReturns_YDS +2703 for i in stat['athletes']: +2704 player_id = int(i['id']) +2705 player_name = i['name'] +2706 player_stat = int(i['stat']) +2707 +2708 if rebuilt_json.get(player_id) == None: +2709 rebuilt_json[player_id] = {} +2710 +2711 rebuilt_json[player_id]['game_id'] = game_id +2712 rebuilt_json[player_id]['team_name'] = team_name +2713 rebuilt_json[player_id]['team_confrence'] = team_confrence +2714 rebuilt_json[player_id]['player_id'] = player_id +2715 rebuilt_json[player_id]['player_name'] = player_name +2716 rebuilt_json[player_id]['home_away'] = home_away +2717 rebuilt_json[player_id]['kickReturns_YDS'] = player_stat +2718 +2719 elif stat['name'] == "AVG": # kickReturns_AVG +2720 for i in stat['athletes']: +2721 player_id = int(i['id']) +2722 player_name = i['name'] +2723 player_stat = float(i['stat']) +2724 +2725 if rebuilt_json.get(player_id) == None: +2726 rebuilt_json[player_id] = {} +2727 +2728 rebuilt_json[player_id]['game_id'] = game_id +2729 rebuilt_json[player_id]['team_name'] = team_name +2730 rebuilt_json[player_id]['team_confrence'] = team_confrence +2731 rebuilt_json[player_id]['player_id'] = player_id +2732 rebuilt_json[player_id]['player_name'] = player_name +2733 rebuilt_json[player_id]['home_away'] = home_away +2734 rebuilt_json[player_id]['kickReturns_AVG'] = player_stat +2735 +2736 elif stat['name'] == "TD": # kickReturns_TD +2737 for i in stat['athletes']: +2738 player_id = int(i['id']) +2739 player_name = i['name'] +2740 player_stat = int(i['stat']) +2741 +2742 if rebuilt_json.get(player_id) == None: +2743 rebuilt_json[player_id] = {} +2744 +2745 rebuilt_json[player_id]['game_id'] = game_id +2746 rebuilt_json[player_id]['team_name'] = team_name +2747 rebuilt_json[player_id]['team_confrence'] = team_confrence +2748 rebuilt_json[player_id]['player_id'] = player_id +2749 rebuilt_json[player_id]['player_name'] = player_name +2750 rebuilt_json[player_id]['home_away'] = home_away +2751 rebuilt_json[player_id]['kickReturns_TD'] = player_stat +2752 +2753 elif stat['name'] == "LONG": # kickReturns_LONG +2754 for i in stat['athletes']: +2755 player_id = int(i['id']) +2756 player_name = i['name'] +2757 player_stat = int(i['stat']) +2758 +2759 if rebuilt_json.get(player_id) == None: +2760 rebuilt_json[player_id] = {} +2761 +2762 rebuilt_json[player_id]['game_id'] = game_id +2763 rebuilt_json[player_id]['team_name'] = team_name +2764 rebuilt_json[player_id]['team_confrence'] = team_confrence +2765 rebuilt_json[player_id]['player_id'] = player_id +2766 rebuilt_json[player_id]['player_name'] = player_name +2767 rebuilt_json[player_id]['home_away'] = home_away +2768 rebuilt_json[player_id]['kickReturns_LONG'] = player_stat +2769 +2770 else: +2771 raise IndexError( +2772 f"Unhandled stat: \t{stat['name']}") +2773 +2774 elif s_category['name'] == "puntReturns": +2775 for stat in s_category['types']: +2776 if stat['name'] == "NO": # puntReturns_NO +2777 for i in stat['athletes']: +2778 player_id = int(i['id']) +2779 player_name = i['name'] +2780 player_stat = int(i['stat']) +2781 +2782 if rebuilt_json.get(player_id) == None: +2783 rebuilt_json[player_id] = {} +2784 +2785 rebuilt_json[player_id]['game_id'] = game_id +2786 rebuilt_json[player_id]['team_name'] = team_name +2787 rebuilt_json[player_id]['team_confrence'] = team_confrence +2788 rebuilt_json[player_id]['player_id'] = player_id +2789 rebuilt_json[player_id]['player_name'] = player_name +2790 rebuilt_json[player_id]['home_away'] = home_away +2791 rebuilt_json[player_id]['puntReturns_NO'] = player_stat +2792 +2793 elif stat['name'] == "YDS": # puntReturns_YDS +2794 for i in stat['athletes']: +2795 player_id = int(i['id']) +2796 player_name = i['name'] +2797 player_stat = int(i['stat']) +2798 +2799 if rebuilt_json.get(player_id) == None: +2800 rebuilt_json[player_id] = {} +2801 +2802 rebuilt_json[player_id]['game_id'] = game_id +2803 rebuilt_json[player_id]['team_name'] = team_name +2804 rebuilt_json[player_id]['team_confrence'] = team_confrence +2805 rebuilt_json[player_id]['player_id'] = player_id +2806 rebuilt_json[player_id]['player_name'] = player_name +2807 rebuilt_json[player_id]['home_away'] = home_away +2808 rebuilt_json[player_id]['puntReturns_YDS'] = player_stat +2809 +2810 elif stat['name'] == "AVG": # puntReturns_AVG +2811 for i in stat['athletes']: +2812 player_id = int(i['id']) +2813 player_name = i['name'] +2814 player_stat = float(i['stat']) +2815 +2816 if rebuilt_json.get(player_id) == None: +2817 rebuilt_json[player_id] = {} +2818 +2819 rebuilt_json[player_id]['game_id'] = game_id +2820 rebuilt_json[player_id]['team_name'] = team_name +2821 rebuilt_json[player_id]['team_confrence'] = team_confrence +2822 rebuilt_json[player_id]['player_id'] = player_id +2823 rebuilt_json[player_id]['player_name'] = player_name +2824 rebuilt_json[player_id]['home_away'] = home_away +2825 rebuilt_json[player_id]['puntReturns_AVG'] = player_stat +2826 +2827 elif stat['name'] == "TD": # puntReturns_TD +2828 for i in stat['athletes']: +2829 player_id = int(i['id']) +2830 player_name = i['name'] +2831 player_stat = int(i['stat']) +2832 +2833 if rebuilt_json.get(player_id) == None: +2834 rebuilt_json[player_id] = {} +2835 +2836 rebuilt_json[player_id]['game_id'] = game_id +2837 rebuilt_json[player_id]['team_name'] = team_name +2838 rebuilt_json[player_id]['team_confrence'] = team_confrence +2839 rebuilt_json[player_id]['player_id'] = player_id +2840 rebuilt_json[player_id]['player_name'] = player_name +2841 rebuilt_json[player_id]['home_away'] = home_away +2842 rebuilt_json[player_id]['puntReturns_TD'] = player_stat +2843 +2844 elif stat['name'] == "LONG": # puntReturns_LONG +2845 for i in stat['athletes']: +2846 player_id = int(i['id']) +2847 player_name = i['name'] +2848 player_stat = int(i['stat']) +2849 +2850 if rebuilt_json.get(player_id) == None: +2851 rebuilt_json[player_id] = {} +2852 +2853 rebuilt_json[player_id]['game_id'] = game_id +2854 rebuilt_json[player_id]['team_name'] = team_name +2855 rebuilt_json[player_id]['team_confrence'] = team_confrence +2856 rebuilt_json[player_id]['player_id'] = player_id +2857 rebuilt_json[player_id]['player_name'] = player_name +2858 rebuilt_json[player_id]['home_away'] = home_away +2859 rebuilt_json[player_id]['puntReturns_LONG'] = player_stat +2860 +2861 else: +2862 raise IndexError( +2863 f"Unhandled stat: \t{stat['name']}") +2864 +2865 else: +2866 raise IndexError(f"Unhandled stat category: \t{ +2867 s_category['name']}") +2868 +2869 for key, value in tqdm(rebuilt_json.items()): +2870 # print(key) +2871 +2872 # print(value) +2873 game_id = value['game_id'] +2874 team_name = value['team_name'] +2875 team_confrence = value['team_confrence'] +2876 player_id = value['player_id'] +2877 player_name = value['player_name'] +2878 home_away = value['home_away'] +2879 +2880 row_df = pd.DataFrame( +2881 { +2882 "game_id": game_id, +2883 "team_name": team_name, +2884 "team_confrence": team_confrence, +2885 "player_id": player_id, +2886 "player_name": player_name, +2887 "home_away": home_away +2888 }, +2889 index=[0] +2890 ) +2891 # Passing +2892 if value.get('passing_C/ATT') != None: +2893 row_df['passing_C/ATT'] = value['passing_C/ATT'] +2894 +2895 if value.get('passing_YDS') != None: +2896 row_df['passing_YDS'] = value['passing_YDS'] +2897 +2898 if value.get('passing_AVG') != None: +2899 row_df['passing_AVG'] = value['passing_AVG'] +2900 +2901 if value.get('passing_TD') != None: +2902 row_df['passing_TD'] = value['passing_TD'] +2903 +2904 if value.get('passing_INT') != None: +2905 row_df['passing_INT'] = value['passing_INT'] +2906 +2907 if value.get('passing_QBR') != None: +2908 row_df['passing_QBR'] = value['passing_QBR'] +2909 +2910 # Rushing +2911 if value.get('rushing_CAR') != None: +2912 row_df['rushing_CAR'] = value['rushing_CAR'] +2913 +2914 if value.get('rushing_YDS') != None: +2915 row_df['rushing_YDS'] = value['rushing_YDS'] +2916 +2917 if value.get('rushing_AVG') != None: +2918 row_df['rushing_AVG'] = value['rushing_AVG'] +2919 +2920 if value.get('rushing_TD') != None: +2921 row_df['rushing_TD'] = value['rushing_TD'] +2922 +2923 if value.get('rushing_LONG') != None: +2924 row_df['rushing_LONG'] = value['rushing_LONG'] +2925 +2926 # Receiving +2927 if value.get('receiving_REC') != None: +2928 row_df['receiving_REC'] = value['receiving_REC'] +2929 +2930 if value.get('receiving_YDS') != None: +2931 row_df['receiving_YDS'] = value['receiving_YDS'] +2932 +2933 if value.get('receiving_AVG') != None: +2934 row_df['receiving_AVG'] = value['receiving_AVG'] +2935 +2936 if value.get('receiving_TD') != None: +2937 row_df['receiving_TD'] = value['receiving_TD'] +2938 +2939 if value.get('receiving_LONG') != None: +2940 row_df['receiving_LONG'] = value['receiving_LONG'] +2941 +2942 # Fumbles +2943 if value.get('fumbles_FUM') != None: +2944 row_df['fumbles_FUM'] = value['fumbles_FUM'] +2945 +2946 if value.get('fumbles_LOST') != None: +2947 row_df['fumbles_LOST'] = value['fumbles_LOST'] +2948 +2949 if value.get('fumbles_REC') != None: +2950 row_df['fumbles_REC'] = value['fumbles_REC'] +2951 +2952 # Defense +2953 if value.get('defensive_TOT') != None: +2954 row_df['defensive_TOT'] = value['defensive_TOT'] +2955 +2956 if value.get('defensive_SOLO') != None: +2957 row_df['defensive_SOLO'] = value['defensive_SOLO'] +2958 +2959 if value.get('defensive_TFL') != None: +2960 row_df['defensive_TFL'] = value['defensive_TFL'] +2961 +2962 if value.get('defensive_QB HUR') != None: +2963 row_df['defensive_QB HUR'] = value['defensive_QB HUR'] +2964 +2965 if value.get('defensive_SACKS') != None: +2966 row_df['defensive_SACKS'] = value['defensive_SACKS'] +2967 +2968 if value.get('defensive_PD') != None: +2969 row_df['defensive_PD'] = value['defensive_PD'] +2970 +2971 if value.get('defensive_TD') != None: +2972 row_df['defensive_TD'] = value['defensive_TD'] +2973 +2974 # interceptions +2975 if value.get('interceptions_INT') != None: +2976 row_df['interceptions_INT'] = value['interceptions_INT'] +2977 +2978 if value.get('interceptions_YDS') != None: +2979 row_df['interceptions_YDS'] = value['interceptions_YDS'] +2980 +2981 if value.get('interceptions_TD') != None: +2982 row_df['interceptions_TD'] = value['interceptions_TD'] +2983 +2984 # punting +2985 if value.get('punting_NO') != None: +2986 row_df['punting_NO'] = value['punting_NO'] +2987 +2988 if value.get('punting_YDS') != None: +2989 row_df['punting_YDS'] = value['punting_YDS'] +2990 +2991 if value.get('punting_AVG') != None: +2992 row_df['punting_AVG'] = value['punting_AVG'] +2993 +2994 if value.get('punting_TB') != None: +2995 row_df['punting_TB'] = value['punting_TB'] +2996 +2997 if value.get('punting_In 20') != None: +2998 row_df['punting_In 20'] = value['punting_In 20'] +2999 +3000 if value.get('punting_LONG') != None: +3001 row_df['punting_LONG'] = value['punting_LONG'] +3002 +3003 # kicking +3004 if value.get('kicking_FG') != None: +3005 row_df['kicking_FG'] = value['kicking_FG'] +3006 +3007 if value.get('kicking_PCT') != None: +3008 row_df['kicking_PCT'] = value['kicking_PCT'] +3009 +3010 if value.get('kicking_LONG') != None: +3011 row_df['kicking_LONG'] = value['kicking_LONG'] +3012 +3013 if value.get('kicking_XP') != None: +3014 row_df['kicking_XP'] = value['kicking_XP'] +3015 +3016 if value.get('kicking_PTS') != None: +3017 row_df['kicking_PTS'] = value['kicking_PTS'] +3018 +3019 # kickReturns +3020 if value.get('kickReturns_NO') != None: +3021 row_df['kickReturns_NO'] = value['kickReturns_NO'] +3022 +3023 if value.get('kickReturns_YDS') != None: +3024 row_df['kickReturns_YDS'] = value['kickReturns_YDS'] +3025 +3026 if value.get('kickReturns_AVG') != None: +3027 row_df['kickReturns_AVG'] = value['kickReturns_AVG'] +3028 +3029 if value.get('kickReturns_TD') != None: +3030 row_df['kickReturns_TD'] = value['kickReturns_TD'] +3031 +3032 if value.get('kickReturns_LONG') != None: +3033 row_df['kickReturns_LONG'] = value['kickReturns_LONG'] +3034 +3035 # puntReturns +3036 if value.get('puntReturns_NO') != None: +3037 row_df['puntReturns_NO'] = value['puntReturns_NO'] +3038 +3039 if value.get('puntReturns_YDS') != None: +3040 row_df['puntReturns_YDS'] = value['puntReturns_YDS'] +3041 +3042 if value.get('puntReturns_AVG') != None: +3043 row_df['puntReturns_AVG'] = value['puntReturns_AVG'] +3044 +3045 if value.get('puntReturns_TD') != None: +3046 row_df['puntReturns_TD'] = value['puntReturns_TD'] +3047 +3048 if value.get('puntReturns_LONG') != None: +3049 row_df['puntReturns_LONG'] = value['puntReturns_LONG'] +3050 +3051 cfb_games_df = pd.concat([cfb_games_df, row_df], ignore_index=True) +3052 del row_df +3053 +3054 cfb_games_df[['passing_COMP', 'passing_ATT'] +3055 ] = cfb_games_df['passing_C/ATT'].str.split('/', expand=True) +3056 +3057 cfb_games_df[['kicking_FGM', 'kicking_FGA'] +3058 ] = cfb_games_df['kicking_FG'].str.split('/', expand=True) +3059 cfb_games_df[['kicking_XPM', 'kicking_XPA'] +3060 ] = cfb_games_df['kicking_XP'].str.split('/', expand=True) +3061 +3062 cfb_games_df = cfb_games_df.fillna(0) +3063 +3064 cfb_games_df = cfb_games_df.astype({ +3065 "passing_COMP": "int", +3066 "passing_ATT": "int", +3067 "kicking_FGM": "int", +3068 "kicking_FGA": "int", +3069 "kicking_XPM": "int", +3070 "kicking_XPA": "int" +3071 }) +3072 # print(cfb_games_df.columns) +3073 +3074 if filter_by_stat_category == False: +3075 cfb_games_df = cfb_games_df.reindex(columns=stat_columns) +3076 +3077 elif filter_by_stat_category == True and stat_category == "passing": +3078 cfb_games_df = cfb_games_df[[ +3079 'game_id', +3080 'team_name', +3081 'team_confrence', +3082 'player_id', +3083 'player_name', +3084 'home_away', +3085 # PASS +3086 'passing_C/ATT', +3087 'passing_COMP', +3088 'passing_ATT', +3089 'passing_YDS', +3090 'passing_AVG', +3091 'passing_TD', +3092 'passing_INT', +3093 'passing_QBR' +3094 ]] +3095 +3096 elif filter_by_stat_category == True and stat_category == "rushing": +3097 cfb_games_df = cfb_games_df[[ +3098 'game_id', +3099 'team_name', +3100 'team_confrence', +3101 'player_id', +3102 'player_name', +3103 'home_away', +3104 # RUSH +3105 'rushing_CAR', +3106 'rushing_YDS', +3107 'rushing_AVG', +3108 'rushing_TD', +3109 'rushing_LONG', +3110 ]] +3111 +3112 elif filter_by_stat_category == True and stat_category == "receiving": +3113 cfb_games_df = cfb_games_df[[ +3114 'game_id', +3115 'team_name', +3116 'team_confrence', +3117 'player_id', +3118 'player_name', +3119 'home_away', +3120 # REC +3121 'receiving_REC', +3122 'receiving_YDS', +3123 'receiving_AVG', +3124 'receiving_TD', +3125 'receiving_LONG' +3126 ]] +3127 +3128 elif filter_by_stat_category == True and stat_category == "fumbles": +3129 cfb_games_df = cfb_games_df[[ +3130 'game_id', +3131 'team_name', +3132 'team_confrence', +3133 'player_id', +3134 'player_name', +3135 'home_away', +3136 # FUM +3137 'fumbles_FUM', +3138 'fumbles_LOST', +3139 'fumbles_REC' +3140 ]] +3141 +3142 elif filter_by_stat_category == True and stat_category == "defensive": +3143 cfb_games_df = cfb_games_df[[ +3144 'game_id', +3145 'team_name', +3146 'team_confrence', +3147 'player_id', +3148 'player_name', +3149 'home_away', +3150 # DEFENSE +3151 'defensive_TOT', +3152 'defensive_SOLO', +3153 'defensive_TFL', +3154 'defensive_QB HUR', +3155 'defensive_SACKS', +3156 'defensive_PD', +3157 'defensive_TD' +3158 ]] +3159 +3160 elif filter_by_stat_category == True and stat_category == "interceptions": +3161 cfb_games_df = cfb_games_df[[ +3162 'game_id', +3163 'team_name', +3164 'team_confrence', +3165 'player_id', +3166 'player_name', +3167 'home_away', +3168 # INT +3169 'interceptions_INT', +3170 'interceptions_YDS', +3171 'interceptions_TD', +3172 ]] +3173 +3174 elif filter_by_stat_category == True and stat_category == "punting": +3175 cfb_games_df = cfb_games_df[[ +3176 'game_id', +3177 'team_name', +3178 'team_confrence', +3179 'player_id', +3180 'player_name', +3181 'home_away', +3182 # PUNT +3183 'punting_NO', +3184 'punting_YDS', +3185 'punting_AVG', +3186 'punting_TB', +3187 'punting_In 20', +3188 'punting_LONG' +3189 ]] +3190 +3191 elif filter_by_stat_category == True and stat_category == "kicking": +3192 cfb_games_df = cfb_games_df[[ +3193 'game_id', +3194 'team_name', +3195 'team_confrence', +3196 'player_id', +3197 'player_name', +3198 'home_away', +3199 # KICK +3200 'kicking_FG', +3201 'kicking_FGM', +3202 'kicking_FGA', +3203 'kicking_PCT', +3204 'kicking_LONG', +3205 'kicking_XP', +3206 'kicking_XPM', +3207 'kicking_XPA', +3208 'kicking_PTS' +3209 ]] +3210 +3211 elif filter_by_stat_category == True and stat_category == "kickReturns": +3212 cfb_games_df = cfb_games_df[[ +3213 'game_id', +3214 'team_name', +3215 'team_confrence', +3216 'player_id', +3217 'player_name', +3218 'home_away', +3219 # KR +3220 'kickReturns_NO', +3221 'kickReturns_YDS', +3222 'kickReturns_AVG', +3223 'kickReturns_TD', +3224 'kickReturns_LONG' +3225 ]] +3226 +3227 elif filter_by_stat_category == True and stat_category == "puntReturns": +3228 cfb_games_df = cfb_games_df[[ +3229 'game_id', +3230 'team_name', +3231 'team_confrence', +3232 'player_id', +3233 'player_name', +3234 'home_away', +3235 # KR +3236 'puntReturns_NO', +3237 'puntReturns_YDS', +3238 'puntReturns_AVG', +3239 'puntReturns_TD', +3240 'puntReturns_LONG' +3241 ]] +3242 +3243 return cfb_games_df+ -Retrives player game stats for a given time frame.
+ +Parameters
+ ++ +
season
(int, mandatory): + Required argument. + Specifies the season you want CFB media information from. + This must be specified, otherwise this package, and by extension + the CFBD API, will not accept the request to get CFB media information.+ +
api_key
(str, optional): + Semi-optional argument. + Ifapi_key
is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + Ifapi_key
is not null, this function will automatically assume that the + inputtedapi_key
is a valid CFBD API key.+ +
api_key_dir
(str, optional): + Optional argument. + Ifapi_key
is set to a string non-empty string, this variable is ignored. + Ifapi_key_dir
is null, andapi_key
is null, + this function will try to find a CFBD API key file in this user's home directory. + Ifapi_key_dir
is set to a string, andapi_key
is null, + this function will assume thatapi_key_dir
is a directory, + and will try to find a CFBD API key file in that directory.+ +
season_type
(str, semi-optional): + Semi-optional argument. + By defualt, this will be set to "regular", for the CFB regular season. + If you want CFB media information for non-regular season games, + setseason_type
to "postseason". + Ifseason_type
is set to anything but "regular" or "postseason", + aValueError()
will be raised.For the following three variables, +at least one must be set to a non-null variable when calling this function.
+ ++ +
week
(int, optional): + Optional argument. + Ifweek
is set to an integer, this function will attempt + to load CFB media information from games in that season, and in that week.+ +
team
(str, optional): + Optional argument. + If you only want CFB media information for a team, + regardless if they are the home/away team, + setteam
to the name of the team you want CFB media information from.+ +
conference_abv
(str, optional): + Optional argument. + If you only want media information from games + involving teams a specific confrence, + setconference_abv
to the abbreviation + of the conference you want game information from.+ +
stat_category
(str, optional): + Optional argument. + If only want stats for a specific stat category, + set this variable to that category.+ +Valid inputs are: +- `passing` +- `rushing` +- `receiving` +- `fumbles` +- `defensive` +- `interceptions` +- `punting` +- `kicking` +- `kickReturns` +- `puntReturns` +
+ +
game_id
(int, optional): + Optional argument. + Ifgame_id
is set to a game ID,get_cfbd_player_game_stats()
will try to get + player game stats just for that game ID.+ +
return_as_dict
(bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandasDataFrame
object, + setreturn_as_dict
toTrue
.Usage
+ ++ +import time + +from cfbd_json_py.games import get_cfbd_player_game_stats + + +cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + +if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get player game stats for week 10 of the 2020 CFB season. + print("Get player game stats for week 10 of the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get postseason player game stats for the 2020 CFB season. + print("Get postseason player game stats for the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2020, + season_type="postseason", + week=1 + ) + print(json_data) + time.sleep(5) + + # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season. + print("Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2018, + team="Alabama" + ) + print(json_data) + time.sleep(5) + + # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season. + print("Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2020, + conference_abv="ACC" + ) + print(json_data) + time.sleep(5) + + # Get get passing stats from players who played in week 7 of the 2017 CFB season. + print("Get get passing stats from players who played in week 7 of the 2017 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2017, + week=7, + stat_category="pasing" + ) + print(json_data) + time.sleep(5) + + # Get player game stats from the 2021 Virbo Citrus Bowl, + # a bowl game that happened in the 2020 CFB season. + print("Get player game stats from the 2021 Virbo Citrus Bowl, a bowl game that happened in the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + api_key=cfbd_key, + season=2020, + game_id=401256199 + ) + print(json_data) + time.sleep(5) + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_player_game_stats( + season=2020, + week=10, + api_key=cfbd_key, + return_as_dict=True + ) + print(json_data) + +else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get player game stats for week 10 of the 2020 CFB season. + print("Get player game stats for week 10 of the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2020, + week=10 + ) + print(json_data) + time.sleep(5) + + # Get postseason player game stats for the 2020 CFB season. + print("Get postseason player game stats for the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2020, + season_type="postseason", + week=1 + ) + print(json_data) + time.sleep(5) + + # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season. + print("Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2018, + team="Alabama" + ) + print(json_data) + time.sleep(5) + + # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season. + print("Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2020, + conference_abv="ACC" + ) + print(json_data) + time.sleep(5) + + # Get get passing stats from players who played in week 7 of the 2017 CFB season. + print("Get get passing stats from players who played in week 7 of the 2017 CFB season.") + json_data = get_cfbd_player_game_stats( + season=2017, + week=7, + stat_category="passing" + ) + print(json_data) + time.sleep(5) + + # Get player game stats from the 2021 Virbo Citrus Bowl, + # a bowl game that happened in the 2020 CFB season, + # between the Aubrun Tigers, and the Northwestern Wildcats. + print("Get player game stats from the 2021 Virbo Citrus Bowl, "+ + "a bowl game that happened in the 2020 CFB season between the Aubrun Tigers, and the Northwestern Wildcats.") + json_data = get_cfbd_player_game_stats( + season=2020, + game_id=401256199 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_player_game_stats( + season=2020, + week=10, + return_as_dict=True + ) + print(json_data) + +
Returns
+ +A pandas
+DataFrame
object with player game stats data, +or (ifreturn_as_dict
is set toTrue
) +a dictionary object with player game stats data.- + + def - get_cfbd_advanced_game_stats( game_id: int, api_key: str = None, api_key_dir: str = None, return_as_dict: bool = False): + get_cfbd_player_advanced_game_stats( game_id: int, api_key: str = None, api_key_dir: str = None, return_as_dict: bool = False): - +- --385def get_cfbd_advanced_game_stats( -386 game_id: int, -387 api_key: str = None, -388 api_key_dir: str = None, -389 return_as_dict: bool = False): -390 """ -391 """ -392 -393 raise NotImplementedError( -394 'This function has yet to be implemented by this version.' -395 ) + +- +3246def get_cfbd_player_advanced_game_stats( +3247 game_id: int, +3248 api_key: str = None, +3249 api_key_dir: str = None, +3250 return_as_dict: bool = False): +3251 """ +3252 Retrives advanced game stats from the CFBD API. +3253 +3254 Parameters +3255 ---------- +3256 +3257 `api_key` (str, optional): +3258 Semi-optional argument. +3259 If `api_key` is null, this function will attempt to load a CFBD API key +3260 from the python environment, or from a file on this computer. +3261 If `api_key` is not null, this function will automatically assume that the +3262 inputted `api_key` is a valid CFBD API key. +3263 +3264 `api_key_dir` (str, optional): +3265 Optional argument. +3266 If `api_key` is set to a string non-empty string, this variable is ignored. +3267 If `api_key_dir` is null, and `api_key` is null, +3268 this function will try to find a CFBD API key file in this user's home directory. +3269 If `api_key_dir` is set to a string, and `api_key` is null, +3270 this function will assume that `api_key_dir` is a directory, +3271 and will try to find a CFBD API key file in that directory. +3272 +3273 `return_as_dict` (bool, semi-optional): +3274 Semi-optional argument. +3275 If you want this function to return the data as a dictionary (read: JSON object), +3276 instead of a pandas `DataFrame` object, +3277 set `return_as_dict` to `True`. +3278 +3279 Usage +3280 ---------- +3281 ``` +3282 import time +3283 +3284 from cfbd_json_py.games import get_cfbd_player_advanced_game_stats +3285 +3286 +3287 cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. +3288 +3289 if cfbd_key != "tigersAreAwsome": +3290 print("Using the user's API key declared in this script for this example.") +3291 +3292 # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, +3293 # and the Oklahoma Sooners Football Program. +3294 print("Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.") +3295 json_data = get_cfbd_player_advanced_game_stats( +3296 api_key=cfbd_key, +3297 game_id=401135278 +3298 ) +3299 print(json_data) +3300 time.sleep(5) +3301 +3302 +3303 # You can also tell this function to just return the API call as +3304 # a Dictionary (read: JSON) object. +3305 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +3306 json_data = get_cfbd_player_advanced_game_stats( +3307 api_key=cfbd_key, +3308 game_id=401135278, +3309 return_as_dict=True +3310 ) +3311 print(json_data) +3312 +3313 else: +3314 # Alternatively, if the CFBD API key exists in this python environment, +3315 # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), +3316 # you could just call these functions directly, without setting the API key +3317 # in the script. +3318 print("Using the user's API key suposedly loaded into this python environment for this example.") +3319 +3320 # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, +3321 # and the Oklahoma Sooners Football Program. +3322 print("Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.") +3323 json_data = get_cfbd_player_advanced_game_stats( +3324 game_id=401135278 +3325 ) +3326 print(json_data) +3327 time.sleep(5) +3328 +3329 +3330 # You can also tell this function to just return the API call as +3331 # a Dictionary (read: JSON) object. +3332 print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") +3333 json_data = get_cfbd_player_advanced_game_stats( +3334 game_id=401135278, +3335 return_as_dict=True +3336 ) +3337 print(json_data) +3338 +3339 ``` +3340 Returns +3341 ---------- +3342 A pandas `DataFrame` object with college football game information, +3343 or (if `return_as_dict` is set to `True`) +3344 a dictionary object with college football game information. +3345 """ +3346 +3347 #now = datetime.now() +3348 usage_df = pd.DataFrame() +3349 ppa_df = pd.DataFrame() +3350 adv_stats_df = pd.DataFrame() +3351 row_df = pd.DataFrame() +3352 url = "https://api.collegefootballdata.com/game/box/advanced" +3353 +3354 ######################################################################################################################################################################################################## +3355 +3356 if api_key != None: +3357 real_api_key = api_key +3358 del api_key +3359 else: +3360 real_api_key = get_cfbd_api_token(api_key_dir=api_key_dir) +3361 +3362 if real_api_key == "tigersAreAwsome": +3363 raise ValueError( +3364 "You actually need to change `cfbd_key` to your CFBD API key.") +3365 elif "Bearer " in real_api_key: +3366 pass +3367 elif "Bearer" in real_api_key: +3368 real_api_key = real_api_key.replace('Bearer', 'Bearer ') +3369 else: +3370 real_api_key = "Bearer " + real_api_key +3371 +3372 # URL builder +3373 ######################################################################################################################################################################################################## +3374 +3375 # Required by API +3376 url += f"?gameId={game_id}" +3377 +3378 headers = { +3379 'Authorization': f'{real_api_key}', +3380 'accept': 'application/json' +3381 } +3382 +3383 response = requests.get(url, headers=headers) +3384 time.sleep(0.1) +3385 +3386 if response.status_code == 200: +3387 pass +3388 elif response.status_code == 401: +3389 raise ConnectionRefusedError( +3390 f'Could not connect. The connection was refused.\nHTTP Status Code 401.' +3391 ) +3392 else: +3393 raise ConnectionError( +3394 f'Could not connect.\nHTTP Status code {response.status_code}' +3395 ) +3396 +3397 json_data = response.json() +3398 +3399 if return_as_dict == True: +3400 return json_data +3401 +3402 home_team_name = json_data['gameInfo']['homeTeam'] +3403 home_points = json_data['gameInfo']['homePoints'] +3404 home_win_prob = json_data['gameInfo']['homeWinProb'] +3405 away_team_name = json_data['gameInfo']['awayTeam'] +3406 away_points = json_data['gameInfo']['awayPoints'] +3407 away_win_prob = json_data['gameInfo']['awayWinProb'] +3408 home_winner = json_data['gameInfo']['homeWinner'] +3409 game_excitement_score = json_data['gameInfo']['excitement'] +3410 +3411 +3412 # Parsing Usage +3413 print("Parsing player usage data.") +3414 for player in tqdm(json_data['players']['usage']): +3415 row_df = pd.DataFrame( +3416 { +3417 "game_id":game_id +3418 }, +3419 index=[0] +3420 ) +3421 row_df['player_name'] = player['player'] +3422 row_df['team'] = player['team'] +3423 row_df['position'] = player['position'] +3424 +3425 row_df['total_usage'] = player['total'] +3426 row_df['q1_usage'] = player['quarter1'] +3427 row_df['q2_usage'] = player['quarter2'] +3428 row_df['q3_usage'] = player['quarter3'] +3429 row_df['q4_usage'] = player['quarter4'] +3430 row_df['rushing_usage'] = player['rushing'] +3431 row_df['passing_usage'] = player['passing'] +3432 +3433 usage_df = pd.concat([usage_df,row_df],ignore_index=True) +3434 del row_df +3435 +3436 # Parsing PPA +3437 print("Parsing player PPA data.") +3438 for player in tqdm(json_data['players']['ppa']): +3439 row_df = pd.DataFrame( +3440 { +3441 "game_id":game_id +3442 }, +3443 index=[0] +3444 ) +3445 row_df['player_name'] = player['player'] +3446 row_df['team'] = player['team'] +3447 row_df['position'] = player['position'] +3448 +3449 row_df['average_ppa_total'] = player['average']['total'] +3450 row_df['average_ppa_q1'] = player['average']['quarter1'] +3451 row_df['average_ppa_q2'] = player['average']['quarter2'] +3452 row_df['average_ppa_q3'] = player['average']['quarter3'] +3453 row_df['average_ppa_q4'] = player['average']['quarter4'] +3454 row_df['average_ppa_rushing'] = player['average']['rushing'] +3455 row_df['average_ppa_passing'] = player['average']['passing'] +3456 +3457 row_df['cumulative_ppa_total'] = player['cumulative']['total'] +3458 row_df['cumulative_ppa_q1'] = player['cumulative']['quarter1'] +3459 row_df['cumulative_ppa_q2'] = player['cumulative']['quarter2'] +3460 row_df['cumulative_ppa_q3'] = player['cumulative']['quarter3'] +3461 row_df['cumulative_ppa_q4'] = player['cumulative']['quarter4'] +3462 row_df['cumulative_ppa_rushing'] = player['cumulative']['rushing'] +3463 row_df['cumulative_ppa_passing'] = player['cumulative']['passing'] +3464 +3465 ppa_df = pd.concat([ppa_df,row_df],ignore_index=True) +3466 +3467 # Join `usage_df` and `ppa_df` together +3468 adv_stats_df = pd.merge( +3469 left=usage_df, +3470 right=ppa_df, +3471 how="outer", +3472 on=["game_id","player_name","team","position"] +3473 ) +3474 +3475 # Add in these columns for completeness. +3476 +3477 adv_stats_df.loc[adv_stats_df["team"]==home_team_name,"home_away"] = "home" +3478 adv_stats_df.loc[adv_stats_df["team"]==home_team_name,"opponent"] = away_team_name +3479 +3480 adv_stats_df.loc[adv_stats_df["team"]==away_team_name,"home_away"] = "away" +3481 adv_stats_df.loc[adv_stats_df["team"]==away_team_name,"opponent"] = home_team_name +3482 +3483 adv_stats_df['home_team'] = home_team_name +3484 adv_stats_df['away_team'] = away_team_name +3485 +3486 adv_stats_df['home_win_prob'] = home_win_prob +3487 adv_stats_df['away_win_prob'] = away_win_prob +3488 +3489 adv_stats_df['home_points'] = home_points +3490 adv_stats_df['away_points'] = away_points +3491 +3492 adv_stats_df['home_winner'] = home_winner +3493 adv_stats_df['game_excitement_score'] = game_excitement_score +3494 +3495 return adv_stats_df+Retrives advanced game stats from the CFBD API.
+ +Parameters
+ ++ +
api_key
(str, optional): + Semi-optional argument. + Ifapi_key
is null, this function will attempt to load a CFBD API key + from the python environment, or from a file on this computer. + Ifapi_key
is not null, this function will automatically assume that the + inputtedapi_key
is a valid CFBD API key.+ +
api_key_dir
(str, optional): + Optional argument. + Ifapi_key
is set to a string non-empty string, this variable is ignored. + Ifapi_key_dir
is null, andapi_key
is null, + this function will try to find a CFBD API key file in this user's home directory. + Ifapi_key_dir
is set to a string, andapi_key
is null, + this function will assume thatapi_key_dir
is a directory, + and will try to find a CFBD API key file in that directory.+ +
return_as_dict
(bool, semi-optional): + Semi-optional argument. + If you want this function to return the data as a dictionary (read: JSON object), + instead of a pandasDataFrame
object, + setreturn_as_dict
toTrue
.Usage
+ ++ +import time + +from cfbd_json_py.games import get_cfbd_player_advanced_game_stats + + +cfbd_key = "tigersAreAwsome" # placeholder for your CFBD API Key. + +if cfbd_key != "tigersAreAwsome": + print("Using the user's API key declared in this script for this example.") + + # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, + # and the Oklahoma Sooners Football Program. + print("Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.") + json_data = get_cfbd_player_advanced_game_stats( + api_key=cfbd_key, + game_id=401135278 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_player_advanced_game_stats( + api_key=cfbd_key, + game_id=401135278, + return_as_dict=True + ) + print(json_data) + +else: + # Alternatively, if the CFBD API key exists in this python environment, + # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(), + # you could just call these functions directly, without setting the API key + # in the script. + print("Using the user's API key suposedly loaded into this python environment for this example.") + + # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, + # and the Oklahoma Sooners Football Program. + print("Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.") + json_data = get_cfbd_player_advanced_game_stats( + game_id=401135278 + ) + print(json_data) + time.sleep(5) + + + # You can also tell this function to just return the API call as + # a Dictionary (read: JSON) object. + print("You can also tell this function to just return the API call as a Dictionary (read: JSON) object.") + json_data = get_cfbd_player_advanced_game_stats( + game_id=401135278, + return_as_dict=True + ) + print(json_data) + +
Returns
+ +A pandas
+DataFrame
object with college football game information, +or (ifreturn_as_dict
is set toTrue
) +a dictionary object with college football game information.@@ -1102,22 +8386,28 @@ Returns
-404def get_cfbd_live_scoreboard( -405 api_key: str = None, -406 api_key_dir: str = None, -407 ncaa_division: str = "fbs", -408 conference: str = None): -409 """ -410 -411 """ -412 -413 raise NotImplementedError( -414 'This function has yet to be implemented by this version.' -415 ) +- +3505def get_cfbd_live_scoreboard( +3506 api_key: str = None, +3507 api_key_dir: str = None, +3508 ncaa_division: str = "fbs", +3509 conference: str = None): +3510 """ +3511 YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! +3512 To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata +3513 +3514 +3515 """ +3516 +3517 raise NotImplementedError( +3518 'This function has yet to be implemented by this version.' +3519 )+YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! +To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata
+@@ -1131,27 +8421,31 @@ Returns
-418def get_cfbd_weather_info( -419 api_key: str = None, -420 api_key_dir: str = None, -421 ncaa_division: str = "fbs", -422 game_id: int = None, -423 # `game_id` and/or `year` must be not null for this function to work. -424 season: int = None, -425 week: int = None, -426 season_type: str = "regular", # "regular", "postseason", or "both" -427 conference: str = None): -428 """ -429 -430 """ -431 -432 raise NotImplementedError( -433 'This function has yet to be implemented by this version.' -434 ) +- +3522def get_cfbd_weather_info( +3523 api_key: str = None, +3524 api_key_dir: str = None, +3525 ncaa_division: str = "fbs", +3526 game_id: int = None, +3527 # `game_id` and/or `year` must be not null for this function to work. +3528 season: int = None, +3529 week: int = None, +3530 season_type: str = "regular", # "regular", "postseason", or "both" +3531 conference: str = None): +3532 """ +3533 YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! +3534 To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata +3535 """ +3536 +3537 raise NotImplementedError( +3538 'This function has yet to be implemented by this version.' +3539 )+ diff --git a/docs/cfbd_json_py/metrics.html b/docs/cfbd_json_py/metrics.html index c650387..42e2a2e 100644 --- a/docs/cfbd_json_py/metrics.html +++ b/docs/cfbd_json_py/metrics.html @@ -73,135 +73,136 @@YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! +To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata
+
@@ -217,17 +218,17 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: metrics.py - 4# Purpose: Houses functions pertaining to various CFB stats within the CFBD API. - 5#################################################################################################### - 6 - 7def get_cfbd_predicted_ppa_from_down_distance( - 8 down: int, - 9 distance: int, - 10 api_key: str = None, - 11 api_key_dir: str = None): - 12 """ - 13 """ - 14 - 15 raise NotImplementedError( - 16 'This function has yet to be implemented by this version.' - 17 ) - 18 + 2# Last Updated Date: 10/06/2023 07:53 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: metrics.py + 5# Purpose: Houses functions pertaining to various CFB stats within the CFBD API. + 6#################################################################################################### + 7 + 8def get_cfbd_predicted_ppa_from_down_distance( + 9 down: int, + 10 distance: int, + 11 api_key: str = None, + 12 api_key_dir: str = None): + 13 """ + 14 """ + 15 + 16 raise NotImplementedError( + 17 'This function has yet to be implemented by this version.' + 18 ) 19 - 20def get_cfbd_team_ppa_data( - 21 api_key: str = None, - 22 api_key_dir: str = None, - 23 season: int = None, - 24 team: str = None, - 25 # `year` and/or `team` must be not null for this function to work. - 26 conference_abv: str = None, - 27 exclude_garbage_time: bool = False, - 28 - 29 return_as_dict: bool = False): - 30 """ - 31 - 32 """ - 33 - 34 raise NotImplementedError( - 35 'This function has yet to be implemented by this version.' - 36 ) - 37 + 20 + 21def get_cfbd_team_ppa_data( + 22 api_key: str = None, + 23 api_key_dir: str = None, + 24 season: int = None, + 25 team: str = None, + 26 # `year` and/or `team` must be not null for this function to work. + 27 conference_abv: str = None, + 28 exclude_garbage_time: bool = False, + 29 + 30 return_as_dict: bool = False): + 31 """ + 32 + 33 """ + 34 + 35 raise NotImplementedError( + 36 'This function has yet to be implemented by this version.' + 37 ) 38 - 39def get_cfbd_game_ppa_data( - 40 season: int, - 41 api_key: str = None, - 42 api_key_dir: str = None, - 43 week: int = None, - 44 team: str = None, - 45 conference_abv: str = None, - 46 exclude_garbage_time: bool = False, - 47 season_type: str = "regular", # "regular" or "postseason" - 48 - 49 return_as_dict: bool = False): - 50 """ - 51 - 52 """ - 53 - 54 raise NotImplementedError( - 55 'This function has yet to be implemented by this version.' - 56 ) - 57 + 39 + 40def get_cfbd_game_ppa_data( + 41 season: int, + 42 api_key: str = None, + 43 api_key_dir: str = None, + 44 week: int = None, + 45 team: str = None, + 46 conference_abv: str = None, + 47 exclude_garbage_time: bool = False, + 48 season_type: str = "regular", # "regular" or "postseason" + 49 + 50 return_as_dict: bool = False): + 51 """ + 52 + 53 """ + 54 + 55 raise NotImplementedError( + 56 'This function has yet to be implemented by this version.' + 57 ) 58 - 59def get_cfbd_game_player_ppa_data( - 60 season: int, - 61 api_key: str = None, - 62 api_key_dir: str = None, - 63 week: int = None, - 64 team: str = None, - 65 # A week or team must be specified - 66 position: str = None, - 67 player_id: int = None, - 68 play_threshold: int = None, - 69 exclude_garbage_time: bool = False, - 70 season_type: str = "regular", # "regular" or "postseason" - 71 - 72 return_as_dict: bool = False): - 73 """ - 74 - 75 """ - 76 - 77 raise NotImplementedError( - 78 'This function has yet to be implemented by this version.' - 79 ) - 80 + 59 + 60def get_cfbd_game_player_ppa_data( + 61 season: int, + 62 api_key: str = None, + 63 api_key_dir: str = None, + 64 week: int = None, + 65 team: str = None, + 66 # A week or team must be specified + 67 position: str = None, + 68 player_id: int = None, + 69 play_threshold: int = None, + 70 exclude_garbage_time: bool = False, + 71 season_type: str = "regular", # "regular" or "postseason" + 72 + 73 return_as_dict: bool = False): + 74 """ + 75 + 76 """ + 77 + 78 raise NotImplementedError( + 79 'This function has yet to be implemented by this version.' + 80 ) 81 - 82def get_cfbd_season_player_ppa_data( - 83 season: int, - 84 api_key: str = None, - 85 api_key_dir: str = None, - 86 team: str = None, - 87 conference_abv: str = None, - 88 position: str = None, - 89 player_id: int = None, - 90 play_threshold: int = None, - 91 exclude_garbage_time: bool = False, - 92 - 93 return_as_dict: bool = False): - 94 """ - 95 - 96 """ - 97 raise NotImplementedError( - 98 'This function has yet to be implemented by this version.' - 99 ) -100 + 82 + 83def get_cfbd_season_player_ppa_data( + 84 season: int, + 85 api_key: str = None, + 86 api_key_dir: str = None, + 87 team: str = None, + 88 conference_abv: str = None, + 89 position: str = None, + 90 player_id: int = None, + 91 play_threshold: int = None, + 92 exclude_garbage_time: bool = False, + 93 + 94 return_as_dict: bool = False): + 95 """ + 96 + 97 """ + 98 raise NotImplementedError( + 99 'This function has yet to be implemented by this version.' +100 ) 101 -102def get_cfbd_game_win_probability_data( -103 game_id: int, -104 api_key: str = None, -105 api_key_dir: str = None, -106 -107 return_as_dict: bool = False): -108 """ -109 -110 """ -111 raise NotImplementedError( -112 'This function has yet to be implemented by this version.' -113 ) -114 +102 +103def get_cfbd_game_win_probability_data( +104 game_id: int, +105 api_key: str = None, +106 api_key_dir: str = None, +107 +108 return_as_dict: bool = False): +109 """ +110 +111 """ +112 raise NotImplementedError( +113 'This function has yet to be implemented by this version.' +114 ) 115 -116def get_cfbd_pregame_win_probability_data( -117 season: int, -118 api_key: str = None, -119 api_key_dir: str = None, -120 week: int = None, -121 team: str = None, -122 season_type: str = "regular", # "regular" or "postseason" -123 -124 return_as_dict: bool = False): -125 """ -126 -127 """ -128 raise NotImplementedError( -129 'This function has yet to be implemented by this version.' -130 ) +116 +117def get_cfbd_pregame_win_probability_data( +118 season: int, +119 api_key: str = None, +120 api_key_dir: str = None, +121 week: int = None, +122 team: str = None, +123 season_type: str = "regular", # "regular" or "postseason" +124 +125 return_as_dict: bool = False): +126 """ +127 +128 """ +129 raise NotImplementedError( +130 'This function has yet to be implemented by this version.' +131 )
-8def get_cfbd_predicted_ppa_from_down_distance( - 9 down: int, -10 distance: int, -11 api_key: str = None, -12 api_key_dir: str = None): -13 """ -14 """ -15 -16 raise NotImplementedError( -17 'This function has yet to be implemented by this version.' -18 ) +@@ -245,23 +246,23 @@9def get_cfbd_predicted_ppa_from_down_distance( +10 down: int, +11 distance: int, +12 api_key: str = None, +13 api_key_dir: str = None): +14 """ +15 """ +16 +17 raise NotImplementedError( +18 'This function has yet to be implemented by this version.' +19 )
-21def get_cfbd_team_ppa_data( -22 api_key: str = None, -23 api_key_dir: str = None, -24 season: int = None, -25 team: str = None, -26 # `year` and/or `team` must be not null for this function to work. -27 conference_abv: str = None, -28 exclude_garbage_time: bool = False, -29 -30 return_as_dict: bool = False): -31 """ -32 -33 """ -34 -35 raise NotImplementedError( -36 'This function has yet to be implemented by this version.' -37 ) +@@ -279,24 +280,24 @@22def get_cfbd_team_ppa_data( +23 api_key: str = None, +24 api_key_dir: str = None, +25 season: int = None, +26 team: str = None, +27 # `year` and/or `team` must be not null for this function to work. +28 conference_abv: str = None, +29 exclude_garbage_time: bool = False, +30 +31 return_as_dict: bool = False): +32 """ +33 +34 """ +35 +36 raise NotImplementedError( +37 'This function has yet to be implemented by this version.' +38 )
-40def get_cfbd_game_ppa_data( -41 season: int, -42 api_key: str = None, -43 api_key_dir: str = None, -44 week: int = None, -45 team: str = None, -46 conference_abv: str = None, -47 exclude_garbage_time: bool = False, -48 season_type: str = "regular", # "regular" or "postseason" -49 -50 return_as_dict: bool = False): -51 """ -52 -53 """ -54 -55 raise NotImplementedError( -56 'This function has yet to be implemented by this version.' -57 ) +@@ -314,27 +315,27 @@41def get_cfbd_game_ppa_data( +42 season: int, +43 api_key: str = None, +44 api_key_dir: str = None, +45 week: int = None, +46 team: str = None, +47 conference_abv: str = None, +48 exclude_garbage_time: bool = False, +49 season_type: str = "regular", # "regular" or "postseason" +50 +51 return_as_dict: bool = False): +52 """ +53 +54 """ +55 +56 raise NotImplementedError( +57 'This function has yet to be implemented by this version.' +58 )
-60def get_cfbd_game_player_ppa_data( -61 season: int, -62 api_key: str = None, -63 api_key_dir: str = None, -64 week: int = None, -65 team: str = None, -66 # A week or team must be specified -67 position: str = None, -68 player_id: int = None, -69 play_threshold: int = None, -70 exclude_garbage_time: bool = False, -71 season_type: str = "regular", # "regular" or "postseason" -72 -73 return_as_dict: bool = False): -74 """ -75 -76 """ -77 -78 raise NotImplementedError( -79 'This function has yet to be implemented by this version.' -80 ) +@@ -352,24 +353,24 @@61def get_cfbd_game_player_ppa_data( +62 season: int, +63 api_key: str = None, +64 api_key_dir: str = None, +65 week: int = None, +66 team: str = None, +67 # A week or team must be specified +68 position: str = None, +69 player_id: int = None, +70 play_threshold: int = None, +71 exclude_garbage_time: bool = False, +72 season_type: str = "regular", # "regular" or "postseason" +73 +74 return_as_dict: bool = False): +75 """ +76 +77 """ +78 +79 raise NotImplementedError( +80 'This function has yet to be implemented by this version.' +81 )
-83def get_cfbd_season_player_ppa_data( - 84 season: int, - 85 api_key: str = None, - 86 api_key_dir: str = None, - 87 team: str = None, - 88 conference_abv: str = None, - 89 position: str = None, - 90 player_id: int = None, - 91 play_threshold: int = None, - 92 exclude_garbage_time: bool = False, - 93 - 94 return_as_dict: bool = False): - 95 """ - 96 - 97 """ - 98 raise NotImplementedError( - 99 'This function has yet to be implemented by this version.' -100 ) +@@ -387,18 +388,18 @@84def get_cfbd_season_player_ppa_data( + 85 season: int, + 86 api_key: str = None, + 87 api_key_dir: str = None, + 88 team: str = None, + 89 conference_abv: str = None, + 90 position: str = None, + 91 player_id: int = None, + 92 play_threshold: int = None, + 93 exclude_garbage_time: bool = False, + 94 + 95 return_as_dict: bool = False): + 96 """ + 97 + 98 """ + 99 raise NotImplementedError( +100 'This function has yet to be implemented by this version.' +101 )
-103def get_cfbd_game_win_probability_data( -104 game_id: int, -105 api_key: str = None, -106 api_key_dir: str = None, -107 -108 return_as_dict: bool = False): -109 """ -110 -111 """ -112 raise NotImplementedError( -113 'This function has yet to be implemented by this version.' -114 ) +@@ -416,21 +417,21 @@104def get_cfbd_game_win_probability_data( +105 game_id: int, +106 api_key: str = None, +107 api_key_dir: str = None, +108 +109 return_as_dict: bool = False): +110 """ +111 +112 """ +113 raise NotImplementedError( +114 'This function has yet to be implemented by this version.' +115 )
-117def get_cfbd_pregame_win_probability_data( -118 season: int, -119 api_key: str = None, -120 api_key_dir: str = None, -121 week: int = None, -122 team: str = None, -123 season_type: str = "regular", # "regular" or "postseason" -124 -125 return_as_dict: bool = False): -126 """ -127 -128 """ -129 raise NotImplementedError( -130 'This function has yet to be implemented by this version.' -131 ) +diff --git a/docs/cfbd_json_py/players.html b/docs/cfbd_json_py/players.html index 5fb7ac8..2cbd08d 100644 --- a/docs/cfbd_json_py/players.html +++ b/docs/cfbd_json_py/players.html @@ -67,95 +67,96 @@118def get_cfbd_pregame_win_probability_data( +119 season: int, +120 api_key: str = None, +121 api_key_dir: str = None, +122 week: int = None, +123 team: str = None, +124 season_type: str = "regular", # "regular" or "postseason" +125 +126 return_as_dict: bool = False): +127 """ +128 +129 """ +130 raise NotImplementedError( +131 'This function has yet to be implemented by this version.' +132 )
@@ -171,21 +172,21 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: players.py - 4# Purpose: Houses functions pertaining to CFB player data within the CFBD API. - 5#################################################################################################### - 6 + 2# Last Updated Date: 10/06/2023 07:53 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: players.py + 5# Purpose: Houses functions pertaining to CFB player data within the CFBD API. + 6#################################################################################################### 7 - 8def cfbd_player_search( - 9 search_str: str, -10 api_key: str = None, -11 api_key_dir: str = None, -12 position: str = None, -13 team: str = None, -14 season: int = None, -15 -16 return_as_dict: bool = False): -17 """ -18 -19 """ -20 raise NotImplementedError( -21 'This function has yet to be implemented by this version.' -22 ) -23 + 8 + 9def cfbd_player_search( +10 search_str: str, +11 api_key: str = None, +12 api_key_dir: str = None, +13 position: str = None, +14 team: str = None, +15 season: int = None, +16 +17 return_as_dict: bool = False): +18 """ +19 +20 """ +21 raise NotImplementedError( +22 'This function has yet to be implemented by this version.' +23 ) 24 -25def get_cfbd_player_usage( -26 season: int, -27 api_key: str = None, -28 api_key_dir: str = None, -29 team: str = None, -30 conference_abv: str = None, -31 position: str = None, -32 player_id: int = None, -33 exclude_garbage_time: bool = False, -34 return_as_dict: bool = False): -35 """ -36 -37 """ -38 raise NotImplementedError( -39 'This function has yet to be implemented by this version.' -40 ) -41 +25 +26def get_cfbd_player_usage( +27 season: int, +28 api_key: str = None, +29 api_key_dir: str = None, +30 team: str = None, +31 conference_abv: str = None, +32 position: str = None, +33 player_id: int = None, +34 exclude_garbage_time: bool = False, +35 return_as_dict: bool = False): +36 """ +37 +38 """ +39 raise NotImplementedError( +40 'This function has yet to be implemented by this version.' +41 ) 42 -43def get_cfbd_returning_production( -44 season: int, -45 api_key: str = None, -46 api_key_dir: str = None, -47 team: str = None, -48 conference_abv: str = None, -49 -50 return_as_dict: bool = False): -51 """ -52 -53 """ -54 raise NotImplementedError( -55 'This function has yet to be implemented by this version.' -56 ) -57 +43 +44def get_cfbd_returning_production( +45 season: int, +46 api_key: str = None, +47 api_key_dir: str = None, +48 team: str = None, +49 conference_abv: str = None, +50 +51 return_as_dict: bool = False): +52 """ +53 +54 """ +55 raise NotImplementedError( +56 'This function has yet to be implemented by this version.' +57 ) 58 -59def get_cfbd_player_season_stats( -60 season: int, -61 api_key: str = None, -62 api_key_dir: str = None, -63 team: str = None, -64 conference_abv: str = None, -65 start_week: int = None, -66 end_week: int = None, -67 season_type: str = 'regular', # "regular", "postseason", or "both" -68 stat_category: str = None, -69 -70 return_as_dict: bool = False): -71 """ -72 -73 """ -74 raise NotImplementedError( -75 'This function has yet to be implemented by this version.' -76 ) -77 +59 +60def get_cfbd_player_season_stats( +61 season: int, +62 api_key: str = None, +63 api_key_dir: str = None, +64 team: str = None, +65 conference_abv: str = None, +66 start_week: int = None, +67 end_week: int = None, +68 season_type: str = 'regular', # "regular", "postseason", or "both" +69 stat_category: str = None, +70 +71 return_as_dict: bool = False): +72 """ +73 +74 """ +75 raise NotImplementedError( +76 'This function has yet to be implemented by this version.' +77 ) 78 -79def get_cfbd_transfer_portal_data( -80 season: int, -81 api_key: str = None, -82 api_key_dir: str = None, -83 -84 return_as_dict: bool = False): -85 """ -86 -87 """ -88 raise NotImplementedError( -89 'This function has yet to be implemented by this version.' -90 ) +79 +80def get_cfbd_transfer_portal_data( +81 season: int, +82 api_key: str = None, +83 api_key_dir: str = None, +84 +85 return_as_dict: bool = False): +86 """ +87 +88 """ +89 raise NotImplementedError( +90 'This function has yet to be implemented by this version.' +91 )
-9def cfbd_player_search( -10 search_str: str, -11 api_key: str = None, -12 api_key_dir: str = None, -13 position: str = None, -14 team: str = None, -15 season: int = None, -16 -17 return_as_dict: bool = False): -18 """ -19 -20 """ -21 raise NotImplementedError( -22 'This function has yet to be implemented by this version.' -23 ) +@@ -203,22 +204,22 @@10def cfbd_player_search( +11 search_str: str, +12 api_key: str = None, +13 api_key_dir: str = None, +14 position: str = None, +15 team: str = None, +16 season: int = None, +17 +18 return_as_dict: bool = False): +19 """ +20 +21 """ +22 raise NotImplementedError( +23 'This function has yet to be implemented by this version.' +24 )
-26def get_cfbd_player_usage( -27 season: int, -28 api_key: str = None, -29 api_key_dir: str = None, -30 team: str = None, -31 conference_abv: str = None, -32 position: str = None, -33 player_id: int = None, -34 exclude_garbage_time: bool = False, -35 return_as_dict: bool = False): -36 """ -37 -38 """ -39 raise NotImplementedError( -40 'This function has yet to be implemented by this version.' -41 ) +@@ -236,20 +237,20 @@27def get_cfbd_player_usage( +28 season: int, +29 api_key: str = None, +30 api_key_dir: str = None, +31 team: str = None, +32 conference_abv: str = None, +33 position: str = None, +34 player_id: int = None, +35 exclude_garbage_time: bool = False, +36 return_as_dict: bool = False): +37 """ +38 +39 """ +40 raise NotImplementedError( +41 'This function has yet to be implemented by this version.' +42 )
-44def get_cfbd_returning_production( -45 season: int, -46 api_key: str = None, -47 api_key_dir: str = None, -48 team: str = None, -49 conference_abv: str = None, -50 -51 return_as_dict: bool = False): -52 """ -53 -54 """ -55 raise NotImplementedError( -56 'This function has yet to be implemented by this version.' -57 ) +@@ -267,24 +268,24 @@45def get_cfbd_returning_production( +46 season: int, +47 api_key: str = None, +48 api_key_dir: str = None, +49 team: str = None, +50 conference_abv: str = None, +51 +52 return_as_dict: bool = False): +53 """ +54 +55 """ +56 raise NotImplementedError( +57 'This function has yet to be implemented by this version.' +58 )
-60def get_cfbd_player_season_stats( -61 season: int, -62 api_key: str = None, -63 api_key_dir: str = None, -64 team: str = None, -65 conference_abv: str = None, -66 start_week: int = None, -67 end_week: int = None, -68 season_type: str = 'regular', # "regular", "postseason", or "both" -69 stat_category: str = None, -70 -71 return_as_dict: bool = False): -72 """ -73 -74 """ -75 raise NotImplementedError( -76 'This function has yet to be implemented by this version.' -77 ) +@@ -302,18 +303,18 @@61def get_cfbd_player_season_stats( +62 season: int, +63 api_key: str = None, +64 api_key_dir: str = None, +65 team: str = None, +66 conference_abv: str = None, +67 start_week: int = None, +68 end_week: int = None, +69 season_type: str = 'regular', # "regular", "postseason", or "both" +70 stat_category: str = None, +71 +72 return_as_dict: bool = False): +73 """ +74 +75 """ +76 raise NotImplementedError( +77 'This function has yet to be implemented by this version.' +78 )
-80def get_cfbd_transfer_portal_data( -81 season: int, -82 api_key: str = None, -83 api_key_dir: str = None, -84 -85 return_as_dict: bool = False): -86 """ -87 -88 """ -89 raise NotImplementedError( -90 'This function has yet to be implemented by this version.' -91 ) +diff --git a/docs/cfbd_json_py/plays.html b/docs/cfbd_json_py/plays.html index 512442b..aa9610c 100644 --- a/docs/cfbd_json_py/plays.html +++ b/docs/cfbd_json_py/plays.html @@ -67,101 +67,102 @@81def get_cfbd_transfer_portal_data( +82 season: int, +83 api_key: str = None, +84 api_key_dir: str = None, +85 +86 return_as_dict: bool = False): +87 """ +88 +89 """ +90 raise NotImplementedError( +91 'This function has yet to be implemented by this version.' +92 )
@@ -177,28 +178,28 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: plays.py - 4# Purpose: Houses functions pertaining to CFB play data within the CFBD API. - 5#################################################################################################### - 6 - 7def get_cfbd_pbp_data( - 8 season: int, - 9 api_key: str = None, -10 api_key_dir: str = None, -11 week: int = None, -12 # required if team, offense, or defense, not specified -13 team: str = None, -14 offensive_team: str = None, -15 defensive_team: str = None, -16 conference_abv: str = None, -17 offensive_conference_abv: str = None, -18 defensive_conference_abv: str = None, -19 play_type: int = None, -20 ncaa_division: str = "fbs", -21 -22 return_as_dict: bool = False): -23 """ -24 -25 """ -26 raise NotImplementedError( -27 'This function has yet to be implemented by this version.' -28 ) -29 + 2# Last Updated Date: 10/06/2023 07:53 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: plays.py + 5# Purpose: Houses functions pertaining to CFB play data within the CFBD API. + 6#################################################################################################### + 7 + 8def get_cfbd_pbp_data( + 9 season: int, +10 api_key: str = None, +11 api_key_dir: str = None, +12 week: int = None, +13 # required if team, offense, or defense, not specified +14 team: str = None, +15 offensive_team: str = None, +16 defensive_team: str = None, +17 conference_abv: str = None, +18 offensive_conference_abv: str = None, +19 defensive_conference_abv: str = None, +20 play_type: int = None, +21 ncaa_division: str = "fbs", +22 +23 return_as_dict: bool = False): +24 """ +25 +26 """ +27 raise NotImplementedError( +28 'This function has yet to be implemented by this version.' +29 ) 30 -31def get_cfbd_pbp_play_types( -32 api_key: str = None, -33 api_key_dir: str = None, -34 -35 return_as_dict: bool = False): -36 """ -37 -38 """ -39 raise NotImplementedError( -40 'This function has yet to be implemented by this version.' -41 ) -42 +31 +32def get_cfbd_pbp_play_types( +33 api_key: str = None, +34 api_key_dir: str = None, +35 +36 return_as_dict: bool = False): +37 """ +38 +39 """ +40 raise NotImplementedError( +41 'This function has yet to be implemented by this version.' +42 ) 43 -44def get_cfbd_pbp_stats( -45 season: int, -46 api_key: str = None, -47 api_key_dir: str = None, -48 week: int = None, -49 team: str = None, -50 game_id: int = None, -51 athlete_id: int = None, -52 stat_type_id: int = None, -53 season_type: str = "regular", # "regular", "postseason", or "both" -54 conference_abv: str = None, -55 -56 return_as_dict: bool = False): -57 """ -58 -59 """ -60 raise NotImplementedError( -61 'This function has yet to be implemented by this version.' -62 ) -63 +44 +45def get_cfbd_pbp_stats( +46 season: int, +47 api_key: str = None, +48 api_key_dir: str = None, +49 week: int = None, +50 team: str = None, +51 game_id: int = None, +52 athlete_id: int = None, +53 stat_type_id: int = None, +54 season_type: str = "regular", # "regular", "postseason", or "both" +55 conference_abv: str = None, +56 +57 return_as_dict: bool = False): +58 """ +59 +60 """ +61 raise NotImplementedError( +62 'This function has yet to be implemented by this version.' +63 ) 64 -65def get_cfbd_pbp_stat_types( -66 api_key: str = None, -67 api_key_dir: str = None, -68 -69 return_as_dict: bool = False): -70 """ -71 -72 """ -73 raise NotImplementedError( -74 'This function has yet to be implemented by this version.' -75 ) -76 +65 +66def get_cfbd_pbp_stat_types( +67 api_key: str = None, +68 api_key_dir: str = None, +69 +70 return_as_dict: bool = False): +71 """ +72 +73 """ +74 raise NotImplementedError( +75 'This function has yet to be implemented by this version.' +76 ) 77 -78#################################################################################################### -79# Patreon Only Functions. -80# No cacheing, because the entire point of these functions are to get people -81# data ASAP, and right before kickoff. -82#################################################################################################### -83 +78 +79#################################################################################################### +80# Patreon Only Functions. +81# No cacheing, because the entire point of these functions are to get people +82# data ASAP, and right before kickoff. +83#################################################################################################### 84 -85def get_cfbd_live_pbp_data( -86 game_id: int, -87 api_key: str = None, -88 api_key_dir: str = None, -89 -90 return_as_dict: bool = False): -91 """ -92 -93 """ -94 raise NotImplementedError( -95 'This function has yet to be implemented by this version.' -96 ) +85 +86def get_cfbd_live_pbp_data( +87 game_id: int, +88 api_key: str = None, +89 api_key_dir: str = None, +90 +91 return_as_dict: bool = False): +92 """ +93 +94 """ +95 raise NotImplementedError( +96 'This function has yet to be implemented by this version.' +97 )
-8def get_cfbd_pbp_data( - 9 season: int, -10 api_key: str = None, -11 api_key_dir: str = None, -12 week: int = None, -13 # required if team, offense, or defense, not specified -14 team: str = None, -15 offensive_team: str = None, -16 defensive_team: str = None, -17 conference_abv: str = None, -18 offensive_conference_abv: str = None, -19 defensive_conference_abv: str = None, -20 play_type: int = None, -21 ncaa_division: str = "fbs", -22 -23 return_as_dict: bool = False): -24 """ -25 -26 """ -27 raise NotImplementedError( -28 'This function has yet to be implemented by this version.' -29 ) +@@ -216,17 +217,17 @@9def get_cfbd_pbp_data( +10 season: int, +11 api_key: str = None, +12 api_key_dir: str = None, +13 week: int = None, +14 # required if team, offense, or defense, not specified +15 team: str = None, +16 offensive_team: str = None, +17 defensive_team: str = None, +18 conference_abv: str = None, +19 offensive_conference_abv: str = None, +20 defensive_conference_abv: str = None, +21 play_type: int = None, +22 ncaa_division: str = "fbs", +23 +24 return_as_dict: bool = False): +25 """ +26 +27 """ +28 raise NotImplementedError( +29 'This function has yet to be implemented by this version.' +30 )
-32def get_cfbd_pbp_play_types( -33 api_key: str = None, -34 api_key_dir: str = None, -35 -36 return_as_dict: bool = False): -37 """ -38 -39 """ -40 raise NotImplementedError( -41 'This function has yet to be implemented by this version.' -42 ) +@@ -244,25 +245,25 @@33def get_cfbd_pbp_play_types( +34 api_key: str = None, +35 api_key_dir: str = None, +36 +37 return_as_dict: bool = False): +38 """ +39 +40 """ +41 raise NotImplementedError( +42 'This function has yet to be implemented by this version.' +43 )
-45def get_cfbd_pbp_stats( -46 season: int, -47 api_key: str = None, -48 api_key_dir: str = None, -49 week: int = None, -50 team: str = None, -51 game_id: int = None, -52 athlete_id: int = None, -53 stat_type_id: int = None, -54 season_type: str = "regular", # "regular", "postseason", or "both" -55 conference_abv: str = None, -56 -57 return_as_dict: bool = False): -58 """ -59 -60 """ -61 raise NotImplementedError( -62 'This function has yet to be implemented by this version.' -63 ) +@@ -280,17 +281,17 @@46def get_cfbd_pbp_stats( +47 season: int, +48 api_key: str = None, +49 api_key_dir: str = None, +50 week: int = None, +51 team: str = None, +52 game_id: int = None, +53 athlete_id: int = None, +54 stat_type_id: int = None, +55 season_type: str = "regular", # "regular", "postseason", or "both" +56 conference_abv: str = None, +57 +58 return_as_dict: bool = False): +59 """ +60 +61 """ +62 raise NotImplementedError( +63 'This function has yet to be implemented by this version.' +64 )
-66def get_cfbd_pbp_stat_types( -67 api_key: str = None, -68 api_key_dir: str = None, -69 -70 return_as_dict: bool = False): -71 """ -72 -73 """ -74 raise NotImplementedError( -75 'This function has yet to be implemented by this version.' -76 ) +@@ -308,18 +309,18 @@67def get_cfbd_pbp_stat_types( +68 api_key: str = None, +69 api_key_dir: str = None, +70 +71 return_as_dict: bool = False): +72 """ +73 +74 """ +75 raise NotImplementedError( +76 'This function has yet to be implemented by this version.' +77 )
-86def get_cfbd_live_pbp_data( -87 game_id: int, -88 api_key: str = None, -89 api_key_dir: str = None, -90 -91 return_as_dict: bool = False): -92 """ -93 -94 """ -95 raise NotImplementedError( -96 'This function has yet to be implemented by this version.' -97 ) +diff --git a/docs/cfbd_json_py/rankings.html b/docs/cfbd_json_py/rankings.html index 43343d5..23125cd 100644 --- a/docs/cfbd_json_py/rankings.html +++ b/docs/cfbd_json_py/rankings.html @@ -55,25 +55,26 @@87def get_cfbd_live_pbp_data( +88 game_id: int, +89 api_key: str = None, +90 api_key_dir: str = None, +91 +92 return_as_dict: bool = False): +93 """ +94 +95 """ +96 raise NotImplementedError( +97 'This function has yet to be implemented by this version.' +98 )
@@ -89,20 +90,20 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: rankings.py - 4# Purpose: Houses functions pertaining to CFB poll data within the CFBD API. - 5#################################################################################################### - 6 - 7def get_cfbd_poll_rankings( - 8 season: int, - 9 api_key: str = None, -10 api_key_dir: str = None, -11 week: int = None, -12 season_type: str = "regular", # "regular" or "postseason" -13 -14 return_as_dict: bool = False): -15 """ -16 -17 """ -18 raise NotImplementedError( -19 'This function has yet to be implemented by this version.' -20 ) + 2# Last Updated Date: 10/06/2023 07:53 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: rankings.py + 5# Purpose: Houses functions pertaining to CFB poll data within the CFBD API. + 6#################################################################################################### + 7 + 8def get_cfbd_poll_rankings( + 9 season: int, +10 api_key: str = None, +11 api_key_dir: str = None, +12 week: int = None, +13 season_type: str = "regular", # "regular" or "postseason" +14 +15 return_as_dict: bool = False): +16 """ +17 +18 """ +19 raise NotImplementedError( +20 'This function has yet to be implemented by this version.' +21 )
-8def get_cfbd_poll_rankings( - 9 season: int, -10 api_key: str = None, -11 api_key_dir: str = None, -12 week: int = None, -13 season_type: str = "regular", # "regular" or "postseason" -14 -15 return_as_dict: bool = False): -16 """ -17 -18 """ -19 raise NotImplementedError( -20 'This function has yet to be implemented by this version.' -21 ) +diff --git a/docs/cfbd_json_py/ratings.html b/docs/cfbd_json_py/ratings.html index 319fa61..449f38c 100644 --- a/docs/cfbd_json_py/ratings.html +++ b/docs/cfbd_json_py/ratings.html @@ -64,75 +64,76 @@9def get_cfbd_poll_rankings( +10 season: int, +11 api_key: str = None, +12 api_key_dir: str = None, +13 week: int = None, +14 season_type: str = "regular", # "regular" or "postseason" +15 +16 return_as_dict: bool = False): +17 """ +18 +19 """ +20 raise NotImplementedError( +21 'This function has yet to be implemented by this version.' +22 )
@@ -148,20 +149,20 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: ratings.py - 4# Purpose: Houses functions pertaining to CFB team rating data within the CFBD API. - 5#################################################################################################### - 6 - 7def get_cfbd_sp_plus_ratings( - 8 api_key: str = None, - 9 api_key_dir: str = None, -10 season: int = None, -11 team: int = None, -12 # Either `year` or `team` have to be not null for this function to work. -13 -14 return_as_dict: bool = False): -15 """ -16 -17 """ -18 raise NotImplementedError( -19 'This function has yet to be implemented by this version.' -20 ) -21 + 2# Last Updated Date: 10/06/2023 07:53 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: ratings.py + 5# Purpose: Houses functions pertaining to CFB team rating data within the CFBD API. + 6#################################################################################################### + 7 + 8def get_cfbd_sp_plus_ratings( + 9 api_key: str = None, +10 api_key_dir: str = None, +11 season: int = None, +12 team: int = None, +13 # Either `year` or `team` have to be not null for this function to work. +14 +15 return_as_dict: bool = False): +16 """ +17 +18 """ +19 raise NotImplementedError( +20 'This function has yet to be implemented by this version.' +21 ) 22 -23def get_cfbd_srs_ratings( -24 api_key: str = None, -25 api_key_dir: str = None, -26 season: int = None, -27 team: int = None, -28 # Either `year` or `team` have to be not null for this function to work. -29 conferenece: str = None, -30 -31 return_as_dict: bool = False): -32 """ -33 -34 """ -35 raise NotImplementedError( -36 'This function has yet to be implemented by this version.' -37 ) -38 +23 +24def get_cfbd_srs_ratings( +25 api_key: str = None, +26 api_key_dir: str = None, +27 season: int = None, +28 team: int = None, +29 # Either `year` or `team` have to be not null for this function to work. +30 conferenece: str = None, +31 +32 return_as_dict: bool = False): +33 """ +34 +35 """ +36 raise NotImplementedError( +37 'This function has yet to be implemented by this version.' +38 ) 39 -40def get_cfbd_sp_plus_conference_ratings( -41 season: int, -42 api_key: str = None, -43 api_key_dir: str = None, -44 conference_abv: str = None, -45 -46 return_as_dict: bool = False): -47 """ -48 -49 """ -50 raise NotImplementedError( -51 'This function has yet to be implemented by this version.' -52 ) -53 +40 +41def get_cfbd_sp_plus_conference_ratings( +42 season: int, +43 api_key: str = None, +44 api_key_dir: str = None, +45 conference_abv: str = None, +46 +47 return_as_dict: bool = False): +48 """ +49 +50 """ +51 raise NotImplementedError( +52 'This function has yet to be implemented by this version.' +53 ) 54 -55def get_cfbd_elo_ratings( -56 season: int, -57 api_key: str = None, -58 api_key_dir: str = None, -59 week: int = None, -60 season_type: str = 'regular', # "regular" or "postseason" -61 team: str = None, -62 conference_abv: str = None, -63 -64 return_as_dict: bool = False): -65 """ -66 -67 """ -68 raise NotImplementedError( -69 'This function has yet to be implemented by this version.' -70 ) +55 +56def get_cfbd_elo_ratings( +57 season: int, +58 api_key: str = None, +59 api_key_dir: str = None, +60 week: int = None, +61 season_type: str = 'regular', # "regular" or "postseason" +62 team: str = None, +63 conference_abv: str = None, +64 +65 return_as_dict: bool = False): +66 """ +67 +68 """ +69 raise NotImplementedError( +70 'This function has yet to be implemented by this version.' +71 )
-8def get_cfbd_sp_plus_ratings( - 9 api_key: str = None, -10 api_key_dir: str = None, -11 season: int = None, -12 team: int = None, -13 # Either `year` or `team` have to be not null for this function to work. -14 -15 return_as_dict: bool = False): -16 """ -17 -18 """ -19 raise NotImplementedError( -20 'This function has yet to be implemented by this version.' -21 ) +@@ -179,21 +180,21 @@9def get_cfbd_sp_plus_ratings( +10 api_key: str = None, +11 api_key_dir: str = None, +12 season: int = None, +13 team: int = None, +14 # Either `year` or `team` have to be not null for this function to work. +15 +16 return_as_dict: bool = False): +17 """ +18 +19 """ +20 raise NotImplementedError( +21 'This function has yet to be implemented by this version.' +22 )
-24def get_cfbd_srs_ratings( -25 api_key: str = None, -26 api_key_dir: str = None, -27 season: int = None, -28 team: int = None, -29 # Either `year` or `team` have to be not null for this function to work. -30 conferenece: str = None, -31 -32 return_as_dict: bool = False): -33 """ -34 -35 """ -36 raise NotImplementedError( -37 'This function has yet to be implemented by this version.' -38 ) +@@ -211,19 +212,19 @@25def get_cfbd_srs_ratings( +26 api_key: str = None, +27 api_key_dir: str = None, +28 season: int = None, +29 team: int = None, +30 # Either `year` or `team` have to be not null for this function to work. +31 conferenece: str = None, +32 +33 return_as_dict: bool = False): +34 """ +35 +36 """ +37 raise NotImplementedError( +38 'This function has yet to be implemented by this version.' +39 )
-41def get_cfbd_sp_plus_conference_ratings( -42 season: int, -43 api_key: str = None, -44 api_key_dir: str = None, -45 conference_abv: str = None, -46 -47 return_as_dict: bool = False): -48 """ -49 -50 """ -51 raise NotImplementedError( -52 'This function has yet to be implemented by this version.' -53 ) +@@ -241,22 +242,22 @@42def get_cfbd_sp_plus_conference_ratings( +43 season: int, +44 api_key: str = None, +45 api_key_dir: str = None, +46 conference_abv: str = None, +47 +48 return_as_dict: bool = False): +49 """ +50 +51 """ +52 raise NotImplementedError( +53 'This function has yet to be implemented by this version.' +54 )
-56def get_cfbd_elo_ratings( -57 season: int, -58 api_key: str = None, -59 api_key_dir: str = None, -60 week: int = None, -61 season_type: str = 'regular', # "regular" or "postseason" -62 team: str = None, -63 conference_abv: str = None, -64 -65 return_as_dict: bool = False): -66 """ -67 -68 """ -69 raise NotImplementedError( -70 'This function has yet to be implemented by this version.' -71 ) +diff --git a/docs/cfbd_json_py/recruiting.html b/docs/cfbd_json_py/recruiting.html index 569b668..340f142 100644 --- a/docs/cfbd_json_py/recruiting.html +++ b/docs/cfbd_json_py/recruiting.html @@ -61,61 +61,62 @@57def get_cfbd_elo_ratings( +58 season: int, +59 api_key: str = None, +60 api_key_dir: str = None, +61 week: int = None, +62 season_type: str = 'regular', # "regular" or "postseason" +63 team: str = None, +64 conference_abv: str = None, +65 +66 return_as_dict: bool = False): +67 """ +68 +69 """ +70 raise NotImplementedError( +71 'This function has yet to be implemented by this version.' +72 )
@@ -131,24 +132,24 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: recruiting.py - 4# Purpose: Houses functions pertaining to CFB recruiting data within the CFBD API. - 5#################################################################################################### - 6 - 7def get_cfbd_player_recruit_ratings( - 8 api_key: str = None, - 9 api_key_dir: str = None, -10 season: int = None, -11 team: str = None, -12 # `year` and/or `team` need to be not null for this function to work. -13 recruit_classification: str = "HighSchool", -14 # Can be "HighSchool", "JUCO", or "PrepSchool" -15 position: str = None, -16 state: str = None, -17 -18 return_as_dict: bool = False): -19 """ -20 -21 """ -22 raise NotImplementedError( -23 'This function has yet to be implemented by this version.' -24 ) -25 + 2# Last Updated Date: 10/06/2023 07:54 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: recruiting.py + 5# Purpose: Houses functions pertaining to CFB recruiting data within the CFBD API. + 6#################################################################################################### + 7 + 8def get_cfbd_player_recruit_ratings( + 9 api_key: str = None, +10 api_key_dir: str = None, +11 season: int = None, +12 team: str = None, +13 # `year` and/or `team` need to be not null for this function to work. +14 recruit_classification: str = "HighSchool", +15 # Can be "HighSchool", "JUCO", or "PrepSchool" +16 position: str = None, +17 state: str = None, +18 +19 return_as_dict: bool = False): +20 """ +21 +22 """ +23 raise NotImplementedError( +24 'This function has yet to be implemented by this version.' +25 ) 26 -27def get_cfbd_team_recruiting_ratings( -28 api_key: str = None, -29 api_key_dir: str = None, -30 season: int = None, -31 team: str = None, -32 -33 return_as_dict: bool = False): -34 """ -35 -36 """ -37 raise NotImplementedError( -38 'This function has yet to be implemented by this version.' -39 ) -40 +27 +28def get_cfbd_team_recruiting_ratings( +29 api_key: str = None, +30 api_key_dir: str = None, +31 season: int = None, +32 team: str = None, +33 +34 return_as_dict: bool = False): +35 """ +36 +37 """ +38 raise NotImplementedError( +39 'This function has yet to be implemented by this version.' +40 ) 41 -42def get_cfbd_team_recruiting_group_ratings( -43 api_key: str = None, -44 api_key_dir: str = None, -45 start_season: int = None, -46 end_season: int = None, -47 team: str = None, -48 conference_abv: str = None, -49 -50 return_as_dict: bool = False): -51 """ -52 -53 """ -54 raise NotImplementedError( -55 'This function has yet to be implemented by this version.' -56 ) +42 +43def get_cfbd_team_recruiting_group_ratings( +44 api_key: str = None, +45 api_key_dir: str = None, +46 start_season: int = None, +47 end_season: int = None, +48 team: str = None, +49 conference_abv: str = None, +50 +51 return_as_dict: bool = False): +52 """ +53 +54 """ +55 raise NotImplementedError( +56 'This function has yet to be implemented by this version.' +57 )
-8def get_cfbd_player_recruit_ratings( - 9 api_key: str = None, -10 api_key_dir: str = None, -11 season: int = None, -12 team: str = None, -13 # `year` and/or `team` need to be not null for this function to work. -14 recruit_classification: str = "HighSchool", -15 # Can be "HighSchool", "JUCO", or "PrepSchool" -16 position: str = None, -17 state: str = None, -18 -19 return_as_dict: bool = False): -20 """ -21 -22 """ -23 raise NotImplementedError( -24 'This function has yet to be implemented by this version.' -25 ) +@@ -166,19 +167,19 @@9def get_cfbd_player_recruit_ratings( +10 api_key: str = None, +11 api_key_dir: str = None, +12 season: int = None, +13 team: str = None, +14 # `year` and/or `team` need to be not null for this function to work. +15 recruit_classification: str = "HighSchool", +16 # Can be "HighSchool", "JUCO", or "PrepSchool" +17 position: str = None, +18 state: str = None, +19 +20 return_as_dict: bool = False): +21 """ +22 +23 """ +24 raise NotImplementedError( +25 'This function has yet to be implemented by this version.' +26 )
-28def get_cfbd_team_recruiting_ratings( -29 api_key: str = None, -30 api_key_dir: str = None, -31 season: int = None, -32 team: str = None, -33 -34 return_as_dict: bool = False): -35 """ -36 -37 """ -38 raise NotImplementedError( -39 'This function has yet to be implemented by this version.' -40 ) +@@ -196,21 +197,21 @@29def get_cfbd_team_recruiting_ratings( +30 api_key: str = None, +31 api_key_dir: str = None, +32 season: int = None, +33 team: str = None, +34 +35 return_as_dict: bool = False): +36 """ +37 +38 """ +39 raise NotImplementedError( +40 'This function has yet to be implemented by this version.' +41 )
-43def get_cfbd_team_recruiting_group_ratings( -44 api_key: str = None, -45 api_key_dir: str = None, -46 start_season: int = None, -47 end_season: int = None, -48 team: str = None, -49 conference_abv: str = None, -50 -51 return_as_dict: bool = False): -52 """ -53 -54 """ -55 raise NotImplementedError( -56 'This function has yet to be implemented by this version.' -57 ) +diff --git a/docs/cfbd_json_py/stats.html b/docs/cfbd_json_py/stats.html index 4120296..b4be859 100644 --- a/docs/cfbd_json_py/stats.html +++ b/docs/cfbd_json_py/stats.html @@ -64,80 +64,81 @@44def get_cfbd_team_recruiting_group_ratings( +45 api_key: str = None, +46 api_key_dir: str = None, +47 start_season: int = None, +48 end_season: int = None, +49 team: str = None, +50 conference_abv: str = None, +51 +52 return_as_dict: bool = False): +53 """ +54 +55 """ +56 raise NotImplementedError( +57 'This function has yet to be implemented by this version.' +58 )
@@ -153,23 +154,23 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: stats.py - 4# Purpose: Houses functions pertaining to CFB team/player stats data within the CFBD API. - 5#################################################################################################### - 6 - 7def get_cfbd_team_season_stats( - 8 api_key: str = None, - 9 api_key_dir: str = None, -10 season: int = None, -11 team: str = None, -12 # `year` and/or `team` need to be not null for this function to work. -13 conference_abv: str = None, -14 start_week: int = None, -15 end_week: int = None, -16 -17 return_as_dict: bool = False): -18 """ -19 -20 """ -21 raise NotImplementedError( -22 'This function has yet to be implemented by this version.' -23 ) -24 + 2# Last Updated Date: 10/06/2023 07:54 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: stats.py + 5# Purpose: Houses functions pertaining to CFB team/player stats data within the CFBD API. + 6#################################################################################################### + 7 + 8def get_cfbd_team_season_stats( + 9 api_key: str = None, +10 api_key_dir: str = None, +11 season: int = None, +12 team: str = None, +13 # `year` and/or `team` need to be not null for this function to work. +14 conference_abv: str = None, +15 start_week: int = None, +16 end_week: int = None, +17 +18 return_as_dict: bool = False): +19 """ +20 +21 """ +22 raise NotImplementedError( +23 'This function has yet to be implemented by this version.' +24 ) 25 -26def get_cfbd_advanced_team_season_stats( -27 api_key: str = None, -28 api_key_dir: str = None, -29 season: int = None, -30 team: str = None, -31 # `year` and/or `team` need to be not null for this function to work. -32 exclude_garbage_time: bool = False, -33 start_week: int = None, -34 end_week: int = None, -35 -36 return_as_dict: bool = False): -37 """ -38 -39 """ -40 raise NotImplementedError( -41 'This function has yet to be implemented by this version.' -42 ) -43 +26 +27def get_cfbd_advanced_team_season_stats( +28 api_key: str = None, +29 api_key_dir: str = None, +30 season: int = None, +31 team: str = None, +32 # `year` and/or `team` need to be not null for this function to work. +33 exclude_garbage_time: bool = False, +34 start_week: int = None, +35 end_week: int = None, +36 +37 return_as_dict: bool = False): +38 """ +39 +40 """ +41 raise NotImplementedError( +42 'This function has yet to be implemented by this version.' +43 ) 44 -45def get_cfbd_advanced_team_game_stats( -46 api_key: str = None, -47 api_key_dir: str = None, -48 season: int = None, -49 team: str = None, -50 # `year` and/or `team` need to be not null for this function to work. -51 week: int = None, -52 opponent: str = None, -53 exclude_garbage_time: bool = False, -54 season_type: str = "regular", # "regular", "postseason", or "both" -55 -56 return_as_dict: bool = False): -57 """ -58 -59 """ -60 raise NotImplementedError( -61 'This function has yet to be implemented by this version.' -62 ) -63 +45 +46def get_cfbd_advanced_team_game_stats( +47 api_key: str = None, +48 api_key_dir: str = None, +49 season: int = None, +50 team: str = None, +51 # `year` and/or `team` need to be not null for this function to work. +52 week: int = None, +53 opponent: str = None, +54 exclude_garbage_time: bool = False, +55 season_type: str = "regular", # "regular", "postseason", or "both" +56 +57 return_as_dict: bool = False): +58 """ +59 +60 """ +61 raise NotImplementedError( +62 'This function has yet to be implemented by this version.' +63 ) 64 -65def get_cfbd_team_stat_categories( -66 api_key: str = None, -67 api_key_dir: str = None, -68 -69 return_as_dict: bool = False): -70 """ -71 -72 """ -73 raise NotImplementedError( -74 'This function has yet to be implemented by this version.' -75 ) +65 +66def get_cfbd_team_stat_categories( +67 api_key: str = None, +68 api_key_dir: str = None, +69 +70 return_as_dict: bool = False): +71 """ +72 +73 """ +74 raise NotImplementedError( +75 'This function has yet to be implemented by this version.' +76 )
-8def get_cfbd_team_season_stats( - 9 api_key: str = None, -10 api_key_dir: str = None, -11 season: int = None, -12 team: str = None, -13 # `year` and/or `team` need to be not null for this function to work. -14 conference_abv: str = None, -15 start_week: int = None, -16 end_week: int = None, -17 -18 return_as_dict: bool = False): -19 """ -20 -21 """ -22 raise NotImplementedError( -23 'This function has yet to be implemented by this version.' -24 ) +@@ -187,23 +188,23 @@9def get_cfbd_team_season_stats( +10 api_key: str = None, +11 api_key_dir: str = None, +12 season: int = None, +13 team: str = None, +14 # `year` and/or `team` need to be not null for this function to work. +15 conference_abv: str = None, +16 start_week: int = None, +17 end_week: int = None, +18 +19 return_as_dict: bool = False): +20 """ +21 +22 """ +23 raise NotImplementedError( +24 'This function has yet to be implemented by this version.' +25 )
-27def get_cfbd_advanced_team_season_stats( -28 api_key: str = None, -29 api_key_dir: str = None, -30 season: int = None, -31 team: str = None, -32 # `year` and/or `team` need to be not null for this function to work. -33 exclude_garbage_time: bool = False, -34 start_week: int = None, -35 end_week: int = None, -36 -37 return_as_dict: bool = False): -38 """ -39 -40 """ -41 raise NotImplementedError( -42 'This function has yet to be implemented by this version.' -43 ) +@@ -221,24 +222,24 @@28def get_cfbd_advanced_team_season_stats( +29 api_key: str = None, +30 api_key_dir: str = None, +31 season: int = None, +32 team: str = None, +33 # `year` and/or `team` need to be not null for this function to work. +34 exclude_garbage_time: bool = False, +35 start_week: int = None, +36 end_week: int = None, +37 +38 return_as_dict: bool = False): +39 """ +40 +41 """ +42 raise NotImplementedError( +43 'This function has yet to be implemented by this version.' +44 )
-46def get_cfbd_advanced_team_game_stats( -47 api_key: str = None, -48 api_key_dir: str = None, -49 season: int = None, -50 team: str = None, -51 # `year` and/or `team` need to be not null for this function to work. -52 week: int = None, -53 opponent: str = None, -54 exclude_garbage_time: bool = False, -55 season_type: str = "regular", # "regular", "postseason", or "both" -56 -57 return_as_dict: bool = False): -58 """ -59 -60 """ -61 raise NotImplementedError( -62 'This function has yet to be implemented by this version.' -63 ) +@@ -256,17 +257,17 @@47def get_cfbd_advanced_team_game_stats( +48 api_key: str = None, +49 api_key_dir: str = None, +50 season: int = None, +51 team: str = None, +52 # `year` and/or `team` need to be not null for this function to work. +53 week: int = None, +54 opponent: str = None, +55 exclude_garbage_time: bool = False, +56 season_type: str = "regular", # "regular", "postseason", or "both" +57 +58 return_as_dict: bool = False): +59 """ +60 +61 """ +62 raise NotImplementedError( +63 'This function has yet to be implemented by this version.' +64 )
-66def get_cfbd_team_stat_categories( -67 api_key: str = None, -68 api_key_dir: str = None, -69 -70 return_as_dict: bool = False): -71 """ -72 -73 """ -74 raise NotImplementedError( -75 'This function has yet to be implemented by this version.' -76 ) +diff --git a/docs/cfbd_json_py/teams.html b/docs/cfbd_json_py/teams.html index 4ddbc15..2951521 100644 --- a/docs/cfbd_json_py/teams.html +++ b/docs/cfbd_json_py/teams.html @@ -67,83 +67,84 @@67def get_cfbd_team_stat_categories( +68 api_key: str = None, +69 api_key_dir: str = None, +70 +71 return_as_dict: bool = False): +72 """ +73 +74 """ +75 raise NotImplementedError( +76 'This function has yet to be implemented by this version.' +77 )
@@ -159,18 +160,18 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: teams.py - 4# Purpose: Houses functions pertaining to CFB team data within the CFBD API. - 5#################################################################################################### - 6 - 7def get_cfbd_team_information( - 8 api_key: str = None, - 9 api_key_dir: str = None, -10 conference_abv: str = None, -11 -12 return_as_dict: bool = False): -13 """ -14 -15 """ -16 raise NotImplementedError( -17 'This function has yet to be implemented by this version.' -18 ) -19 + 2# Last Updated Date: 10/06/2023 07:54 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: teams.py + 5# Purpose: Houses functions pertaining to CFB team data within the CFBD API. + 6#################################################################################################### + 7 + 8def get_cfbd_team_information( + 9 api_key: str = None, +10 api_key_dir: str = None, +11 conference_abv: str = None, +12 +13 return_as_dict: bool = False): +14 """ +15 +16 """ +17 raise NotImplementedError( +18 'This function has yet to be implemented by this version.' +19 ) 20 -21def get_cfbd_fbs_team_list( -22 api_key: str = None, -23 api_key_dir: str = None, -24 season: int = None, -25 -26 return_as_dict: bool = False): -27 """ -28 -29 """ -30 raise NotImplementedError( -31 'This function has yet to be implemented by this version.' -32 ) -33 +21 +22def get_cfbd_fbs_team_list( +23 api_key: str = None, +24 api_key_dir: str = None, +25 season: int = None, +26 +27 return_as_dict: bool = False): +28 """ +29 +30 """ +31 raise NotImplementedError( +32 'This function has yet to be implemented by this version.' +33 ) 34 -35def get_cfbd_team_rosters( -36 api_key: str = None, -37 api_key_dir: str = None, -38 team: str = None, -39 season: int = None, -40 -41 return_as_dict: bool = False): -42 """ -43 -44 """ -45 raise NotImplementedError( -46 'This function has yet to be implemented by this version.' -47 ) -48 +35 +36def get_cfbd_team_rosters( +37 api_key: str = None, +38 api_key_dir: str = None, +39 team: str = None, +40 season: int = None, +41 +42 return_as_dict: bool = False): +43 """ +44 +45 """ +46 raise NotImplementedError( +47 'This function has yet to be implemented by this version.' +48 ) 49 -50def get_cfbd_team_talent_rankings( -51 api_key: str = None, -52 api_key_dir: str = None, -53 season: int = None, -54 -55 return_as_dict: bool = False): -56 """ -57 -58 """ -59 raise NotImplementedError( -60 'This function has yet to be implemented by this version.' -61 ) -62 +50 +51def get_cfbd_team_talent_rankings( +52 api_key: str = None, +53 api_key_dir: str = None, +54 season: int = None, +55 +56 return_as_dict: bool = False): +57 """ +58 +59 """ +60 raise NotImplementedError( +61 'This function has yet to be implemented by this version.' +62 ) 63 -64def get_cfbd_team_matchup_history( -65 team_1: str, -66 team_2: str, -67 api_key: str = None, -68 api_key_dir: str = None, -69 min_season: int = None, -70 max_season: int = None, -71 -72 return_as_dict: bool = False): -73 """ -74 -75 """ -76 raise NotImplementedError( -77 'This function has yet to be implemented by this version.' -78 ) +64 +65def get_cfbd_team_matchup_history( +66 team_1: str, +67 team_2: str, +68 api_key: str = None, +69 api_key_dir: str = None, +70 min_season: int = None, +71 max_season: int = None, +72 +73 return_as_dict: bool = False): +74 """ +75 +76 """ +77 raise NotImplementedError( +78 'This function has yet to be implemented by this version.' +79 )
-8def get_cfbd_team_information( - 9 api_key: str = None, -10 api_key_dir: str = None, -11 conference_abv: str = None, -12 -13 return_as_dict: bool = False): -14 """ -15 -16 """ -17 raise NotImplementedError( -18 'This function has yet to be implemented by this version.' -19 ) +@@ -188,18 +189,18 @@9def get_cfbd_team_information( +10 api_key: str = None, +11 api_key_dir: str = None, +12 conference_abv: str = None, +13 +14 return_as_dict: bool = False): +15 """ +16 +17 """ +18 raise NotImplementedError( +19 'This function has yet to be implemented by this version.' +20 )
-22def get_cfbd_fbs_team_list( -23 api_key: str = None, -24 api_key_dir: str = None, -25 season: int = None, -26 -27 return_as_dict: bool = False): -28 """ -29 -30 """ -31 raise NotImplementedError( -32 'This function has yet to be implemented by this version.' -33 ) +@@ -217,19 +218,19 @@23def get_cfbd_fbs_team_list( +24 api_key: str = None, +25 api_key_dir: str = None, +26 season: int = None, +27 +28 return_as_dict: bool = False): +29 """ +30 +31 """ +32 raise NotImplementedError( +33 'This function has yet to be implemented by this version.' +34 )
-36def get_cfbd_team_rosters( -37 api_key: str = None, -38 api_key_dir: str = None, -39 team: str = None, -40 season: int = None, -41 -42 return_as_dict: bool = False): -43 """ -44 -45 """ -46 raise NotImplementedError( -47 'This function has yet to be implemented by this version.' -48 ) +@@ -247,18 +248,18 @@37def get_cfbd_team_rosters( +38 api_key: str = None, +39 api_key_dir: str = None, +40 team: str = None, +41 season: int = None, +42 +43 return_as_dict: bool = False): +44 """ +45 +46 """ +47 raise NotImplementedError( +48 'This function has yet to be implemented by this version.' +49 )
-51def get_cfbd_team_talent_rankings( -52 api_key: str = None, -53 api_key_dir: str = None, -54 season: int = None, -55 -56 return_as_dict: bool = False): -57 """ -58 -59 """ -60 raise NotImplementedError( -61 'This function has yet to be implemented by this version.' -62 ) +@@ -276,21 +277,21 @@52def get_cfbd_team_talent_rankings( +53 api_key: str = None, +54 api_key_dir: str = None, +55 season: int = None, +56 +57 return_as_dict: bool = False): +58 """ +59 +60 """ +61 raise NotImplementedError( +62 'This function has yet to be implemented by this version.' +63 )
-65def get_cfbd_team_matchup_history( -66 team_1: str, -67 team_2: str, -68 api_key: str = None, -69 api_key_dir: str = None, -70 min_season: int = None, -71 max_season: int = None, -72 -73 return_as_dict: bool = False): -74 """ -75 -76 """ -77 raise NotImplementedError( -78 'This function has yet to be implemented by this version.' -79 ) +diff --git a/docs/cfbd_json_py/utls.html b/docs/cfbd_json_py/utls.html index a5b3c9c..9b91f4b 100644 --- a/docs/cfbd_json_py/utls.html +++ b/docs/cfbd_json_py/utls.html @@ -64,277 +64,278 @@66def get_cfbd_team_matchup_history( +67 team_1: str, +68 team_2: str, +69 api_key: str = None, +70 api_key_dir: str = None, +71 min_season: int = None, +72 max_season: int = None, +73 +74 return_as_dict: bool = False): +75 """ +76 +77 """ +78 raise NotImplementedError( +79 'This function has yet to be implemented by this version.' +80 )
@@ -350,28 +351,28 @@1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: utls.py - 4# Purpose: Houses utility functions for this python package. - 5#################################################################################################### - 6 - 7import json - 8import os - 9import secrets - 10import logging - 11 + 2# Last Updated Date: 10/06/2023 07:54 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: utls.py + 5# Purpose: Houses utility functions for this python package. + 6#################################################################################################### + 7 + 8import json + 9import os + 10import secrets + 11import logging 12 - 13def reverse_cipher_encrypt(plain_text_str: str): - 14 """ - 15 Implements a reverse cipher encription to a plain text string. - 16 - 17 Parameters - 18 ---------- - 19 `plain_text_str` (mandatory, str): - 20 The string you want to encrypt through reverse cipher encryption. - 21 - 22 Returns - 23 ---------- - 24 A string encrypted through reverse cipher encryption. - 25 """ - 26 translated_text = '' - 27 str_len = len(plain_text_str) - 1 - 28 while str_len >= 0: - 29 translated_text = translated_text + plain_text_str[str_len] - 30 str_len = str_len - 1 - 31 - 32 del plain_text_str - 33 - 34 return translated_text - 35 + 13 + 14def reverse_cipher_encrypt(plain_text_str: str): + 15 """ + 16 Implements a reverse cipher encription to a plain text string. + 17 + 18 Parameters + 19 ---------- + 20 `plain_text_str` (mandatory, str): + 21 The string you want to encrypt through reverse cipher encryption. + 22 + 23 Returns + 24 ---------- + 25 A string encrypted through reverse cipher encryption. + 26 """ + 27 translated_text = '' + 28 str_len = len(plain_text_str) - 1 + 29 while str_len >= 0: + 30 translated_text = translated_text + plain_text_str[str_len] + 31 str_len = str_len - 1 + 32 + 33 del plain_text_str + 34 + 35 return translated_text 36 - 37def reverse_cipher_decrypt(encrypted_text_str: str): - 38 """ - 39 Decrypts a string that was presumed to be encrypted by a reverse cipher encryption. - 40 - 41 Parameters - 42 ---------- - 43 `encrypted_text_str` (mandatory, str): - 44 The string you presume that is encrypted through reverse cipher encryption, - 45 that you want decrypted. - 46 - 47 Returns - 48 ---------- - 49 A decrypted string. - 50 - 51 """ - 52 translated_text = '' - 53 str_len = len(encrypted_text_str) - 1 - 54 - 55 while str_len >= 0: - 56 translated_text = translated_text + encrypted_text_str[str_len] - 57 str_len = str_len - 1 - 58 - 59 del encrypted_text_str - 60 - 61 return translated_text - 62 + 37 + 38def reverse_cipher_decrypt(encrypted_text_str: str): + 39 """ + 40 Decrypts a string that was presumed to be encrypted by a reverse cipher encryption. + 41 + 42 Parameters + 43 ---------- + 44 `encrypted_text_str` (mandatory, str): + 45 The string you presume that is encrypted through reverse cipher encryption, + 46 that you want decrypted. + 47 + 48 Returns + 49 ---------- + 50 A decrypted string. + 51 + 52 """ + 53 translated_text = '' + 54 str_len = len(encrypted_text_str) - 1 + 55 + 56 while str_len >= 0: + 57 translated_text = translated_text + encrypted_text_str[str_len] + 58 str_len = str_len - 1 + 59 + 60 del encrypted_text_str + 61 + 62 return translated_text 63 - 64def get_cfbd_api_token(api_key_dir: str = None): - 65 """ - 66 If the CFBD API key exists in the environment, - 67 or is in a file, this function retrives the CFBD API key, - 68 and returns it as a string. - 69 - 70 If this package is being used in a GitHub Actions action, - 71 set the key in the environment by - 72 creating a repository secret nammed `CFBD_API_KEY`. - 73 - 74 Parameters - 75 ---------- - 76 `api_key_dir` (str, optional): - 77 Optional argument. If `api_key_dir` is set to a non-null string, - 78 `set_cfbd_api_token()` will attempt to save the key file in that directory, - 79 instead of this user's home directory. - 80 - 81 Returns - 82 ---------- - 83 A CFBD API key that exists within this python environment, - 84 or within this computer. - 85 """ - 86 # raise NotImplementedError('it ain\'t ready') - 87 - 88 try: - 89 key = os.environ['CFBD_API_KEY'] - 90 return key - 91 except: - 92 logging.info( - 93 "CFBD key not found in this python environment.\nAttempting to load the API key from a file.") - 94 - 95 if api_key_dir != None: - 96 with open(f"{api_key_dir}/.cfbd/cfbd.json", "r") as f: - 97 json_str = f.read() - 98 - 99 json_data = json.loads(json_str) -100 -101 return_key = json_data['cfbd_api_token'] -102 return_key = reverse_cipher_decrypt(return_key) -103 return_key = return_key[10:] -104 return_key = return_key[:-10] -105 -106 del api_key_dir, json_str, json_data -107 -108 return return_key -109 else: -110 home_dir = os.path.expanduser('~') -111 -112 with open(f"{home_dir}/.cfbd/cfbd.json", "r") as f: -113 json_str = f.read() -114 -115 json_data = json.loads(json_str) -116 -117 return_key = json_data['cfbd_api_token'] -118 return_key = reverse_cipher_decrypt(return_key) -119 return_key = return_key[10:] -120 return_key = return_key[:-10] -121 -122 del api_key_dir, json_str, json_data -123 -124 return return_key -125 + 64 + 65def get_cfbd_api_token(api_key_dir: str = None): + 66 """ + 67 If the CFBD API key exists in the environment, + 68 or is in a file, this function retrives the CFBD API key, + 69 and returns it as a string. + 70 + 71 If this package is being used in a GitHub Actions action, + 72 set the key in the environment by + 73 creating a repository secret nammed `CFBD_API_KEY`. + 74 + 75 Parameters + 76 ---------- + 77 `api_key_dir` (str, optional): + 78 Optional argument. If `api_key_dir` is set to a non-null string, + 79 `set_cfbd_api_token()` will attempt to save the key file in that directory, + 80 instead of this user's home directory. + 81 + 82 Returns + 83 ---------- + 84 A CFBD API key that exists within this python environment, + 85 or within this computer. + 86 """ + 87 # raise NotImplementedError('it ain\'t ready') + 88 + 89 try: + 90 key = os.environ['CFBD_API_KEY'] + 91 return key + 92 except: + 93 logging.info( + 94 "CFBD key not found in this python environment.\nAttempting to load the API key from a file.") + 95 + 96 if api_key_dir != None: + 97 with open(f"{api_key_dir}/.cfbd/cfbd.json", "r") as f: + 98 json_str = f.read() + 99 +100 json_data = json.loads(json_str) +101 +102 return_key = json_data['cfbd_api_token'] +103 return_key = reverse_cipher_decrypt(return_key) +104 return_key = return_key[10:] +105 return_key = return_key[:-10] +106 +107 del api_key_dir, json_str, json_data +108 +109 return return_key +110 else: +111 home_dir = os.path.expanduser('~') +112 +113 with open(f"{home_dir}/.cfbd/cfbd.json", "r") as f: +114 json_str = f.read() +115 +116 json_data = json.loads(json_str) +117 +118 return_key = json_data['cfbd_api_token'] +119 return_key = reverse_cipher_decrypt(return_key) +120 return_key = return_key[10:] +121 return_key = return_key[:-10] +122 +123 del api_key_dir, json_str, json_data +124 +125 return return_key 126 -127def set_cfbd_api_token(api_key: str, api_key_dir: str = None): -128 """ -129 Sets the CFBD API key into a file that exists -130 either in `{home_dir}/.cfbd/cfbd_key.json`, or in a custom directory. -131 -132 Parameters -133 ---------- -134 `api_key` (str, mandatory): -135 The CFBD API key you have. -136 DO NOT input `Bearer {your CFBD API key}`, -137 this package will take care of that for you. -138 -139 `api_key_dir` (str, optional): -140 Optional argument. If `api_key_dir` is set to a non-null string, -141 `set_cfbd_api_token()` will attempt to save the key file in that directory, -142 instead of this user's home directory. -143 -144 Returns -145 ---------- -146 Nothing. -147 This function only sets up the API key file that this package can reference later. -148 """ -149 -150 alph_letters = [ -151 "a", -152 "b", -153 "c", -154 "d", -155 "e", -156 "f", -157 "g", -158 "h", -159 "i", -160 "j", -161 "k", -162 "l", -163 "m", -164 "n", -165 "o", -166 "p", -167 "q", -168 "r", -169 "s", -170 "t", -171 "u", -172 "v", -173 "w", -174 "x", -175 "y", -176 "z", -177 "0", -178 "1", -179 "2", -180 "3", -181 "4", -182 "5", -183 "6", -184 "7", -185 "8", -186 "9", -187 "A", -188 "B", -189 "C", -190 "D", -191 "E", -192 "F", -193 "G", -194 "H", -195 "I", -196 "J", -197 "K", -198 "L", -199 "M", -200 "N", -201 "O", -202 "P", -203 "Q", -204 "R", -205 "S", -206 "T", -207 "U", -208 "V", -209 "W", -210 "X", -211 "Y", -212 "Z", -213 ] -214 -215 front_hash = '' -216 back_hash = '' -217 -218 for i in range(0, 10): -219 r_str = secrets.choice(alph_letters) -220 front_hash += r_str -221 del r_str -222 -223 for i in range(0, 10): -224 r_str = secrets.choice(alph_letters) -225 back_hash += r_str -226 del r_str -227 -228 encrypted_key = reverse_cipher_encrypt(api_key) -229 -230 json_str = f"{{\n\t\"cfbd_api_token\":\"{front_hash}{encrypted_key}{back_hash}\"\n}}" -231 del encrypted_key -232 # print(json_str) -233 -234 if api_key_dir != None: -235 try: -236 os.mkdir(f"{api_key_dir}/.cfbd") -237 except: -238 pass -239 -240 with open(f"{api_key_dir}/.cfbd/cfbd.json", "w+") as f: -241 f.write(json_str) -242 else: -243 home_dir = os.path.expanduser('~') -244 -245 try: -246 os.mkdir(f"{home_dir}/.cfbd") -247 except: -248 pass -249 -250 with open(f"{home_dir}/.cfbd/cfbd.json", "w+") as f: -251 f.write(json_str) -252 -253 del json_str -254 +127 +128def set_cfbd_api_token(api_key: str, api_key_dir: str = None): +129 """ +130 Sets the CFBD API key into a file that exists +131 either in `{home_dir}/.cfbd/cfbd_key.json`, or in a custom directory. +132 +133 Parameters +134 ---------- +135 `api_key` (str, mandatory): +136 The CFBD API key you have. +137 DO NOT input `Bearer {your CFBD API key}`, +138 this package will take care of that for you. +139 +140 `api_key_dir` (str, optional): +141 Optional argument. If `api_key_dir` is set to a non-null string, +142 `set_cfbd_api_token()` will attempt to save the key file in that directory, +143 instead of this user's home directory. +144 +145 Returns +146 ---------- +147 Nothing. +148 This function only sets up the API key file that this package can reference later. +149 """ +150 +151 alph_letters = [ +152 "a", +153 "b", +154 "c", +155 "d", +156 "e", +157 "f", +158 "g", +159 "h", +160 "i", +161 "j", +162 "k", +163 "l", +164 "m", +165 "n", +166 "o", +167 "p", +168 "q", +169 "r", +170 "s", +171 "t", +172 "u", +173 "v", +174 "w", +175 "x", +176 "y", +177 "z", +178 "0", +179 "1", +180 "2", +181 "3", +182 "4", +183 "5", +184 "6", +185 "7", +186 "8", +187 "9", +188 "A", +189 "B", +190 "C", +191 "D", +192 "E", +193 "F", +194 "G", +195 "H", +196 "I", +197 "J", +198 "K", +199 "L", +200 "M", +201 "N", +202 "O", +203 "P", +204 "Q", +205 "R", +206 "S", +207 "T", +208 "U", +209 "V", +210 "W", +211 "X", +212 "Y", +213 "Z", +214 ] +215 +216 front_hash = '' +217 back_hash = '' +218 +219 for i in range(0, 10): +220 r_str = secrets.choice(alph_letters) +221 front_hash += r_str +222 del r_str +223 +224 for i in range(0, 10): +225 r_str = secrets.choice(alph_letters) +226 back_hash += r_str +227 del r_str +228 +229 encrypted_key = reverse_cipher_encrypt(api_key) +230 +231 json_str = f"{{\n\t\"cfbd_api_token\":\"{front_hash}{encrypted_key}{back_hash}\"\n}}" +232 del encrypted_key +233 # print(json_str) +234 +235 if api_key_dir != None: +236 try: +237 os.mkdir(f"{api_key_dir}/.cfbd") +238 except: +239 pass +240 +241 with open(f"{api_key_dir}/.cfbd/cfbd.json", "w+") as f: +242 f.write(json_str) +243 else: +244 home_dir = os.path.expanduser('~') +245 +246 try: +247 os.mkdir(f"{home_dir}/.cfbd") +248 except: +249 pass +250 +251 with open(f"{home_dir}/.cfbd/cfbd.json", "w+") as f: +252 f.write(json_str) +253 +254 del json_str 255 -256# if __name__ == "__main__": -257# text = "Hello World" -258# e_text = reverse_cipher_encrypt(text) -259# ue_text = reverse_cipher_decrypt(e_text) -260 -261# print(f"Original Text:\t{text}") -262# print(f"Encrypted Text:\t{e_text}") -263# print(f"Decrypted Text:\t{ue_text}") -264 -265# print(f'remove first 2 characters from string: {text[2:]}') -266# print(f'remove last 2 characters from string: {text[:-2]}') -267 -268# key = "hello world" -269# set_cfbd_api_token(key) -270# return_key = get_cfbd_api_token() -271# print(key) -272# print(return_key) +256 +257# if __name__ == "__main__": +258# text = "Hello World" +259# e_text = reverse_cipher_encrypt(text) +260# ue_text = reverse_cipher_decrypt(e_text) +261 +262# print(f"Original Text:\t{text}") +263# print(f"Encrypted Text:\t{e_text}") +264# print(f"Decrypted Text:\t{ue_text}") +265 +266# print(f'remove first 2 characters from string: {text[2:]}') +267# print(f'remove last 2 characters from string: {text[:-2]}') +268 +269# key = "hello world" +270# set_cfbd_api_token(key) +271# return_key = get_cfbd_api_token() +272# print(key) +273# print(return_key)
-14def reverse_cipher_encrypt(plain_text_str: str): -15 """ -16 Implements a reverse cipher encription to a plain text string. -17 -18 Parameters -19 ---------- -20 `plain_text_str` (mandatory, str): -21 The string you want to encrypt through reverse cipher encryption. -22 -23 Returns -24 ---------- -25 A string encrypted through reverse cipher encryption. -26 """ -27 translated_text = '' -28 str_len = len(plain_text_str) - 1 -29 while str_len >= 0: -30 translated_text = translated_text + plain_text_str[str_len] -31 str_len = str_len - 1 -32 -33 del plain_text_str -34 -35 return translated_text +@@ -400,31 +401,31 @@15def reverse_cipher_encrypt(plain_text_str: str): +16 """ +17 Implements a reverse cipher encription to a plain text string. +18 +19 Parameters +20 ---------- +21 `plain_text_str` (mandatory, str): +22 The string you want to encrypt through reverse cipher encryption. +23 +24 Returns +25 ---------- +26 A string encrypted through reverse cipher encryption. +27 """ +28 translated_text = '' +29 str_len = len(plain_text_str) - 1 +30 while str_len >= 0: +31 translated_text = translated_text + plain_text_str[str_len] +32 str_len = str_len - 1 +33 +34 del plain_text_str +35 +36 return translated_textReturns
-38def reverse_cipher_decrypt(encrypted_text_str: str): -39 """ -40 Decrypts a string that was presumed to be encrypted by a reverse cipher encryption. -41 -42 Parameters -43 ---------- -44 `encrypted_text_str` (mandatory, str): -45 The string you presume that is encrypted through reverse cipher encryption, -46 that you want decrypted. -47 -48 Returns -49 ---------- -50 A decrypted string. -51 -52 """ -53 translated_text = '' -54 str_len = len(encrypted_text_str) - 1 -55 -56 while str_len >= 0: -57 translated_text = translated_text + encrypted_text_str[str_len] -58 str_len = str_len - 1 -59 -60 del encrypted_text_str -61 -62 return translated_text +@@ -454,67 +455,67 @@39def reverse_cipher_decrypt(encrypted_text_str: str): +40 """ +41 Decrypts a string that was presumed to be encrypted by a reverse cipher encryption. +42 +43 Parameters +44 ---------- +45 `encrypted_text_str` (mandatory, str): +46 The string you presume that is encrypted through reverse cipher encryption, +47 that you want decrypted. +48 +49 Returns +50 ---------- +51 A decrypted string. +52 +53 """ +54 translated_text = '' +55 str_len = len(encrypted_text_str) - 1 +56 +57 while str_len >= 0: +58 translated_text = translated_text + encrypted_text_str[str_len] +59 str_len = str_len - 1 +60 +61 del encrypted_text_str +62 +63 return translated_textReturns
-65def get_cfbd_api_token(api_key_dir: str = None): - 66 """ - 67 If the CFBD API key exists in the environment, - 68 or is in a file, this function retrives the CFBD API key, - 69 and returns it as a string. - 70 - 71 If this package is being used in a GitHub Actions action, - 72 set the key in the environment by - 73 creating a repository secret nammed `CFBD_API_KEY`. - 74 - 75 Parameters - 76 ---------- - 77 `api_key_dir` (str, optional): - 78 Optional argument. If `api_key_dir` is set to a non-null string, - 79 `set_cfbd_api_token()` will attempt to save the key file in that directory, - 80 instead of this user's home directory. - 81 - 82 Returns - 83 ---------- - 84 A CFBD API key that exists within this python environment, - 85 or within this computer. - 86 """ - 87 # raise NotImplementedError('it ain\'t ready') - 88 - 89 try: - 90 key = os.environ['CFBD_API_KEY'] - 91 return key - 92 except: - 93 logging.info( - 94 "CFBD key not found in this python environment.\nAttempting to load the API key from a file.") - 95 - 96 if api_key_dir != None: - 97 with open(f"{api_key_dir}/.cfbd/cfbd.json", "r") as f: - 98 json_str = f.read() - 99 -100 json_data = json.loads(json_str) -101 -102 return_key = json_data['cfbd_api_token'] -103 return_key = reverse_cipher_decrypt(return_key) -104 return_key = return_key[10:] -105 return_key = return_key[:-10] -106 -107 del api_key_dir, json_str, json_data -108 -109 return return_key -110 else: -111 home_dir = os.path.expanduser('~') -112 -113 with open(f"{home_dir}/.cfbd/cfbd.json", "r") as f: -114 json_str = f.read() -115 -116 json_data = json.loads(json_str) -117 -118 return_key = json_data['cfbd_api_token'] -119 return_key = reverse_cipher_decrypt(return_key) -120 return_key = return_key[10:] -121 return_key = return_key[:-10] -122 -123 del api_key_dir, json_str, json_data -124 -125 return return_key +@@ -552,133 +553,133 @@66def get_cfbd_api_token(api_key_dir: str = None): + 67 """ + 68 If the CFBD API key exists in the environment, + 69 or is in a file, this function retrives the CFBD API key, + 70 and returns it as a string. + 71 + 72 If this package is being used in a GitHub Actions action, + 73 set the key in the environment by + 74 creating a repository secret nammed `CFBD_API_KEY`. + 75 + 76 Parameters + 77 ---------- + 78 `api_key_dir` (str, optional): + 79 Optional argument. If `api_key_dir` is set to a non-null string, + 80 `set_cfbd_api_token()` will attempt to save the key file in that directory, + 81 instead of this user's home directory. + 82 + 83 Returns + 84 ---------- + 85 A CFBD API key that exists within this python environment, + 86 or within this computer. + 87 """ + 88 # raise NotImplementedError('it ain\'t ready') + 89 + 90 try: + 91 key = os.environ['CFBD_API_KEY'] + 92 return key + 93 except: + 94 logging.info( + 95 "CFBD key not found in this python environment.\nAttempting to load the API key from a file.") + 96 + 97 if api_key_dir != None: + 98 with open(f"{api_key_dir}/.cfbd/cfbd.json", "r") as f: + 99 json_str = f.read() +100 +101 json_data = json.loads(json_str) +102 +103 return_key = json_data['cfbd_api_token'] +104 return_key = reverse_cipher_decrypt(return_key) +105 return_key = return_key[10:] +106 return_key = return_key[:-10] +107 +108 del api_key_dir, json_str, json_data +109 +110 return return_key +111 else: +112 home_dir = os.path.expanduser('~') +113 +114 with open(f"{home_dir}/.cfbd/cfbd.json", "r") as f: +115 json_str = f.read() +116 +117 json_data = json.loads(json_str) +118 +119 return_key = json_data['cfbd_api_token'] +120 return_key = reverse_cipher_decrypt(return_key) +121 return_key = return_key[10:] +122 return_key = return_key[:-10] +123 +124 del api_key_dir, json_str, json_data +125 +126 return return_keyReturns
128def set_cfbd_api_token(api_key: str, api_key_dir: str = None): -129 """ -130 Sets the CFBD API key into a file that exists -131 either in `{home_dir}/.cfbd/cfbd_key.json`, or in a custom directory. -132 -133 Parameters -134 ---------- -135 `api_key` (str, mandatory): -136 The CFBD API key you have. -137 DO NOT input `Bearer {your CFBD API key}`, -138 this package will take care of that for you. -139 -140 `api_key_dir` (str, optional): -141 Optional argument. If `api_key_dir` is set to a non-null string, -142 `set_cfbd_api_token()` will attempt to save the key file in that directory, -143 instead of this user's home directory. -144 -145 Returns -146 ---------- -147 Nothing. -148 This function only sets up the API key file that this package can reference later. -149 """ -150 -151 alph_letters = [ -152 "a", -153 "b", -154 "c", -155 "d", -156 "e", -157 "f", -158 "g", -159 "h", -160 "i", -161 "j", -162 "k", -163 "l", -164 "m", -165 "n", -166 "o", -167 "p", -168 "q", -169 "r", -170 "s", -171 "t", -172 "u", -173 "v", -174 "w", -175 "x", -176 "y", -177 "z", -178 "0", -179 "1", -180 "2", -181 "3", -182 "4", -183 "5", -184 "6", -185 "7", -186 "8", -187 "9", -188 "A", -189 "B", -190 "C", -191 "D", -192 "E", -193 "F", -194 "G", -195 "H", -196 "I", -197 "J", -198 "K", -199 "L", -200 "M", -201 "N", -202 "O", -203 "P", -204 "Q", -205 "R", -206 "S", -207 "T", -208 "U", -209 "V", -210 "W", -211 "X", -212 "Y", -213 "Z", -214 ] -215 -216 front_hash = '' -217 back_hash = '' -218 -219 for i in range(0, 10): -220 r_str = secrets.choice(alph_letters) -221 front_hash += r_str -222 del r_str -223 -224 for i in range(0, 10): -225 r_str = secrets.choice(alph_letters) -226 back_hash += r_str -227 del r_str -228 -229 encrypted_key = reverse_cipher_encrypt(api_key) -230 -231 json_str = f"{{\n\t\"cfbd_api_token\":\"{front_hash}{encrypted_key}{back_hash}\"\n}}" -232 del encrypted_key -233 # print(json_str) -234 -235 if api_key_dir != None: -236 try: -237 os.mkdir(f"{api_key_dir}/.cfbd") -238 except: -239 pass -240 -241 with open(f"{api_key_dir}/.cfbd/cfbd.json", "w+") as f: -242 f.write(json_str) -243 else: -244 home_dir = os.path.expanduser('~') -245 -246 try: -247 os.mkdir(f"{home_dir}/.cfbd") -248 except: -249 pass -250 -251 with open(f"{home_dir}/.cfbd/cfbd.json", "w+") as f: -252 f.write(json_str) -253 -254 del json_str +diff --git a/docs/cfbd_json_py/venues.html b/docs/cfbd_json_py/venues.html index 05da353..7667240 100644 --- a/docs/cfbd_json_py/venues.html +++ b/docs/cfbd_json_py/venues.html @@ -55,15 +55,15 @@129def set_cfbd_api_token(api_key: str, api_key_dir: str = None): +130 """ +131 Sets the CFBD API key into a file that exists +132 either in `{home_dir}/.cfbd/cfbd_key.json`, or in a custom directory. +133 +134 Parameters +135 ---------- +136 `api_key` (str, mandatory): +137 The CFBD API key you have. +138 DO NOT input `Bearer {your CFBD API key}`, +139 this package will take care of that for you. +140 +141 `api_key_dir` (str, optional): +142 Optional argument. If `api_key_dir` is set to a non-null string, +143 `set_cfbd_api_token()` will attempt to save the key file in that directory, +144 instead of this user's home directory. +145 +146 Returns +147 ---------- +148 Nothing. +149 This function only sets up the API key file that this package can reference later. +150 """ +151 +152 alph_letters = [ +153 "a", +154 "b", +155 "c", +156 "d", +157 "e", +158 "f", +159 "g", +160 "h", +161 "i", +162 "j", +163 "k", +164 "l", +165 "m", +166 "n", +167 "o", +168 "p", +169 "q", +170 "r", +171 "s", +172 "t", +173 "u", +174 "v", +175 "w", +176 "x", +177 "y", +178 "z", +179 "0", +180 "1", +181 "2", +182 "3", +183 "4", +184 "5", +185 "6", +186 "7", +187 "8", +188 "9", +189 "A", +190 "B", +191 "C", +192 "D", +193 "E", +194 "F", +195 "G", +196 "H", +197 "I", +198 "J", +199 "K", +200 "L", +201 "M", +202 "N", +203 "O", +204 "P", +205 "Q", +206 "R", +207 "S", +208 "T", +209 "U", +210 "V", +211 "W", +212 "X", +213 "Y", +214 "Z", +215 ] +216 +217 front_hash = '' +218 back_hash = '' +219 +220 for i in range(0, 10): +221 r_str = secrets.choice(alph_letters) +222 front_hash += r_str +223 del r_str +224 +225 for i in range(0, 10): +226 r_str = secrets.choice(alph_letters) +227 back_hash += r_str +228 del r_str +229 +230 encrypted_key = reverse_cipher_encrypt(api_key) +231 +232 json_str = f"{{\n\t\"cfbd_api_token\":\"{front_hash}{encrypted_key}{back_hash}\"\n}}" +233 del encrypted_key +234 # print(json_str) +235 +236 if api_key_dir != None: +237 try: +238 os.mkdir(f"{api_key_dir}/.cfbd") +239 except: +240 pass +241 +242 with open(f"{api_key_dir}/.cfbd/cfbd.json", "w+") as f: +243 f.write(json_str) +244 else: +245 home_dir = os.path.expanduser('~') +246 +247 try: +248 os.mkdir(f"{home_dir}/.cfbd") +249 except: +250 pass +251 +252 with open(f"{home_dir}/.cfbd/cfbd.json", "w+") as f: +253 f.write(json_str) +254 +255 del json_str
-1# Creation Date: 08/30/2023 01:13 EDT - 2# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) - 3# File Name: venues.py - 4# Purpose: Houses functions pertaining to CFB team venues/stadium data within the CFBD API. - 5#################################################################################################### - 6 - 7def get_cfbd_venues( - 8 api_key: str = None, - 9 api_key_dir: str = None, -10 + 2# Last Updated Date: 10/06/2023 07:54 PM EDT + 3# Author: Joseph Armstrong (armstrongjoseph08@gmail.com) + 4# File Name: venues.py + 5# Purpose: Houses functions pertaining to CFB team venues/stadium data within the CFBD API. + 6#################################################################################################### + 7 + 8def get_cfbd_venues( + 9 api_key: str = None, +10 api_key_dir: str = None, 11 return_as_dict: bool = False): 12 """ 13 @@ -86,10 +86,9 @@
8def get_cfbd_venues( - 9 api_key: str = None, -10 api_key_dir: str = None, -11 +9def get_cfbd_venues( +10 api_key: str = None, +11 api_key_dir: str = None, 12 return_as_dict: bool = False): 13 """ 14 diff --git a/docs/search.js b/docs/search.js index c499569..f0b526e 100644 --- a/docs/search.js +++ b/docs/search.js @@ -1,6 +1,6 @@ window.pdocSearch = (function(){ /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e 1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o \n"}, "cfbd_json_py.betting": {"fullname": "cfbd_json_py.betting", "modulename": "cfbd_json_py.betting", "kind": "module", "doc": "\n"}, "cfbd_json_py.betting.get_cfbd_betting_lines": {"fullname": "cfbd_json_py.betting.get_cfbd_betting_lines", "modulename": "cfbd_json_py.betting", "qualname": "get_cfbd_betting_lines", "kind": "function", "doc": " Retrives betting information from the CFBD API for a given season, \nor you could only get betting information for a single game.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n The season you want to retrive betting information from.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
game_id
(int, optional):\n Optional argument. \n Ifgame_id
is set to a game ID,get_cfb_betting_lines()
will try to get \n all betting informaiton for that game ID.\n\n
week
(int, optional):\n Optional argument.\n Ifweek
is set to an integer, this function will attempt \n to load betting data from games in that season, and that week.\n\n
season_type
(str, semi-optional):\n Semi-optional argument.\n By defualt, this will be set to \"regular\", for the CFB regular season.\n If you want postseason betting data, setseason_type
to \"postseason\".\n Ifseason_type
is set to anything but \"regular\" or \"postseason\", \n aValueError()
will be raised.\n\n
team
(str, optional):\n Optional argument.\n If you only want betting information for a team, \n regardless if they are the home/away team,\n setteam
to the name of the team you want game-level betting data from.\n\n
home_team
(str, optional):\n Optional argument.\n If you only want betting information for a team, \n where that team was the home team in this season,\n sethome_team
to the name of the team you want game-level betting data from.\n\n
away_team
(str, optional):\n Optional argument.\n If you only want betting information for a team, \n where that team was the away team in this season,\n setaway_team
to the name of the team you want game-level betting data from.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want betting information from games \n involving teams a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want betting informaiton from.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.betting import get_cfbd_betting_lines\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Gets all available betting info for the 2020 CFB season.\n print(\"Gets all available betting info for the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Gets all available betting info for the 2020 CFB season, in week 2.\n print(\"Gets all available betting info for the 2020 CFB season, in week 2.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n week=2\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).\n print(\"Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n season_type=\"postseason\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.\n print(\"Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Ohio Bobcats home games the 2020 CFB season.\n print(\"Gets all betting info for Ohio Bobcats home games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n home_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.\n print(\"Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n away_team=\"Ohio State\"\n )\n\n # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.\n print(\"Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n conference_abv=\"ACC\"\n )\n print(json_data)\n time.sleep(5)\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Gets all available betting info for the 2020 CFB season.\n print(\"Gets all available betting info for the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n season=2020\n )\n print(json_data)\n time.sleep(5)\n # Gets all available betting info for the 2020 CFB season, in week 2.\n print(\"Gets all available betting info for the 2020 CFB season, in week 2.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n week=2\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).\n print(\"Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n season_type=\"postseason\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.\n print(\"Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Ohio Bobcats home games the 2020 CFB season.\n print(\"Gets all betting info for Ohio Bobcats home games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n home_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.\n print(\"Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n\n season=2020,\n away_team=\"Ohio State\"\n )\n\n # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.\n print(\"Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n conference_abv=\"ACC\"\n )\n print(json_data)\n time.sleep(5)\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n return_as_dict=True\n )\n print(json_data)\n\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tgame_id: int = None,\tweek: int = None,\tseason_type: str = 'regular',\tteam: str = None,\thome_team: str = None,\taway_team: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.coaches": {"fullname": "cfbd_json_py.coaches", "modulename": "cfbd_json_py.coaches", "kind": "module", "doc": "\n"}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"fullname": "cfbd_json_py.coaches.get_cfbd_coaches_info", "modulename": "cfbd_json_py.coaches", "qualname": "get_cfbd_coaches_info", "kind": "function", "doc": "DataFrame
object with college football betting data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with college football betting data.Retrives information from the CFBD API on CFB Head Coaches.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
first_name
(str, optional):\n Optional argument.\n If you want to only look up coaches with a specific first name, \n set this variable to that specific first name, and this function \n will attempt to look up coaches with that specific first name.\n\n
last_name
(str, optional):\n Optional argument.\n If you want to only look up coaches with a specific last name, \n set this variable to that specific first name, and this function \n will attempt to look up coaches with that specific last name.\n\n
team
(str, optional):\n Optional argument.\n If you want to filter and drill down to coaches who coached a specific\n CFB team, set this\n\n
season
(int, optional):\n Optional argument.\n If you only want coaches from a specific season, set this variable to that season.\n\n
min_season
(int, optional):\n Optional argument.\n Similar toyear
, but used in tandem withmax_season
to get coaches who coached with in a range of seasons.\n\n
max_season
(int, optional):\n Optional argument.\n Similar toyear
, but used in tandem withmin_season
to get coaches who coached with in a range of seasons.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.coaches import get_cfbd_coaches_info\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Getting all coaches in the 2020 CFB season\n print(\"Getting every coach in the 2020 CFB season.\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2020\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n # Getting all coaches in the 2020 CFB season, with a first name of \"Luke\"\n print(\"Getting every coach in the 2020 CFB season, with a first name of \"Luke\".\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2020,\n first_name=\"Luke\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting all coaches in the 2020 CFB season, with a last name of \"Day\"\n print(\"Getting all coaches in the 2020 CFB season, with a last name of \"Day\".\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2020,\n last_name=\"Day\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every head coach for the 2020 Southern Mississippi Golden Eagles\n print(\"Getting every head coach for the 2020 Southern Mississippi Golden Eagles.\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2020,\n team=\"Southern Mississippi\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every head coach between the 2019 and 2022 CFB seasons\n print(\"Getting every head coach between the 2019 and 2022 CFB seasons\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n min_season=2019,\n max_season=2022\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2022,\n team=\"Cincinnati\",\n return_as_dict=True\n )\n print(f\"{json_data}\")\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Getting every coach in the 2020 CFB season.\n print(\"Getting every coach in the 2020 CFB season.\")\n json_data = get_cfbd_coaches_info(season=2020)\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every coach in the 2020 CFB season, with a first name of \"Luke\".\n print(\"Getting every coach in the 2020 CFB season, with a first name of \"Luke\".\")\n json_data = get_cfbd_coaches_info(\n season=2020,\n first_name=\"Luke\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every coach in the 2020 CFB season, with a last name of \"Day\".\n print(\"Getting every coach in the 2020 CFB season, with a last name of \"Day\".\")\n json_data = get_cfbd_coaches_info(\n season=2020,\n last_name=\"Day\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every head coach for the 2020 Southern Mississippi Golden Eagles.\n print(\"Getting every head coach for the 2020 Southern Mississippi Golden Eagles.\")\n json_data = get_cfbd_coaches_info(\n season=2020,\n team=\"Southern Mississippi\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every head coach between the 2019 and 2022 CFB seasons.\n print(\"Getting every head coach between the 2019 and 2022 CFB seasons.\")\n json_data = get_cfbd_coaches_info(\n min_season=2019,\n max_season=2022\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_coaches_info(\n season=2022,\n team=\"Cincinnati\",\n return_as_dict=True\n )\n print(f\"{json_data}\")\n\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tfirst_name: str = None,\tlast_name: str = None,\tteam: str = None,\tseason: int = None,\tmin_season: int = None,\tmax_season: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.conferences": {"fullname": "cfbd_json_py.conferences", "modulename": "cfbd_json_py.conferences", "kind": "module", "doc": "\n"}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"fullname": "cfbd_json_py.conferences.get_cfbd_conference_info", "modulename": "cfbd_json_py.conferences", "qualname": "get_cfbd_conference_info", "kind": "function", "doc": "DataFrame
object with CFB head coach data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with CFB head coach data.Retrives a list of CFB conferences from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.conferences import get_cfbd_conference_info\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Gets CFB confrence info from the CFBD API.\n print(\"Gets CFB confrence info from the CFBD API.\")\n json_data = get_cfbd_conference_info(api_key=cfbd_key)\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_conference_info(\n api_key=cfbd_key,\n return_as_dict=True)\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Gets CFB confrence info from the CFBD API.\n print(\"Gets CFB confrence info from the CFBD API.\")\n json_data = get_cfbd_conference_info()\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_conference_info(return_as_dict=True)\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.draft": {"fullname": "cfbd_json_py.draft", "modulename": "cfbd_json_py.draft", "kind": "module", "doc": "\n"}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"fullname": "cfbd_json_py.draft.get_cfbd_nfl_teams", "modulename": "cfbd_json_py.draft", "qualname": "get_cfbd_nfl_teams", "kind": "function", "doc": "DataFrame
object with CFB conference data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with CFB conference data.Retrives a list of NFL teams from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.draft import get_cfbd_nfl_teams\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Gets NFL team info from the CFBD API.\n print(\"Gets NFL team info from the CFBD API.\")\n json_data = get_cfbd_nfl_teams(api_key=cfbd_key)\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_teams(\n api_key=cfbd_key,\n return_as_dict=True)\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Gets NFL team info from the CFBD API.\n print(\"Gets NFL team info from the CFBD API.\")\n json_data = get_cfbd_nfl_teams()\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_teams(return_as_dict=True)\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"fullname": "cfbd_json_py.draft.get_cfbd_nfl_positions", "modulename": "cfbd_json_py.draft", "qualname": "get_cfbd_nfl_positions", "kind": "function", "doc": "DataFrame
object with NFL team data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with NFL team data.Retrives a list of player positions for the NFL Draft from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.draft import get_cfbd_nfl_positions\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Gets a list of player positions for the NFL Draft from the CFBD API.\n print(\"Gets a list of player positions for the NFL Draft from the CFBD API.\")\n json_data = get_cfbd_nfl_positions(api_key=cfbd_key)\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_positions(\n api_key=cfbd_key,\n return_as_dict=True)\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Gets a list of player positions for the NFL Draft from the CFBD API.\n print(\"Gets a list of player positions for the NFL Draft from the CFBD API.\")\n json_data = get_cfbd_nfl_positions()\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_positions(return_as_dict=True)\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"fullname": "cfbd_json_py.draft.get_cfbd_nfl_draft_info", "modulename": "cfbd_json_py.draft", "qualname": "get_cfbd_nfl_draft_info", "kind": "function", "doc": "DataFrame
object with player position data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with player position data.Retrives a list of actual NFL Draft selections from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.The following paramaters are optional, but it is highly reccomended to not call this function\nwithiout settting one of these five optional paramaters to a non-null value.
\n\n\n\n
season
(int, semi-optional):\n Semi-Optional argument. \n This is the season you want NFL Draft information for. For example, if you only want \n data for the 2020 NFL Draft, setseason
to2020
.\n\n
nfl_team
(str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific NFL team, setnfl_team
to the \n name of that team. For example, if you want to only get NFL Draft information for \n draft picks made by the Cincinnati Bengals, setnfl_team
toCincinnati
.\n\n
college
(str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific CFB team, setcollege
to the \n name of that team. For example, if you want to only get NFL Draft information for \n draft picks from the Clemson Tigers Football Program, setcollege
toClemson
.\n\n
conference
(str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific CFB confrence, setconference
to the abbreviation of that confrence. \n A list of CFBD API confrence abbreviations can be found in theconference_abbreviation
column from \n the pandas DataFrame that is returned by callingcfbd_json_py.conferences.get_cfbd_conference_info()
.\n For example, if you want to only get NFL Draft information for \n draft picks that played in the Big 12, setconfrence
toB12
.\n\n
position
(str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections who played a specific position, \n setposition
to that position's abbreviation. \n A list of CFBD API positions can be found in theposition_abbreviation
column from \n the pandas DataFrame that is returned by callingcfbd_json_py.draft.get_cfbd_nfl_positions()
.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.draft import get_cfbd_nfl_draft_info\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get NFL Draft selections from the 2020 NFL Draft.\n print(\"Get NFL Draft selections from the 2020 NFL Draft.\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made by the\n # 2020 Cincinnati Bengals.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020,\n nfl_team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made involving\n # Clemson Tigers football players.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020,\n college=\"Clemson\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made involving\n # players who played in the Southeastern Confrence (SEC).\n print(\"Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020,\n conference=\"SEC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made\n # where the selected player was a QB in college.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020,\n position=\"QB\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n position=\"QB\",\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get NFL Draft selections from the 2020 NFL Draft.\n print(\"Get NFL Draft selections from the 2020 NFL Draft.\")\n json_data = get_cfbd_nfl_draft_info(season=2020)\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made by the\n # 2020 Cincinnati Bengals.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n nfl_team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made involving\n # Clemson Tigers football players.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n college=\"Clemson\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made involving\n # players who played in the Southeastern Confrence (SEC).\n print(\"Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n conference=\"SEC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made\n # where the selected player was a QB in college.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n position=\"QB\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n position=\"QB\",\n return_as_dict=True\n )\n print(json_data)\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tnfl_team: str = None,\tcollege: str = None,\tconference_abv: str = None,\tposition: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.drives": {"fullname": "cfbd_json_py.drives", "modulename": "cfbd_json_py.drives", "kind": "module", "doc": "\n"}, "cfbd_json_py.drives.get_cfbd_drives_info": {"fullname": "cfbd_json_py.drives.get_cfbd_drives_info", "modulename": "cfbd_json_py.drives", "qualname": "get_cfbd_drives_info", "kind": "function", "doc": "DataFrame
object with NFL Draft selection data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with NFL Draft selection data.Retrives a list of CFB drives from the CFBD API.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n Required argument.\n Specifies the season you want CFB drive information from.\n This must be specified, otherwise this package, and by extension\n the CFBD API, will not accept the request to get CFB drive information.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
season_type
(str, semi-optional):\n Semi-optional argument.\n By defualt, this will be set to \"regular\", for the CFB regular season.\n If you want CFB drive data for non-regular season games, \n setseason_type
to \"postseason\".\n Ifseason_type
is set to anything but \"regular\" or \"postseason\", \n aValueError()
will be raised.\n\n
week
(int, optional):\n Optional argument.\n Ifweek
is set to an integer, this function will attempt \n to load CFB drive data from games in that season, and that week.\n\n
team
(str, optional):\n Optional argument.\n If you only want CFB drive data for a team, \n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB drive data from.\n\n
offensive_team
(str, optional):\n Optional argument.\n If you only want CFB drive data from a team, while they are on offense, \n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB drive data from.\n\n
defensive_team
(str, optional):\n Optional argument.\n If you only want CFB drive data from a team, while they are on defense,\n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB drive data from.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want CFB drive data from games \n involving teams a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use thecfbd_json_py.conferences.get_cfbd_conference_info()
\n function.\n\n
offensive_conference_abv
(str, optional):\n Optional argument.\n If you only want CFB drive data from games \n where the offensive team is from a specific confrenece,\n setconference_abv
to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use thecfbd_json_py.conferences.get_cfbd_conference_info()
\n function.\n\n
defensive_conference_abv
(str, optional):\n Optional argument.\n If you only want CFB drive data from games \n where the defensive team is from a specific confrenece,\n setconference_abv
to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use thecfbd_json_py.conferences.get_cfbd_conference_info()
\n function.\n\n
ncaa_division
(str, semi-optional):\n Semi-optional argument.\n By default,ncaa_division
will be set to \"fbs\", \n short for the Football Bowl Subdivision (FBS), \n formerly known as D1-A (read as \"division one single A\"),\n the highest level in the NCAA football pyramid,\n where teams can scolarship up to 85 players \n on their football team soley for athletic ability, \n and often have the largest athletics budgets\n within the NCAA.\n\nOther valid inputs are:\n- \"fcs\": Football Championship Subdivision (FCS), \n formerly known as D1-AA (read as \"division one double A\").\n An FCS school is still in the 1st division of the NCAA,\n making them elligable for the March Madness tournament,\n but may not have the resources to compete at the FBS level\n at this time. FCS schools are limited to 63 athletic scolarships\n for football.\n- \"ii\": NCAA Division II. Schools in this and D3 are not\n elligable for the March Madness tournament, \n and are limited to 36 athletic scolarships for their football team.\n- \"iii\": NCAA Division III. The largest single division within the \n NCAA football pyramid. \n D3 schools have the distinction of being part of \n the only NCAA division that cannot give out scolarships soley \n for athletic ability.\n
\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.drives import get_cfbd_drives_info\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get CFB Drive data from the 2020 CFB season.\n print(\"Get CFB Drive data from the 2020 CFB season.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from week 10 of the 2020 CFB season.\n print(\"Get CFB Drive data from week 10 of the 2020 CFB season.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats\n # Football Team.\n print(\"Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Ohio Bobcats\n # Football Team, when Ohio was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n offensive_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes\n # Football Team, when Ohio was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n defensive_team=\"Ohio State\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Big 12 games in the 2020 CFB season.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n conference_abv=\"B12\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season,\n # where the Big 10 team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n offensive_conference_abv=\"B1G\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Mid-American Conference (MAC) games\n # in the 2020 CFB season, where the MAC team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n defensive_conference_abv=\"MAC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Football Championship Subdivision (FCS) games\n # in week 3 ofthe 2020 CFB season,\n # where the MAC team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n week=3,\n ncaa_division=\"fcs\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n week=10,\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get CFB Drive data from the 2020 CFB season.\n print(\"Get CFB Drive data from the 2020 CFB season.\")\n json_data = get_cfbd_drives_info(\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from week 10 of the 2020 CFB season.\n print(\"Get CFB Drive data from week 10 of the 2020 CFB season.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats\n # Football Team.\n print(\"Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Ohio Bobcats\n # Football Team, when Ohio was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n offensive_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes\n # Football Team, when Ohio was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n defensive_team=\"Ohio State\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Big 12 games in the 2020 CFB season.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n conference_abv=\"B12\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season,\n # where the Big 10 team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n offensive_conference_abv=\"B1G\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Mid-American Conference (MAC) games\n # in the 2020 CFB season, where the MAC team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n defensive_conference_abv=\"MAC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Football Championship Subdivision (FCS) games\n # in week 3 ofthe 2020 CFB season,\n # where the MAC team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n week=3,\n ncaa_division=\"fcs\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n week=10,\n return_as_dict=True\n )\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tseason_type: str = 'regular',\tweek: int = None,\tteam: str = None,\toffensive_team: str = None,\tdefensive_team: str = None,\tconference_abv: str = None,\toffensive_conference_abv: str = None,\tdefensive_conference_abv: str = None,\tncaa_division: str = 'fbs',\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.games": {"fullname": "cfbd_json_py.games", "modulename": "cfbd_json_py.games", "kind": "module", "doc": "\n"}, "cfbd_json_py.games.get_cfbd_games": {"fullname": "cfbd_json_py.games.get_cfbd_games", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_games", "kind": "function", "doc": "DataFrame
object with CFB drive data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with CFB drive data.Retrives game schedule data CFBD API.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n Required argument.\n Specifies the season you want CFB game information from.\n This must be specified, otherwise this package, and by extension\n the CFBD API, will not accept the request to get CFB game information.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
season_type
(str, semi-optional):\n Semi-optional argument.\n By defualt, this will be set to \"regular\", for the CFB regular season.\n If you want CFB game information for non-regular season games, \n setseason_type
to \"postseason\".\n Ifseason_type
is set to anything but \"regular\" or \"postseason\", \n aValueError()
will be raised.\n\n
week
(int, optional):\n Optional argument.\n Ifweek
is set to an integer, this function will attempt \n to load CFB game data from games in that season, and in that week.\n\n
team
(str, optional):\n Optional argument.\n If you only want CFB game information for a team, \n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB game information from.\n\n
home_team
(str, optional):\n Optional argument.\n If you only want game information for a team, \n where that team was the home team in this season,\n sethome_team
to the name of the team you want game information for.\n\n
away_team
(str, optional):\n Optional argument.\n If you only want game information for a team, \n where that team was the away team in this season,\n setaway_team
to the name of the team you want game information for.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want game information from games \n involving teams a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want game information from.\n\n
ncaa_division
(str, semi-optional):\n Semi-optional argument.\n By default,ncaa_division
will be set to \"fbs\", \n short for the Football Bowl Subdivision (FBS), \n formerly known as D1-A (read as \"division one single A\"),\n the highest level in the NCAA football pyramid,\n where teams can scolarship up to 85 players \n on their football team soley for athletic ability, \n and often have the largest athletics budgets\n within the NCAA.\n\nOther valid inputs are:\n- \"fcs\": Football Championship Subdivision (FCS), \n formerly known as D1-AA (read as \"division one double A\").\n An FCS school is still in the 1st division of the NCAA,\n making them elligable for the March Madness tournament,\n but may not have the resources to compete at the FBS level\n at this time. FCS schools are limited to 63 athletic scolarships\n for football.\n- \"ii\": NCAA Division II. Schools in this and D3 are not\n elligable for the March Madness tournament, \n and are limited to 36 athletic scolarships for their football team.\n- \"iii\": NCAA Division III. The largest single division within the \n NCAA football pyramid. \n D3 schools have the distinction of being part of \n the only NCAA division that cannot give out scolarships soley \n for athletic ability.\n
\n\n
game_id
(int, optional):\n Optional argument. \n Ifgame_id
is set to a game ID,get_cfb_betting_lines()
will try to get \n game information just for that game ID.Usage
\n\n\n\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tseason_type: str = 'regular',\tweek: int = None,\tteam: str = None,\thome_team: str = None,\taway_team: str = None,\tconference_abv: str = None,\tncaa_division: str = 'fbs',\tgame_id: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.games.get_cfbd_team_records": {"fullname": "cfbd_json_py.games.get_cfbd_team_records", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_team_records", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.games.get_cfbd_season_weeks": {"fullname": "cfbd_json_py.games.get_cfbd_season_weeks", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_season_weeks", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.games.get_cfbd_game_media_info": {"fullname": "cfbd_json_py.games.get_cfbd_game_media_info", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_game_media_info", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tseason_type: str = 'regular',\tweek: int = None,\tteam: str = None,\tconference_abv: str = None,\tmedia_type: str = 'all',\tncaa_division: str = 'fbs',\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"fullname": "cfbd_json_py.games.get_cfbd_player_game_stats", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_player_game_stats", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tseason_type: str = 'regular',\tweek: int = None,\tteam: str = None,\tconference_abv: str = None,\tstat_category: str = None,\tgame_id: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"fullname": "cfbd_json_py.games.get_cfbd_advanced_game_stats", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_advanced_game_stats", "kind": "function", "doc": "\n", "signature": "(\tgame_id: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"fullname": "cfbd_json_py.games.get_cfbd_live_scoreboard", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_live_scoreboard", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tncaa_division: str = 'fbs',\tconference: str = None):", "funcdef": "def"}, "cfbd_json_py.games.get_cfbd_weather_info": {"fullname": "cfbd_json_py.games.get_cfbd_weather_info", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_weather_info", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tncaa_division: str = 'fbs',\tgame_id: int = None,\tseason: int = None,\tweek: int = None,\tseason_type: str = 'regular',\tconference: str = None):", "funcdef": "def"}, "cfbd_json_py.metrics": {"fullname": "cfbd_json_py.metrics", "modulename": "cfbd_json_py.metrics", "kind": "module", "doc": "\n"}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"fullname": "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_predicted_ppa_from_down_distance", "kind": "function", "doc": "\n", "signature": "(\tdown: int,\tdistance: int,\tapi_key: str = None,\tapi_key_dir: str = None):", "funcdef": "def"}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"fullname": "cfbd_json_py.metrics.get_cfbd_team_ppa_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_team_ppa_data", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\tconference_abv: str = None,\texclude_garbage_time: bool = False,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"fullname": "cfbd_json_py.metrics.get_cfbd_game_ppa_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_game_ppa_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\tconference_abv: str = None,\texclude_garbage_time: bool = False,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"fullname": "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_game_player_ppa_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\tposition: str = None,\tplayer_id: int = None,\tplay_threshold: int = None,\texclude_garbage_time: bool = False,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"fullname": "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_season_player_ppa_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tconference_abv: str = None,\tposition: str = None,\tplayer_id: int = None,\tplay_threshold: int = None,\texclude_garbage_time: bool = False,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"fullname": "cfbd_json_py.metrics.get_cfbd_game_win_probability_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_game_win_probability_data", "kind": "function", "doc": "\n", "signature": "(\tgame_id: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"fullname": "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_pregame_win_probability_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.players": {"fullname": "cfbd_json_py.players", "modulename": "cfbd_json_py.players", "kind": "module", "doc": "\n"}, "cfbd_json_py.players.cfbd_player_search": {"fullname": "cfbd_json_py.players.cfbd_player_search", "modulename": "cfbd_json_py.players", "qualname": "cfbd_player_search", "kind": "function", "doc": "\n", "signature": "(\tsearch_str: str,\tapi_key: str = None,\tapi_key_dir: str = None,\tposition: str = None,\tteam: str = None,\tseason: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.players.get_cfbd_player_usage": {"fullname": "cfbd_json_py.players.get_cfbd_player_usage", "modulename": "cfbd_json_py.players", "qualname": "get_cfbd_player_usage", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tconference_abv: str = None,\tposition: str = None,\tplayer_id: int = None,\texclude_garbage_time: bool = False,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.players.get_cfbd_returning_production": {"fullname": "cfbd_json_py.players.get_cfbd_returning_production", "modulename": "cfbd_json_py.players", "qualname": "get_cfbd_returning_production", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"fullname": "cfbd_json_py.players.get_cfbd_player_season_stats", "modulename": "cfbd_json_py.players", "qualname": "get_cfbd_player_season_stats", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tconference_abv: str = None,\tstart_week: int = None,\tend_week: int = None,\tseason_type: str = 'regular',\tstat_category: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"fullname": "cfbd_json_py.players.get_cfbd_transfer_portal_data", "modulename": "cfbd_json_py.players", "qualname": "get_cfbd_transfer_portal_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.plays": {"fullname": "cfbd_json_py.plays", "modulename": "cfbd_json_py.plays", "kind": "module", "doc": "\n"}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"fullname": "cfbd_json_py.plays.get_cfbd_pbp_data", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_pbp_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\toffensive_team: str = None,\tdefensive_team: str = None,\tconference_abv: str = None,\toffensive_conference_abv: str = None,\tdefensive_conference_abv: str = None,\tplay_type: int = None,\tncaa_division: str = 'fbs',\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"fullname": "cfbd_json_py.plays.get_cfbd_pbp_play_types", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_pbp_play_types", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"fullname": "cfbd_json_py.plays.get_cfbd_pbp_stats", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_pbp_stats", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\tgame_id: int = None,\tathlete_id: int = None,\tstat_type_id: int = None,\tseason_type: str = 'regular',\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"fullname": "cfbd_json_py.plays.get_cfbd_pbp_stat_types", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_pbp_stat_types", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"fullname": "cfbd_json_py.plays.get_cfbd_live_pbp_data", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_live_pbp_data", "kind": "function", "doc": "\n", "signature": "(\tgame_id: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.rankings": {"fullname": "cfbd_json_py.rankings", "modulename": "cfbd_json_py.rankings", "kind": "module", "doc": "\n"}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"fullname": "cfbd_json_py.rankings.get_cfbd_poll_rankings", "modulename": "cfbd_json_py.rankings", "qualname": "get_cfbd_poll_rankings", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.ratings": {"fullname": "cfbd_json_py.ratings", "modulename": "cfbd_json_py.ratings", "kind": "module", "doc": "\n"}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"fullname": "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings", "modulename": "cfbd_json_py.ratings", "qualname": "get_cfbd_sp_plus_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"fullname": "cfbd_json_py.ratings.get_cfbd_srs_ratings", "modulename": "cfbd_json_py.ratings", "qualname": "get_cfbd_srs_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: int = None,\tconferenece: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"fullname": "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings", "modulename": "cfbd_json_py.ratings", "qualname": "get_cfbd_sp_plus_conference_ratings", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"fullname": "cfbd_json_py.ratings.get_cfbd_elo_ratings", "modulename": "cfbd_json_py.ratings", "qualname": "get_cfbd_elo_ratings", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tseason_type: str = 'regular',\tteam: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.recruiting": {"fullname": "cfbd_json_py.recruiting", "modulename": "cfbd_json_py.recruiting", "kind": "module", "doc": "\n"}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"fullname": "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings", "modulename": "cfbd_json_py.recruiting", "qualname": "get_cfbd_player_recruit_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\trecruit_classification: str = 'HighSchool',\tposition: str = None,\tstate: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"fullname": "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings", "modulename": "cfbd_json_py.recruiting", "qualname": "get_cfbd_team_recruiting_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"fullname": "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings", "modulename": "cfbd_json_py.recruiting", "qualname": "get_cfbd_team_recruiting_group_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tstart_season: int = None,\tend_season: int = None,\tteam: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.stats": {"fullname": "cfbd_json_py.stats", "modulename": "cfbd_json_py.stats", "kind": "module", "doc": "\n"}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"fullname": "cfbd_json_py.stats.get_cfbd_team_season_stats", "modulename": "cfbd_json_py.stats", "qualname": "get_cfbd_team_season_stats", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\tconference_abv: str = None,\tstart_week: int = None,\tend_week: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"fullname": "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats", "modulename": "cfbd_json_py.stats", "qualname": "get_cfbd_advanced_team_season_stats", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\texclude_garbage_time: bool = False,\tstart_week: int = None,\tend_week: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"fullname": "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats", "modulename": "cfbd_json_py.stats", "qualname": "get_cfbd_advanced_team_game_stats", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\tweek: int = None,\topponent: str = None,\texclude_garbage_time: bool = False,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"fullname": "cfbd_json_py.stats.get_cfbd_team_stat_categories", "modulename": "cfbd_json_py.stats", "qualname": "get_cfbd_team_stat_categories", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.teams": {"fullname": "cfbd_json_py.teams", "modulename": "cfbd_json_py.teams", "kind": "module", "doc": "\n"}, "cfbd_json_py.teams.get_cfbd_team_information": {"fullname": "cfbd_json_py.teams.get_cfbd_team_information", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_team_information", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"fullname": "cfbd_json_py.teams.get_cfbd_fbs_team_list", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_fbs_team_list", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"fullname": "cfbd_json_py.teams.get_cfbd_team_rosters", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_team_rosters", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tseason: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"fullname": "cfbd_json_py.teams.get_cfbd_team_talent_rankings", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_team_talent_rankings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"fullname": "cfbd_json_py.teams.get_cfbd_team_matchup_history", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_team_matchup_history", "kind": "function", "doc": "\n", "signature": "(\tteam_1: str,\tteam_2: str,\tapi_key: str = None,\tapi_key_dir: str = None,\tmin_season: int = None,\tmax_season: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, "cfbd_json_py.utls": {"fullname": "cfbd_json_py.utls", "modulename": "cfbd_json_py.utls", "kind": "module", "doc": "\n"}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"fullname": "cfbd_json_py.utls.reverse_cipher_encrypt", "modulename": "cfbd_json_py.utls", "qualname": "reverse_cipher_encrypt", "kind": "function", "doc": "DataFrame
object with college football game information, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with college football game information.Implements a reverse cipher encription to a plain text string.
\n\nParameters
\n\n\n\n
plain_text_str
(mandatory, str):\n The string you want to encrypt through reverse cipher encryption.Returns
\n\nA string encrypted through reverse cipher encryption.
\n", "signature": "(plain_text_str: str):", "funcdef": "def"}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"fullname": "cfbd_json_py.utls.reverse_cipher_decrypt", "modulename": "cfbd_json_py.utls", "qualname": "reverse_cipher_decrypt", "kind": "function", "doc": "Decrypts a string that was presumed to be encrypted by a reverse cipher encryption.
\n\nParameters
\n\n\n\n
encrypted_text_str
(mandatory, str):\n The string you presume that is encrypted through reverse cipher encryption, \n that you want decrypted.Returns
\n\nA decrypted string.
\n", "signature": "(encrypted_text_str: str):", "funcdef": "def"}, "cfbd_json_py.utls.get_cfbd_api_token": {"fullname": "cfbd_json_py.utls.get_cfbd_api_token", "modulename": "cfbd_json_py.utls", "qualname": "get_cfbd_api_token", "kind": "function", "doc": "If the CFBD API key exists in the environment, \nor is in a file, this function retrives the CFBD API key, \nand returns it as a string.
\n\nIf this package is being used in a GitHub Actions action,\nset the key in the environment by \ncreating a repository secret nammed
\n\nCFBD_API_KEY
.Parameters
\n\n\n\n
api_key_dir
(str, optional):\n Optional argument. Ifapi_key_dir
is set to a non-null string, \nset_cfbd_api_token()
will attempt to save the key file in that directory,\n instead of this user's home directory.Returns
\n\nA CFBD API key that exists within this python environment,\nor within this computer.
\n", "signature": "(api_key_dir: str = None):", "funcdef": "def"}, "cfbd_json_py.utls.set_cfbd_api_token": {"fullname": "cfbd_json_py.utls.set_cfbd_api_token", "modulename": "cfbd_json_py.utls", "qualname": "set_cfbd_api_token", "kind": "function", "doc": "Sets the CFBD API key into a file that exists \neither in
\n\n{home_dir}/.cfbd/cfbd_key.json
, or in a custom directory.Parameters
\n\n\n\n
api_key
(str, mandatory):\n The CFBD API key you have. \n DO NOT inputBearer {your CFBD API key}
,\n this package will take care of that for you.\n\n
api_key_dir
(str, optional):\n Optional argument. Ifapi_key_dir
is set to a non-null string, \nset_cfbd_api_token()
will attempt to save the key file in that directory,\n instead of this user's home directory.Returns
\n\nNothing. \nThis function only sets up the API key file that this package can reference later.
\n", "signature": "(api_key: str, api_key_dir: str = None):", "funcdef": "def"}, "cfbd_json_py.venues": {"fullname": "cfbd_json_py.venues", "modulename": "cfbd_json_py.venues", "kind": "module", "doc": "\n"}, "cfbd_json_py.venues.get_cfbd_venues": {"fullname": "cfbd_json_py.venues.get_cfbd_venues", "modulename": "cfbd_json_py.venues", "qualname": "get_cfbd_venues", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}}, "docInfo": {"cfbd_json_py": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.betting": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.betting.get_cfbd_betting_lines": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 211, "bases": 0, "doc": 1489}, "cfbd_json_py.coaches": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 177, "bases": 0, "doc": 1173}, "cfbd_json_py.conferences": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 554}, "cfbd_json_py.draft": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 554}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 582}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 157, "bases": 0, "doc": 1397}, "cfbd_json_py.drives": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.drives.get_cfbd_drives_info": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 255, "bases": 0, "doc": 2199}, "cfbd_json_py.games": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.games.get_cfbd_games": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 234, "bases": 0, "doc": 812}, "cfbd_json_py.games.get_cfbd_team_records": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 120, "bases": 0, "doc": 3}, "cfbd_json_py.games.get_cfbd_season_weeks": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 76, "bases": 0, "doc": 3}, "cfbd_json_py.games.get_cfbd_game_media_info": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 200, "bases": 0, "doc": 3}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 192, "bases": 0, "doc": 3}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 86, "bases": 0, "doc": 3}, "cfbd_json_py.games.get_cfbd_weather_info": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 164, "bases": 0, "doc": 3}, "cfbd_json_py.metrics": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"qualname": 7, "fullname": 11, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 140, "bases": 0, "doc": 3}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 174, "bases": 0, "doc": 3}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 211, "bases": 0, "doc": 3}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 189, "bases": 0, "doc": 3}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 135, "bases": 0, "doc": 3}, "cfbd_json_py.players": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.players.cfbd_player_search": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 131, "bases": 0, "doc": 3}, "cfbd_json_py.players.get_cfbd_player_usage": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 170, "bases": 0, "doc": 3}, "cfbd_json_py.players.get_cfbd_returning_production": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 113, "bases": 0, "doc": 3}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 193, "bases": 0, "doc": 3}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 76, "bases": 0, "doc": 3}, "cfbd_json_py.plays": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 251, "bases": 0, "doc": 3}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 212, "bases": 0, "doc": 3}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "cfbd_json_py.rankings": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 117, "bases": 0, "doc": 3}, "cfbd_json_py.ratings": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 101, "bases": 0, "doc": 3}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 119, "bases": 0, "doc": 3}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 95, "bases": 0, "doc": 3}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 154, "bases": 0, "doc": 3}, "cfbd_json_py.recruiting": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 160, "bases": 0, "doc": 3}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 101, "bases": 0, "doc": 3}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 140, "bases": 0, "doc": 3}, "cfbd_json_py.stats": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 158, "bases": 0, "doc": 3}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 159, "bases": 0, "doc": 3}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"qualname": 6, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 3}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "cfbd_json_py.teams": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.teams.get_cfbd_team_information": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 84, "bases": 0, "doc": 3}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 83, "bases": 0, "doc": 3}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 101, "bases": 0, "doc": 3}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 83, "bases": 0, "doc": 3}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 127, "bases": 0, "doc": 3}, "cfbd_json_py.utls": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 18, "bases": 0, "doc": 50}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 18, "bases": 0, "doc": 55}, "cfbd_json_py.utls.get_cfbd_api_token": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 134}, "cfbd_json_py.utls.set_cfbd_api_token": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 137}, "cfbd_json_py.venues": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "cfbd_json_py.venues.get_cfbd_venues": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}}, "length": 71, "save": true}, "index": {"qualname": {"root": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 50}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 7, "s": {"docs": {"cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 52}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 2}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}}, "df": 6, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 3}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 13, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}}, "df": 1}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}}, "df": 5}}, "b": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 5}}}, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 9}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}}, "df": 7}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}}, "df": 5}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"cfbd_json_py.players.cfbd_player_search": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}}, "df": 2, "s": {"docs": {"cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 7}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}}, "df": 1}}}}}}}}}, "p": {"docs": {"cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 3}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 2}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {"cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 1}}}}}}}}, "fullname": {"root": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py": {"tf": 1}, "cfbd_json_py.betting": {"tf": 1}, "cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.players": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.rankings": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1.4142135623730951}, "cfbd_json_py.teams": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1.4142135623730951}, "cfbd_json_py.utls": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.venues": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1.4142135623730951}}, "df": 71}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.coaches": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}}, "df": 2, "s": {"docs": {"cfbd_json_py.conferences": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}}, "df": 2}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 2}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py": {"tf": 1}, "cfbd_json_py.betting": {"tf": 1}, "cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.utls": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}, "cfbd_json_py.venues": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 71}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py": {"tf": 1}, "cfbd_json_py.betting": {"tf": 1}, "cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.utls": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}, "cfbd_json_py.venues": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 71}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 7, "s": {"docs": {"cfbd_json_py.players": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}}, "df": 6}}}, "s": {"docs": {"cfbd_json_py.plays": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 6}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}}, "df": 1}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}}, "df": 5}}, "b": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 5}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.betting": {"tf": 1}, "cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 50}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 7, "s": {"docs": {"cfbd_json_py.games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}}, "df": 9}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}}, "df": 6, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}}, "df": 1}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.draft": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}}, "df": 4}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 9}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 3}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 13, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.teams": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 7}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.recruiting": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.rankings": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}}, "df": 3}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}}, "df": 8}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}}, "df": 5}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"cfbd_json_py.players.cfbd_player_search": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}}, "df": 2, "s": {"docs": {"cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}}, "df": 9}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}}, "df": 1}}}}}}}}}, "p": {"docs": {"cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.metrics": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}}, "df": 8}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 3}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 2}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.utls": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 5}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {"cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.venues": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"docs": {}, "df": 0}}, "signature": {"root": {"1": {"docs": {"cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 1}, "2": {"docs": {"cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 1}, "3": {"9": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 2.449489742783178}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 2}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}}, "df": 17}, "docs": {}, "df": 0}, "docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 12.922847983320086}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 11.874342087037917}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 7.14142842854285}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 7.14142842854285}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 7.14142842854285}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 11.224972160321824}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 14.106735979665885}, "cfbd_json_py.games.get_cfbd_games": {"tf": 13.564659966250536}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 9.797958971132712}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 7.745966692414834}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 12.489995996796797}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 12.328828005937952}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 7.745966692414834}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 8.246211251235321}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 11.40175425099138}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 7.3484692283495345}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 10.535653752852738}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 11.704699910719626}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 12.922847983320086}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 12.24744871391589}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 7.745966692414834}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 10.344080432788601}, "cfbd_json_py.players.cfbd_player_search": {"tf": 10.246950765959598}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 11.61895003862225}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 9.486832980505138}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 12.328828005937952}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 7.745966692414834}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 14.035668847618199}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 7.14142842854285}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 12.922847983320086}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 7.14142842854285}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 7.745966692414834}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 9.591663046625438}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 9}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 9.797958971132712}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 8.660254037844387}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 11.045361017187261}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 11.313708498984761}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 9}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 10.535653752852738}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 11.224972160321824}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 11.224972160321824}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 11.958260743101398}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 7.14142842854285}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 8.12403840463596}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 8.12403840463596}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 9}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 8.12403840463596}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 9.9498743710662}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 3.7416573867739413}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 3.7416573867739413}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 4.47213595499958}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 5.291502622129181}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 7.14142842854285}}, "df": 54, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1.4142135623730951}}, "df": 37}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"cfbd_json_py.players.cfbd_player_search": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.6457513110645907}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.1622776601683795}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.8284271247461903}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 2}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 2.6457513110645907}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 2.449489742783178}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 2}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 2.23606797749979}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 2}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 2.23606797749979}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 2.23606797749979}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 2.23606797749979}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 2}, "cfbd_json_py.players.cfbd_player_search": {"tf": 2.449489742783178}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 2.23606797749979}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 2}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 2.449489742783178}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 3}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 2.23606797749979}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 2.23606797749979}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 2.449489742783178}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 2}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 2}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 2.23606797749979}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 2}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1.4142135623730951}}, "df": 54}, "a": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}}, "df": 3, "e": {"docs": {"cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}}, "df": 4}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 2}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 2.23606797749979}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1.4142135623730951}}, "df": 41}}, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 11}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1.4142135623730951}}, "df": 52}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "v": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}}, "df": 20}}, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 47}, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}}, "df": 1}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1.4142135623730951}}, "df": 52}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.8284271247461903}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.8284271247461903}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.6457513110645907}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.8284271247461903}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 2.23606797749979}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 2.23606797749979}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 2.6457513110645907}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 2.449489742783178}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 2.23606797749979}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 2.23606797749979}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 2.6457513110645907}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 2.6457513110645907}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 2}, "cfbd_json_py.players.cfbd_player_search": {"tf": 2.23606797749979}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 2.449489742783178}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 2}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 2.6457513110645907}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 3.1622776601683795}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 2.8284271247461903}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1.4142135623730951}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 2}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 2.23606797749979}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 2.23606797749979}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 2.449489742783178}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 2}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 2.449489742783178}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 2.6457513110645907}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 2.449489742783178}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 2.449489742783178}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1.4142135623730951}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 2}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 2}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1.4142135623730951}}, "df": 52}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}}, "df": 6}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 52}, "c": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 47}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}}, "df": 6}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}}, "df": 8}}, "r": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 7}}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 17}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 15}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1.4142135623730951}}, "df": 30}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 7}}}, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}}, "df": 2}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 14}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 47}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 1}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}}, "df": 22}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 47}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1.4142135623730951}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1.4142135623730951}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.4142135623730951}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1}}, "df": 47}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}}, "df": 6}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1}}, "df": 6}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1}}, "df": 7}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1}}, "df": 4}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 1}}}}}}}}}}}, "bases": {"root": {"docs": {}, "df": 0}}, "doc": {"root": {"1": {"0": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.4641016151377544}}, "df": 1}, "2": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 2}, "docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}, "2": {"0": {"1": {"9": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.449489742783178}}, "df": 1}, "docs": {}, "df": 0}, "2": {"0": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 6.6332495807108}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.898979485566356}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 6.164414002968976}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 7.483314773547883}}, "df": 4}, "2": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.8284271247461903}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.449489742783178}}, "df": 1}, "3": {"6": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}, "docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}}, "df": 1}, "5": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.4641016151377544}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.1622776601683795}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.1622776601683795}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.242640687119285}}, "df": 7}, "6": {"3": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "8": {"5": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"cfbd_json_py": {"tf": 1.7320508075688772}, "cfbd_json_py.betting": {"tf": 1.7320508075688772}, "cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 12.569805089976535}, "cfbd_json_py.coaches": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 11.313708498984761}, "cfbd_json_py.conferences": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 8.717797887081348}, "cfbd_json_py.draft": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 8.717797887081348}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 8.717797887081348}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 12.609520212918492}, "cfbd_json_py.drives": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 14.422205101855956}, "cfbd_json_py.games": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 11.832159566199232}, "cfbd_json_py.games.get_cfbd_team_records": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_season_weeks": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_game_media_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_player_game_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_advanced_game_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_live_scoreboard": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_weather_info": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_team_ppa_data": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_game_ppa_data": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_game_win_probability_data": {"tf": 1.7320508075688772}, "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data": {"tf": 1.7320508075688772}, "cfbd_json_py.players": {"tf": 1.7320508075688772}, "cfbd_json_py.players.cfbd_player_search": {"tf": 1.7320508075688772}, "cfbd_json_py.players.get_cfbd_player_usage": {"tf": 1.7320508075688772}, "cfbd_json_py.players.get_cfbd_returning_production": {"tf": 1.7320508075688772}, "cfbd_json_py.players.get_cfbd_player_season_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.players.get_cfbd_transfer_portal_data": {"tf": 1.7320508075688772}, "cfbd_json_py.plays": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_pbp_data": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_pbp_play_types": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_pbp_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_pbp_stat_types": {"tf": 1.7320508075688772}, "cfbd_json_py.plays.get_cfbd_live_pbp_data": {"tf": 1.7320508075688772}, "cfbd_json_py.rankings": {"tf": 1.7320508075688772}, "cfbd_json_py.rankings.get_cfbd_poll_rankings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_srs_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.ratings.get_cfbd_elo_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.recruiting": {"tf": 1.7320508075688772}, "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings": {"tf": 1.7320508075688772}, "cfbd_json_py.stats": {"tf": 1.7320508075688772}, "cfbd_json_py.stats.get_cfbd_team_season_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats": {"tf": 1.7320508075688772}, "cfbd_json_py.stats.get_cfbd_team_stat_categories": {"tf": 1.7320508075688772}, "cfbd_json_py.teams": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_team_information": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_fbs_team_list": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_team_rosters": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_team_talent_rankings": {"tf": 1.7320508075688772}, "cfbd_json_py.teams.get_cfbd_team_matchup_history": {"tf": 1.7320508075688772}, "cfbd_json_py.utls": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 4}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 4}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 5.0990195135927845}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 5.5677643628300215}, "cfbd_json_py.venues": {"tf": 1.7320508075688772}, "cfbd_json_py.venues.get_cfbd_venues": {"tf": 1.7320508075688772}}, "df": 71, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}}, "df": 1, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 9}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.1622776601683795}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.1622776601683795}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.1622776601683795}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.1622776601683795}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 12}, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.6457513110645907}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "b": {"1": {"2": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 2}, "docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}}, "df": 1}}, "docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 7.937253933193772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 3}}}}, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 10}, "u": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 5}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.4641016151377544}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}, "w": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.449489742783178}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.58257569495584}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 4}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.123105625617661}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 2.23606797749979}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.7320508075688772}}, "df": 10, "f": {"docs": {}, "df": 0, "o": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 5.291502622129181}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.605551275463989}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.7416573867739413}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.898979485566356}}, "df": 6, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.6457513110645907}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.7416573867739413}}, "df": 5}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 5, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 8}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.58257569495584}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 4}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 9}}}}}}, "f": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.242640687119285}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.605551275463989}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 4.123105625617661}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.58257569495584}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.872983346207417}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10}, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.7416573867739413}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.3166247903554}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3.3166247903554}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3.3166247903554}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.3166247903554}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.872983346207417}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.872983346207417}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 11}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}}}}, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}}, "df": 2}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 7}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 8}, "i": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}, "f": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.4641016151377544}}, "df": 1, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.3166247903554}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.8284271247461903}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.8284271247461903}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.8284271247461903}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5.477225575051661}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 7.416198487095663}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.6457513110645907}}, "df": 8}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 6.164414002968976}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.6457513110645907}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.8284271247461903}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.4641016151377544}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.872983346207417}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 9, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 5.385164807134504}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3}}, "df": 4}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.1622776601683795}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.3166247903554}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.1622776601683795}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.605551275463989}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.23606797749979}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.7320508075688772}}, "df": 10}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.3166247903554}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 2}}, "c": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.8284271247461903}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 7.615773105863909}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.744562646538029}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 4.123105625617661}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 4.123105625617661}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 4.69041575982343}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 7.615773105863909}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 9.591663046625438}, "cfbd_json_py.games.get_cfbd_games": {"tf": 5.656854249492381}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 2.449489742783178}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 2}}, "df": 12, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.23606797749979}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}, "s": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}, "m": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.58257569495584}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.795831523312719}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 4.123105625617661}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 4.123105625617661}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 4.123105625617661}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 4.358898943540674}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.795831523312719}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.872983346207417}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 2.23606797749979}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 2}}, "df": 10}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.8284271247461903}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.8284271247461903}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.1622776601683795}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.449489742783178}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 2}}, "df": 11}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.898979485566356}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3.4641016151377544}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3.4641016151377544}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.4641016151377544}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 5.385164807134504}, "cfbd_json_py.games.get_cfbd_games": {"tf": 4.795831523312719}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 12, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 9}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 8}, "u": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.795831523312719}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 7.14142842854285}, "cfbd_json_py.games.get_cfbd_games": {"tf": 4.358898943540674}}, "df": 6, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 4}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}}, "df": 7}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.605551275463989}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.3166247903554}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.3166247903554}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.47213595499958}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}}, "df": 1, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 7}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "b": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 5.477225575051661}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.47213595499958}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.6457513110645907}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 8.48528137423857}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.8284271247461903}}, "df": 6, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 6.082762530298219}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.5677643628300215}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 4.795831523312719}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 4.795831523312719}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 4.795831523312719}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 6.082762530298219}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 7.0710678118654755}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.449489742783178}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 2.23606797749979}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 2}}, "df": 10, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 9}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.6457513110645907}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.47213595499958}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 5, "s": {"docs": {"cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}}, "df": 3}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 5, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}}, "df": 1}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.242640687119285}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.196152422706632}}, "df": 1}, "d": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 3}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.449489742783178}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.449489742783178}}, "df": 4}}}}}}}}, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.23606797749979}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 9, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.23606797749979}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.898979485566356}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.477225575051661}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 4.123105625617661}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 4.123105625617661}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 4.58257569495584}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5.291502622129181}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 5.477225575051661}, "cfbd_json_py.games.get_cfbd_games": {"tf": 4.358898943540674}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 2.449489742783178}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.7320508075688772}}, "df": 12, "p": {"docs": {}, "df": 0, "i": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 5.830951894845301}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.656854249492381}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 5.656854249492381}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 5.656854249492381}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 5.656854249492381}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5.830951894845301}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 6.082762530298219}, "cfbd_json_py.games.get_cfbd_games": {"tf": 4.123105625617661}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 2.6457513110645907}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 2.8284271247461903}}, "df": 10}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.1622776601683795}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.605551275463989}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.3166247903554}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10}}}}}}, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.23606797749979}}, "df": 4}}, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}}, "df": 2, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}}}}}}}}}}, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.1622776601683795}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.1622776601683795}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.1622776601683795}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.7416573867739413}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.23606797749979}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 9, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8}}}}}, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 3, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.1622776601683795}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.8284271247461903}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.8284271247461903}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 9}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 5.385164807134504}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}}, "df": 2}, "s": {"docs": {}, "df": 0, "o": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}}, "df": 7}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "v": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.4641016151377544}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 3}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 4, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.8284271247461903}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.449489742783178}}, "df": 1, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 1, "s": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.47213595499958}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.872983346207417}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 6.164414002968976}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 7.810249675906654}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 8, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 5.291502622129181}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2}}, "df": 4}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.47213595499958}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.8284271247461903}, "cfbd_json_py.games.get_cfbd_games": {"tf": 4.47213595499958}}, "df": 2, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.242640687119285}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 5.744562646538029}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}}, "df": 1}}}}}}, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 7.483314773547883}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.744562646538029}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.872983346207417}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 6.6332495807108}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.1622776601683795}}, "df": 5, "s": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.449489742783178}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.6457513110645907}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.23606797749979}}, "df": 8}}, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.872983346207417}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.1622776601683795}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.7416573867739413}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.123105625617661}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.605551275463989}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 10, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}}, "df": 1}}}}}}, "c": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 3}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.6457513110645907}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.1622776601683795}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.8284271247461903}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 12, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 12}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.898979485566356}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.8284271247461903}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 5}, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}, "d": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 7}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.4641016151377544}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.1622776601683795}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.1622776601683795}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.242640687119285}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}}}}}, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.449489742783178}}, "df": 1}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}}, "df": 1}}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10}, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 5.0990195135927845}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8, "l": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.6457513110645907}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.23606797749979}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 6}}, "e": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 3}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.47213595499958}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.242640687119285}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 4.242640687119285}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.898979485566356}, "cfbd_json_py.games.get_cfbd_games": {"tf": 4.47213595499958}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 10}}}}}}}, "f": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.3166247903554}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.242640687119285}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.6457513110645907}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 10, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.6457513110645907}}, "df": 1}}}, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.605551275463989}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}, "h": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.8284271247461903}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.8284271247461903}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.8284271247461903}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.8284271247461903}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.8284271247461903}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.8284271247461903}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.4641016151377544}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 6}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.123105625617661}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.1622776601683795}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.872983346207417}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.47213595499958}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.1622776601683795}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 11, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 8}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 12}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 4}}}}}}, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.23606797749979}}, "df": 7, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 9}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3}}, "df": 2, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}}}}}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.6457513110645907}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}}, "df": 2, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}}, "d": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 5.656854249492381}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.0990195135927845}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5.0990195135927845}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 6.48074069840786}}, "df": 7}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 1, "d": {"docs": {"cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 6}}}}}}}, "x": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}}, "df": 1}, "d": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 4.123105625617661}}, "df": 1}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}, "y": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}, "c": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.8284271247461903}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}}, "df": 1}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.449489742783178}}, "df": 1}}}}}}}}}, "d": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.3166247903554}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 3.1622776601683795}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.872983346207417}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.1622776601683795}, "cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 10}}, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.69041575982343}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.6457513110645907}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.1622776601683795}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.3166247903554}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 10}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.242640687119285}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.872983346207417}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 3}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 4}}, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4}}, "df": 1}}, "o": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}}, "df": 2}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 6.164414002968976}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.830951894845301}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 5.0990195135927845}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 5.0990195135927845}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 5.0990195135927845}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5.830951894845301}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 6.48074069840786}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3.872983346207417}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 2.8284271247461903}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 3}}, "df": 10}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.23606797749979}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2.23606797749979}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 9, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4.47213595499958}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}}, "df": 5}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3.4641016151377544}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.1622776601683795}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 8.48528137423857}}, "df": 3}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.3166247903554}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 4.242640687119285}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}}, "df": 5}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3}}, "df": 1}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.449489742783178}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.7320508075688772}}, "df": 9}}}}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.utls.reverse_cipher_encrypt": {"tf": 1}, "cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 7}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 9}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}}, "df": 1}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 4}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}}}}}}, "d": {"1": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}, "3": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 2}, "docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.7320508075688772}}, "df": 10, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.7320508075688772}}, "df": 10}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.23606797749979}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.449489742783178}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.449489742783178}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.449489742783178}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.449489742783178}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.3166247903554}, "cfbd_json_py.games.get_cfbd_games": {"tf": 3}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 6.164414002968976}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.196152422706632}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3.3166247903554}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3.3166247903554}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.3166247903554}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5.291502622129181}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 9.643650760992955}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.4142135623730951}}, "df": 8, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}}}}}, "y": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.449489742783178}}, "df": 1}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.6457513110645907}}, "df": 1}}}, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 3.3166247903554}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.utls.reverse_cipher_decrypt": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 7.3484692283495345}}, "df": 1, "s": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 4.795831523312719}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.449489742783178}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 8.366600265340756}}, "df": 3}}}}, "o": {"docs": {"cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}}, "df": 1, "r": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.7320508075688772}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.7320508075688772}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.7320508075688772}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.7320508075688772}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 10}, "d": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1.4142135623730951}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1.4142135623730951}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1.4142135623730951}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1.4142135623730951}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.4142135623730951}}, "df": 7}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}}, "df": 7}}}, "p": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 4}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 3.1622776601683795}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 1}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 1}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 2}, "cfbd_json_py.utls.get_cfbd_api_token": {"tf": 1}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1.4142135623730951}}, "df": 10, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 1}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 3}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 3.3166247903554}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 1.7320508075688772}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1.7320508075688772}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 3}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 6.082762530298219}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 5.5677643628300215}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 3.872983346207417}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 3.872983346207417}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 3.872983346207417}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 5.744562646538029}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 7.0710678118654755}, "cfbd_json_py.utls.set_cfbd_api_token": {"tf": 1}}, "df": 8}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"cfbd_json_py.betting.get_cfbd_betting_lines": {"tf": 2.23606797749979}, "cfbd_json_py.coaches.get_cfbd_coaches_info": {"tf": 2.23606797749979}, "cfbd_json_py.conferences.get_cfbd_conference_info": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_teams": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_positions": {"tf": 2.23606797749979}, "cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.23606797749979}, "cfbd_json_py.drives.get_cfbd_drives_info": {"tf": 2.23606797749979}, "cfbd_json_py.games.get_cfbd_games": {"tf": 1}}, "df": 8}}}}, "q": {"docs": {}, "df": 0, "b": {"docs": {"cfbd_json_py.draft.get_cfbd_nfl_draft_info": {"tf": 2.8284271247461903}}, "df": 1}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + /** pdoc search index */const docs = [{"fullname": "cfbd_json_py", "modulename": "cfbd_json_py", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.betting", "modulename": "cfbd_json_py.betting", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.betting.get_cfbd_betting_lines", "modulename": "cfbd_json_py.betting", "qualname": "get_cfbd_betting_lines", "kind": "function", "doc": "Retrives betting information from the CFBD API for a given season, \nor you could only get betting information for a single game.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n The season you want to retrive betting information from.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
game_id
(int, optional):\n Optional argument. \n Ifgame_id
is set to a game ID,get_cfb_betting_lines()
will try to get \n all betting informaiton for that game ID.\n\n
week
(int, optional):\n Optional argument.\n Ifweek
is set to an integer, this function will attempt \n to load betting data from games in that season, and that week.\n\n
season_type
(str, semi-optional):\n Semi-optional argument.\n By defualt, this will be set to \"regular\", for the CFB regular season.\n If you want postseason betting data, setseason_type
to \"postseason\".\n Ifseason_type
is set to anything but \"regular\" or \"postseason\", \n aValueError()
will be raised.\n\n
team
(str, optional):\n Optional argument.\n If you only want betting information for a team, \n regardless if they are the home/away team,\n setteam
to the name of the team you want game-level betting data from.\n\n
home_team
(str, optional):\n Optional argument.\n If you only want betting information for a team, \n where that team was the home team in this season,\n sethome_team
to the name of the team you want game-level betting data from.\n\n
away_team
(str, optional):\n Optional argument.\n If you only want betting information for a team, \n where that team was the away team in this season,\n setaway_team
to the name of the team you want game-level betting data from.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want betting information from games \n involving teams a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want betting informaiton from.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.betting import get_cfbd_betting_lines\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Gets all available betting info for the 2020 CFB season.\n print(\"Gets all available betting info for the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Gets all available betting info for the 2020 CFB season, in week 2.\n print(\"Gets all available betting info for the 2020 CFB season, in week 2.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n week=2\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).\n print(\"Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n season_type=\"postseason\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.\n print(\"Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Ohio Bobcats home games the 2020 CFB season.\n print(\"Gets all betting info for Ohio Bobcats home games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n home_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.\n print(\"Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n away_team=\"Ohio State\"\n )\n\n # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.\n print(\"Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n conference_abv=\"ACC\"\n )\n print(json_data)\n time.sleep(5)\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_betting_lines(\n api_key=cfbd_key,\n season=2020,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Gets all available betting info for the 2020 CFB season.\n print(\"Gets all available betting info for the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n season=2020\n )\n print(json_data)\n time.sleep(5)\n # Gets all available betting info for the 2020 CFB season, in week 2.\n print(\"Gets all available betting info for the 2020 CFB season, in week 2.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n week=2\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).\n print(\"Gets all betting info for the 2020 CFB season, in the postseason (bowls, playoffs, etc.).\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n season_type=\"postseason\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.\n print(\"Gets all betting info for Cincinnati Bearcats Football games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Ohio Bobcats home games the 2020 CFB season.\n print(\"Gets all betting info for Ohio Bobcats home games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n home_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n # Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.\n print(\"Gets all betting info for Ohio State Buckeyes away games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n\n season=2020,\n away_team=\"Ohio State\"\n )\n\n # Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.\n print(\"Gets all betting info for Atlantic Coast Conference (ACC) games the 2020 CFB season.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n conference_abv=\"ACC\"\n )\n print(json_data)\n time.sleep(5)\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_betting_lines(\n season=2020,\n return_as_dict=True\n )\n print(json_data)\n\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tgame_id: int = None,\tweek: int = None,\tseason_type: str = 'regular',\tteam: str = None,\thome_team: str = None,\taway_team: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.coaches", "modulename": "cfbd_json_py.coaches", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.coaches.get_cfbd_coaches_info", "modulename": "cfbd_json_py.coaches", "qualname": "get_cfbd_coaches_info", "kind": "function", "doc": "DataFrame
object with college football betting data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with college football betting data.Retrives information from the CFBD API on CFB Head Coaches.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
first_name
(str, optional):\n Optional argument.\n If you want to only look up coaches with a specific first name, \n set this variable to that specific first name, and this function \n will attempt to look up coaches with that specific first name.\n\n
last_name
(str, optional):\n Optional argument.\n If you want to only look up coaches with a specific last name, \n set this variable to that specific first name, and this function \n will attempt to look up coaches with that specific last name.\n\n
team
(str, optional):\n Optional argument.\n If you want to filter and drill down to coaches who coached a specific\n CFB team, set this\n\n
season
(int, optional):\n Optional argument.\n If you only want coaches from a specific season, set this variable to that season.\n\n
min_season
(int, optional):\n Optional argument.\n Similar toyear
, but used in tandem withmax_season
to get coaches who coached with in a range of seasons.\n\n
max_season
(int, optional):\n Optional argument.\n Similar toyear
, but used in tandem withmin_season
to get coaches who coached with in a range of seasons.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.coaches import get_cfbd_coaches_info\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Getting all coaches in the 2020 CFB season\n print(\"Getting every coach in the 2020 CFB season.\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2020\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n # Getting all coaches in the 2020 CFB season, with a first name of \"Luke\"\n print(\"Getting every coach in the 2020 CFB season, with a first name of \"Luke\".\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2020,\n first_name=\"Luke\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting all coaches in the 2020 CFB season, with a last name of \"Day\"\n print(\"Getting all coaches in the 2020 CFB season, with a last name of \"Day\".\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2020,\n last_name=\"Day\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every head coach for the 2020 Southern Mississippi Golden Eagles\n print(\"Getting every head coach for the 2020 Southern Mississippi Golden Eagles.\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2020,\n team=\"Southern Mississippi\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every head coach between the 2019 and 2022 CFB seasons\n print(\"Getting every head coach between the 2019 and 2022 CFB seasons\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n min_season=2019,\n max_season=2022\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_coaches_info(\n api_key=cfbd_key,\n season=2022,\n team=\"Cincinnati\",\n return_as_dict=True\n )\n print(f\"{json_data}\")\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Getting every coach in the 2020 CFB season.\n print(\"Getting every coach in the 2020 CFB season.\")\n json_data = get_cfbd_coaches_info(season=2020)\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every coach in the 2020 CFB season, with a first name of \"Luke\".\n print(\"Getting every coach in the 2020 CFB season, with a first name of \"Luke\".\")\n json_data = get_cfbd_coaches_info(\n season=2020,\n first_name=\"Luke\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every coach in the 2020 CFB season, with a last name of \"Day\".\n print(\"Getting every coach in the 2020 CFB season, with a last name of \"Day\".\")\n json_data = get_cfbd_coaches_info(\n season=2020,\n last_name=\"Day\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every head coach for the 2020 Southern Mississippi Golden Eagles.\n print(\"Getting every head coach for the 2020 Southern Mississippi Golden Eagles.\")\n json_data = get_cfbd_coaches_info(\n season=2020,\n team=\"Southern Mississippi\"\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # Getting every head coach between the 2019 and 2022 CFB seasons.\n print(\"Getting every head coach between the 2019 and 2022 CFB seasons.\")\n json_data = get_cfbd_coaches_info(\n min_season=2019,\n max_season=2022\n )\n print(f\"{json_data}\")\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_coaches_info(\n season=2022,\n team=\"Cincinnati\",\n return_as_dict=True\n )\n print(f\"{json_data}\")\n\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tfirst_name: str = None,\tlast_name: str = None,\tteam: str = None,\tseason: int = None,\tmin_season: int = None,\tmax_season: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.conferences", "modulename": "cfbd_json_py.conferences", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.conferences.get_cfbd_conference_info", "modulename": "cfbd_json_py.conferences", "qualname": "get_cfbd_conference_info", "kind": "function", "doc": "DataFrame
object with CFB head coach data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with CFB head coach data.Retrives a list of CFB conferences from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.conferences import get_cfbd_conference_info\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Gets CFB confrence info from the CFBD API.\n print(\"Gets CFB confrence info from the CFBD API.\")\n json_data = get_cfbd_conference_info(api_key=cfbd_key)\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_conference_info(\n api_key=cfbd_key,\n return_as_dict=True)\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Gets CFB confrence info from the CFBD API.\n print(\"Gets CFB confrence info from the CFBD API.\")\n json_data = get_cfbd_conference_info()\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_conference_info(return_as_dict=True)\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.draft", "modulename": "cfbd_json_py.draft", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.draft.get_cfbd_nfl_teams", "modulename": "cfbd_json_py.draft", "qualname": "get_cfbd_nfl_teams", "kind": "function", "doc": "DataFrame
object with CFB conference data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with CFB conference data.Retrives a list of NFL teams from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.draft import get_cfbd_nfl_teams\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Gets NFL team info from the CFBD API.\n print(\"Gets NFL team info from the CFBD API.\")\n json_data = get_cfbd_nfl_teams(api_key=cfbd_key)\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_teams(\n api_key=cfbd_key,\n return_as_dict=True)\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Gets NFL team info from the CFBD API.\n print(\"Gets NFL team info from the CFBD API.\")\n json_data = get_cfbd_nfl_teams()\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_teams(return_as_dict=True)\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.draft.get_cfbd_nfl_positions", "modulename": "cfbd_json_py.draft", "qualname": "get_cfbd_nfl_positions", "kind": "function", "doc": "DataFrame
object with NFL team data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with NFL team data.Retrives a list of player positions for the NFL Draft from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.draft import get_cfbd_nfl_positions\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Gets a list of player positions for the NFL Draft from the CFBD API.\n print(\"Gets a list of player positions for the NFL Draft from the CFBD API.\")\n json_data = get_cfbd_nfl_positions(api_key=cfbd_key)\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_positions(\n api_key=cfbd_key,\n return_as_dict=True)\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Gets a list of player positions for the NFL Draft from the CFBD API.\n print(\"Gets a list of player positions for the NFL Draft from the CFBD API.\")\n json_data = get_cfbd_nfl_positions()\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_positions(return_as_dict=True)\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.draft.get_cfbd_nfl_draft_info", "modulename": "cfbd_json_py.draft", "qualname": "get_cfbd_nfl_draft_info", "kind": "function", "doc": "DataFrame
object with player position data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with player position data.Retrives a list of actual NFL Draft selections from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.The following paramaters are optional, but it is highly reccomended to not call this function\nwithiout settting one of these five optional paramaters to a non-null value.
\n\n\n\n
season
(int, semi-optional):\n Semi-Optional argument. \n This is the season you want NFL Draft information for. For example, if you only want \n data for the 2020 NFL Draft, setseason
to2020
.\n\n
nfl_team
(str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific NFL team, setnfl_team
to the \n name of that team. For example, if you want to only get NFL Draft information for \n draft picks made by the Cincinnati Bengals, setnfl_team
toCincinnati
.\n\n
college
(str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific CFB team, setcollege
to the \n name of that team. For example, if you want to only get NFL Draft information for \n draft picks from the Clemson Tigers Football Program, setcollege
toClemson
.\n\n
conference
(str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific CFB confrence, setconference
to the abbreviation of that confrence. \n A list of CFBD API confrence abbreviations can be found in theconference_abbreviation
column from \n the pandas DataFrame that is returned by callingcfbd_json_py.conferences.get_cfbd_conference_info()
.\n For example, if you want to only get NFL Draft information for \n draft picks that played in the Big 12, setconfrence
toB12
.\n\n
position
(str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections who played a specific position, \n setposition
to that position's abbreviation. \n A list of CFBD API positions can be found in theposition_abbreviation
column from \n the pandas DataFrame that is returned by callingcfbd_json_py.draft.get_cfbd_nfl_positions()
.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.draft import get_cfbd_nfl_draft_info\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get NFL Draft selections from the 2020 NFL Draft.\n print(\"Get NFL Draft selections from the 2020 NFL Draft.\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made by the\n # 2020 Cincinnati Bengals.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020,\n nfl_team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made involving\n # Clemson Tigers football players.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020,\n college=\"Clemson\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made involving\n # players who played in the Southeastern Confrence (SEC).\n print(\"Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020,\n conference=\"SEC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made\n # where the selected player was a QB in college.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.\")\n json_data = get_cfbd_nfl_draft_info(\n api_key=cfbd_key,\n season=2020,\n position=\"QB\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n position=\"QB\",\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get NFL Draft selections from the 2020 NFL Draft.\n print(\"Get NFL Draft selections from the 2020 NFL Draft.\")\n json_data = get_cfbd_nfl_draft_info(season=2020)\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made by the\n # 2020 Cincinnati Bengals.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made by the 2020 Cincinnati Bengals.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n nfl_team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made involving\n # Clemson Tigers football players.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made involving Clemson Tigers football players.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n college=\"Clemson\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made involving\n # players who played in the Southeastern Confrence (SEC).\n print(\"Get NFL Draft selections from the 2020 NFL Draft made involving players who played in the Southeastern Confrence (SEC).\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n conference=\"SEC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get NFL Draft selections from the 2020 NFL Draft made\n # where the selected player was a QB in college.\n print(\"Get NFL Draft selections from the 2020 NFL Draft made where the selected player was a QB in college.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n position=\"QB\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_nfl_draft_info(\n season=2020,\n position=\"QB\",\n return_as_dict=True\n )\n print(json_data)\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tnfl_team: str = None,\tcollege: str = None,\tconference_abv: str = None,\tposition: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.drives", "modulename": "cfbd_json_py.drives", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.drives.get_cfbd_drives_info", "modulename": "cfbd_json_py.drives", "qualname": "get_cfbd_drives_info", "kind": "function", "doc": "DataFrame
object with NFL Draft selection data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with NFL Draft selection data.Retrives a list of CFB drives from the CFBD API.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n Required argument.\n Specifies the season you want CFB drive information from.\n This must be specified, otherwise this package, and by extension\n the CFBD API, will not accept the request to get CFB drive information.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
season_type
(str, semi-optional):\n Semi-optional argument.\n By defualt, this will be set to \"regular\", for the CFB regular season.\n If you want CFB drive data for non-regular season games, \n setseason_type
to \"postseason\".\n Ifseason_type
is set to anything but \"regular\" or \"postseason\", \n aValueError()
will be raised.\n\n
week
(int, optional):\n Optional argument.\n Ifweek
is set to an integer, this function will attempt \n to load CFB drive data from games in that season, and that week.\n\n
team
(str, optional):\n Optional argument.\n If you only want CFB drive data for a team, \n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB drive data from.\n\n
offensive_team
(str, optional):\n Optional argument.\n If you only want CFB drive data from a team, while they are on offense, \n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB drive data from.\n\n
defensive_team
(str, optional):\n Optional argument.\n If you only want CFB drive data from a team, while they are on defense,\n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB drive data from.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want CFB drive data from games \n involving teams from a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use thecfbd_json_py.conferences.get_cfbd_conference_info()
\n function.\n\n
offensive_conference_abv
(str, optional):\n Optional argument.\n If you only want CFB drive data from games \n where the offensive team is from a specific confrenece,\n setconference_abv
to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use thecfbd_json_py.conferences.get_cfbd_conference_info()
\n function.\n\n
defensive_conference_abv
(str, optional):\n Optional argument.\n If you only want CFB drive data from games \n where the defensive team is from a specific confrenece,\n setconference_abv
to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use thecfbd_json_py.conferences.get_cfbd_conference_info()
\n function.\n\n
ncaa_division
(str, semi-optional):\n Semi-optional argument.\n By default,ncaa_division
will be set to \"fbs\", \n short for the Football Bowl Subdivision (FBS), \n formerly known as D1-A (read as \"division one single A\"),\n the highest level in the NCAA football pyramid,\n where teams can scolarship up to 85 players \n on their football team soley for athletic ability, \n and often have the largest athletics budgets\n within the NCAA.\n\nOther valid inputs are:\n- \"fcs\": Football Championship Subdivision (FCS), \n formerly known as D1-AA (read as \"division one double A\").\n An FCS school is still in the 1st division of the NCAA,\n making them elligable for the March Madness tournament,\n but may not have the resources to compete at the FBS level\n at this time. FCS schools are limited to 63 athletic scolarships\n for football.\n- \"ii\": NCAA Division II. Schools in this and D3 are not\n elligable for the March Madness tournament, \n and are limited to 36 athletic scolarships for their football team.\n- \"iii\": NCAA Division III. The largest single division within the \n NCAA football pyramid. \n D3 schools have the distinction of being part of \n the only NCAA division that cannot give out scolarships soley \n for athletic ability.\n
\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.drives import get_cfbd_drives_info\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get CFB Drive data from the 2020 CFB season.\n print(\"Get CFB Drive data from the 2020 CFB season.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from week 10 of the 2020 CFB season.\n print(\"Get CFB Drive data from week 10 of the 2020 CFB season.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats\n # Football Team.\n print(\"Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Ohio Bobcats\n # Football Team, when Ohio was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n offensive_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes\n # Football Team, when Ohio was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n defensive_team=\"Ohio State\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Big 12 games in the 2020 CFB season.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n conference_abv=\"B12\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season,\n # where the Big 10 team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n offensive_conference_abv=\"B1G\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Mid-American Conference (MAC) games\n # in the 2020 CFB season, where the MAC team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n defensive_conference_abv=\"MAC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Football Championship Subdivision (FCS) games\n # in week 3 ofthe 2020 CFB season,\n # where the MAC team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n api_key=cfbd_key,\n season=2020,\n week=3,\n ncaa_division=\"fcs\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n week=10,\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get CFB Drive data from the 2020 CFB season.\n print(\"Get CFB Drive data from the 2020 CFB season.\")\n json_data = get_cfbd_drives_info(\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from week 10 of the 2020 CFB season.\n print(\"Get CFB Drive data from week 10 of the 2020 CFB season.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Cincinnati Bearcats\n # Football Team.\n print(\"Get CFB Drive data from games involving the 2020 Cincinnati Bearcats Football Team.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Ohio Bobcats\n # Football Team, when Ohio was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio Bobcats Football Team, when Ohio was on offense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n offensive_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from games involving the 2020 Ohio State Buckeyes\n # Football Team, when Ohio was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n defensive_team=\"Ohio State\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Big 12 games in the 2020 CFB season.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n conference_abv=\"B12\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Big 10 (B1G) games in the 2020 CFB season,\n # where the Big 10 team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n offensive_conference_abv=\"B1G\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Mid-American Conference (MAC) games\n # in the 2020 CFB season, where the MAC team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n defensive_conference_abv=\"MAC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB Drive data from Football Championship Subdivision (FCS) games\n # in week 3 ofthe 2020 CFB season,\n # where the MAC team was on offense.\n print(\"Get CFB Drive data from games involving the 2020 Ohio State Buckeyes Football Team, when Ohio State was on defense.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n week=3,\n ncaa_division=\"fcs\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_drives_info(\n season=2020,\n week=10,\n return_as_dict=True\n )\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tseason_type: str = 'regular',\tweek: int = None,\tteam: str = None,\toffensive_team: str = None,\tdefensive_team: str = None,\tconference_abv: str = None,\toffensive_conference_abv: str = None,\tdefensive_conference_abv: str = None,\tncaa_division: str = 'fbs',\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.games", "modulename": "cfbd_json_py.games", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.games.get_cfbd_games", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_games", "kind": "function", "doc": "DataFrame
object with CFB drive data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with CFB drive data.Retrives game schedule data from the CFBD API.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n Required argument.\n Specifies the season you want CFB game information from.\n This must be specified, otherwise this package, and by extension\n the CFBD API, will not accept the request to get CFB game information.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
season_type
(str, semi-optional):\n Semi-optional argument.\n By defualt, this will be set to \"regular\", for the CFB regular season.\n If you want CFB game information for non-regular season games, \n setseason_type
to \"postseason\".\n Ifseason_type
is set to anything but \"regular\" or \"postseason\", \n aValueError()
will be raised.\n\n
week
(int, optional):\n Optional argument.\n Ifweek
is set to an integer, this function will attempt \n to load CFB game data from games in that season, and in that week.\n\n
team
(str, optional):\n Optional argument.\n If you only want CFB game information for a team, \n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB game information from.\n\n
home_team
(str, optional):\n Optional argument.\n If you only want game information for a team, \n where that team was the home team in this season,\n sethome_team
to the name of the team you want game information for.\n\n
away_team
(str, optional):\n Optional argument.\n If you only want game information for a team, \n where that team was the away team in this season,\n setaway_team
to the name of the team you want game information for.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want game information from games \n involving teams a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want game information from.\n\n
ncaa_division
(str, semi-optional):\n Semi-optional argument.\n By default,ncaa_division
will be set to \"fbs\", \n short for the Football Bowl Subdivision (FBS), \n formerly known as D1-A (read as \"division one single A\"),\n the highest level in the NCAA football pyramid,\n where teams can scolarship up to 85 players \n on their football team soley for athletic ability, \n and often have the largest athletics budgets\n within the NCAA.\n\nOther valid inputs are:\n- \"fcs\": Football Championship Subdivision (FCS), \n formerly known as D1-AA (read as \"division one double A\").\n An FCS school is still in the 1st division of the NCAA,\n making them elligable for the March Madness tournament,\n but may not have the resources to compete at the FBS level\n at this time. FCS schools are limited to 63 athletic scolarships\n for football.\n- \"ii\": NCAA Division II. Schools in this and D3 are not\n elligable for the March Madness tournament, \n and are limited to 36 athletic scolarships for their football team.\n- \"iii\": NCAA Division III. The largest single division within the \n NCAA football pyramid. \n D3 schools have the distinction of being part of \n the only NCAA division that cannot give out scolarships soley \n for athletic ability.\n
\n\n
game_id
(int, optional):\n Optional argument. \n Ifgame_id
is set to a game ID,get_cfb_betting_lines()
will try to get \n game information just for that game ID.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.games import get_cfbd_games\n\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get CFB games from the 2020 CFB season.\n print(\"Get CFB games from the 2020 CFB season.\")\n json_data = get_cfbd_games(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB games from week 10 of the 2020 CFB season.\n print(\"Get CFB games from week 10 of the 2020 CFB season.\")\n json_data = get_cfbd_games(\n api_key=cfbd_key,\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.\n print(\"Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.\")\n json_data = get_cfbd_games(\n api_key=cfbd_key,\n season=2019,\n team=\"LSU\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.\n print(\"Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.\")\n json_data = get_cfbd_games(\n api_key=cfbd_key,\n season=2021,\n home_team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.\n print(\"Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.\")\n json_data = get_cfbd_games(\n api_key=cfbd_key,\n season=2019,\n away_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.\n print(\"Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.\")\n json_data = get_cfbd_games(\n api_key=cfbd_key,\n season=2018,\n away_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get 2022 college football games where one or more teams competing\n # was a Football Championship Subdivision team.\n print(\"Get 2022 college football games where one or more teams competing was a Football Championship Subdivision team.\")\n json_data = get_cfbd_games(\n api_key=cfbd_key,\n season=2018,\n away_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get game information for the\n # 2021 American Athletic Confrence (AAC) Championship Game.\n print(\"Get game information for the 2021 American Athletic Confrence (AAC) Championship Game.\")\n json_data = get_cfbd_games(\n api_key=cfbd_key,\n season=2018,\n game_id=401331162\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_games(\n season=2020,\n week=10,\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get CFB games from the 2020 CFB season.\n print(\"Get CFB games from the 2020 CFB season.\")\n json_data = get_cfbd_games(\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB games from week 10 of the 2020 CFB season.\n print(\"Get CFB games from week 10 of the 2020 CFB season.\")\n json_data = get_cfbd_games(\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.\n print(\"Get CFB games from the 2019 CFB season that involved the 2019 LSU Tigers.\")\n json_data = get_cfbd_games(\n season=2019,\n team=\"LSU\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.\n print(\"Get 2021 Cincinnati Bearcats Football games where the Bearcats were the home team.\")\n json_data = get_cfbd_games(\n season=2021,\n home_team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.\n print(\"Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.\")\n json_data = get_cfbd_games(\n season=2019,\n away_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.\n print(\"Get 2018 Ohio Bobcats Football games where the Bobcats were the away team.\")\n json_data = get_cfbd_games(\n season=2018,\n away_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get 2022 college football games where one or more teams competing\n # was a Football Championship Subdivision team.\n print(\"Get 2022 college football games where one or more teams competing was a Football Championship Subdivision team.\")\n json_data = get_cfbd_games(\n season=2018,\n away_team=\"Ohio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get game information for the\n # 2021 American Athletic Confrence (AAC) Championship Game.\n print(\"Get game information for the 2021 American Athletic Confrence (AAC) Championship Game.\")\n json_data = get_cfbd_games(\n season=2018,\n game_id=401331162\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_games(\n season=2020,\n week=10,\n return_as_dict=True\n )\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tseason_type: str = 'regular',\tweek: int = None,\tteam: str = None,\thome_team: str = None,\taway_team: str = None,\tconference_abv: str = None,\tncaa_division: str = 'fbs',\tgame_id: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.games.get_cfbd_team_records", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_team_records", "kind": "function", "doc": "DataFrame
object with college football game information, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with college football game information.Get a team, or multiple team's record (wins, losses, ties) for home games, away games, \nconfrence games, and the team's record for that season.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
season
(int, optional):\n Semi-optional argument. \n Specifies the season you want CFB team records data from.\n You MUST setseason
orteam
to a non-null value for \n this function to work. If you don't, aValueError()
\n will be raised.\n\n
team
(str, optional):\n Semi-ptional argument.\n If you only want CFB team records data for a specific team,\n setteam
to the name of the team you want CFB drive data from.\n You MUST setseason
orteam
to a non-null value for \n this function to work. If you don't, aValueError()
\n will be raised.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want CFB team records data from games \n involving teams from a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want CFB team records data from.\n For a list of confrences, \n use thecfbd_json_py.conferences.get_cfbd_conference_info()
\n function.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.games import get_cfbd_team_records\n\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get CFB team records from the 2020 CFB season.\n print(\"Get CFB team records from the 2020 CFB season.\")\n json_data = get_cfbd_team_records(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get team records from football teams fielded by the University of Cincinnati.\n print(\"Get team records from football teams fielded by the University of Cincinnati.\")\n json_data = get_cfbd_team_records(\n api_key=cfbd_key,\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get team records from football teams that played in the Big 10 (B1G) Confrence\n # in the 2017 CFB season\n print(\"Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season\")\n json_data = get_cfbd_team_records(\n api_key=cfbd_key,\n season=2017,\n conference_abv=\"B1G\"\n )\n print(json_data)\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_team_records(\n season=2020,\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get CFB team records from the 2020 CFB season.\n print(\"Get CFB team records from the 2020 CFB season.\")\n json_data = get_cfbd_team_records(\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get team records from football teams fielded by the University of Cincinnati.\n print(\"Get team records from football teams fielded by the University of Cincinnati.\")\n json_data = get_cfbd_team_records(\n team=\"Cincinnati\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get team records from football teams that played in the Big 10 (B1G) Confrence\n # in the 2017 CFB season\n print(\"Get team records from football teams that played in the Big 10 (B1G) Confrence in the 2017 CFB season\")\n json_data = get_cfbd_team_records(\n season=2017,\n conference_abv=\"B1G\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_team_records(\n season=2020,\n return_as_dict=True\n )\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.games.get_cfbd_season_weeks", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_season_weeks", "kind": "function", "doc": "DataFrame
object with CFB team records data, \nor (ifreturn_as_dict
is set toTrue
)\na dictionary object with CFB team records data.Retrives a list of weeks that occured in a given CFB season.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n Required argument.\n Specifies the season you want a list of weeks that occured in a given CFB season information from.\n This must be specified, otherwise this package, and by extension\n the CFBD API, will not accept the request to get a list of weeks that occured in a given CFB season information.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.games import get_cfbd_season_weeks\n\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get a list of weeks in the 2020 CFB season.\n print(\"Get a list of weeks in the 2020 CFB season.\")\n json_data = get_cfbd_season_weeks(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_season_weeks(\n season=2020,\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get a list of weeks in the 2020 CFB season.\n print(\"Get a list of weeks in the 2020 CFB season.\")\n json_data = get_cfbd_season_weeks(\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_season_weeks(\n season=2020,\n return_as_dict=True\n )\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.games.get_cfbd_game_media_info", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_game_media_info", "kind": "function", "doc": "DataFrame
object with a list of valid weeks in a given CFB season, \nor (ifreturn_as_dict
is set toTrue
)\na dictionary object with a list of valid weeks in a given CFB season.Gets known media information for CFB games in a given CFB season.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n Required argument.\n Specifies the season you want CFB media information from.\n This must be specified, otherwise this package, and by extension\n the CFBD API, will not accept the request to get CFB media information.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
season_type
(str, semi-optional):\n Semi-optional argument.\n By defualt, this will be set to \"regular\", for the CFB regular season.\n If you want CFB media information for non-regular season games, \n setseason_type
to \"postseason\".\n If you want both \"regular\" and \"postseason\" games retunred, \n setseason_type
to \"both\"\n Ifseason_type
is set to anything but \"regular\" or \"postseason\", \n aValueError()
will be raised.\n\n
week
(int, optional):\n Optional argument.\n Ifweek
is set to an integer, this function will attempt \n to load CFB media information from games in that season, and in that week.\n\n
team
(str, optional):\n Optional argument.\n If you only want CFB media information for a team, \n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB media information from.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want media information from games \n involving teams a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want game information from.\n\n
media_type
(str, semi-optional):\n Semi-optional argument.\n If you only want game broadcast information for a specific type of broadcast,\n set this to the type of broadcast.\n\nValid inputs are: \n- `all` (default): Returns all games, and all known broadcasters for those games.\n- `tv`: Returns all known TV broadcasters for CFB games in the requested timeframe.\n- `radio`: Returns all known radio broadcasters \n for CFB games in the requested timeframe.\n- `web`: Returns all known web broadcasts (like ESPN+) \n for CFB games in the requested timeframe.\n- `ppv`: Returns all known Pay Per View (PPV) broadcasts \n for CFB games in the requested timeframe.\n- `mobile`: Returns all known broadcasters that only broadcasted \n games on mobile devices (?)\n
\n\n
ncaa_division
(str, semi-optional):\n Semi-optional argument.\n By default,ncaa_division
will be set to \"fbs\", \n short for the Football Bowl Subdivision (FBS), \n formerly known as D1-A (read as \"division one single A\"),\n the highest level in the NCAA football pyramid,\n where teams can scolarship up to 85 players \n on their football team soley for athletic ability, \n and often have the largest athletics budgets\n within the NCAA.\n\nOther valid inputs are:\n- \"fcs\": Football Championship Subdivision (FCS), \n formerly known as D1-AA (read as \"division one double A\").\n An FCS school is still in the 1st division of the NCAA,\n making them elligable for the March Madness tournament,\n but may not have the resources to compete at the FBS level\n at this time. FCS schools are limited to 63 athletic scolarships\n for football.\n- \"ii\": NCAA Division II. Schools in this and D3 are not\n elligable for the March Madness tournament, \n and are limited to 36 athletic scolarships for their football team.\n- \"iii\": NCAA Division III. The largest single division within the \n NCAA football pyramid. \n D3 schools have the distinction of being part of \n the only NCAA division that cannot give out scolarships soley \n for athletic ability.\n
\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.games import get_cfbd_game_media_info\n\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get a media information for the 2020 CFB season.\n print(\"Get a media information for the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n api_key=cfbd_key,\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get a media information for postseason games in the 2020 CFB season.\n print(\"Get a media information for the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n api_key=cfbd_key,\n season=2020,\n season_type=\"postseason\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get a media information for week 10 games in the 2020 CFB season.\n print(\"Get a media information for week 10 games in the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n api_key=cfbd_key,\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.\n print(\"Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.\")\n json_data = get_cfbd_game_media_info(\n api_key=cfbd_key,\n season=2020,\n team=\"Ohio State\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.\n print(\"Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.\")\n json_data = get_cfbd_game_media_info(\n api_key=cfbd_key,\n season=2020,\n conference_abv=\"AAC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get all known radio broadcasters for games in the the 2020 CFB season.\n print(\"Get all known radio broadcasters for games in the the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n api_key=cfbd_key,\n season=2020,\n media_type=\"radio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.\n print(\"Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n api_key=cfbd_key,\n season=2020,\n ncaa_division=\"fcs\"\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_game_media_info(\n season=2020,\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get a media information for the 2020 CFB season.\n print(\"Get a media information for the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n season=2020\n )\n print(json_data)\n time.sleep(5)\n\n # Get a media information for postseason games in the 2020 CFB season.\n print(\"Get a media information for the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n season=2020,\n season_type=\"postseason\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get a media information for week 10 games in the 2020 CFB season.\n print(\"Get a media information for week 10 games in the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.\n print(\"Get all known broadcasters for games played by the Ohio State Football Program in the the 2019 CFB season.\")\n json_data = get_cfbd_game_media_info(\n season=2020,\n team=\"Ohio State\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.\n print(\"Get all known radio broadcasters for games played by teams within the American Athletic Confrence (AAC) in the the 2021 CFB season.\")\n json_data = get_cfbd_game_media_info(\n season=2020,\n conference_abv=\"AAC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get all known radio broadcasters for games in the the 2020 CFB season.\n print(\"Get all known radio broadcasters for games in the the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n season=2020,\n media_type=\"radio\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.\n print(\"Get all known broadcasters for Football Championship Subdivision (FCS) games in the 2020 CFB season.\")\n json_data = get_cfbd_game_media_info(\n season=2020,\n ncaa_division=\"fcs\"\n )\n print(json_data)\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_game_media_info(\n season=2020,\n return_as_dict=True\n )\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tseason_type: str = 'regular',\tweek: int = None,\tteam: str = None,\tconference_abv: str = None,\tmedia_type: str = 'all',\tncaa_division: str = 'fbs',\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.games.get_cfbd_player_game_stats", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_player_game_stats", "kind": "function", "doc": "DataFrame
object with college football media information, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with college football media information.Retrives player game stats for a given time frame.
\n\nParameters
\n\n\n\n
season
(int, mandatory):\n Required argument.\n Specifies the season you want CFB media information from.\n This must be specified, otherwise this package, and by extension\n the CFBD API, will not accept the request to get CFB media information.\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
season_type
(str, semi-optional):\n Semi-optional argument.\n By defualt, this will be set to \"regular\", for the CFB regular season.\n If you want CFB media information for non-regular season games, \n setseason_type
to \"postseason\".\n Ifseason_type
is set to anything but \"regular\" or \"postseason\", \n aValueError()
will be raised.For the following three variables, \nat least one must be set to a non-null variable when calling this function.
\n\n\n\n
week
(int, optional):\n Optional argument.\n Ifweek
is set to an integer, this function will attempt \n to load CFB media information from games in that season, and in that week.\n\n
team
(str, optional):\n Optional argument.\n If you only want CFB media information for a team, \n regardless if they are the home/away team,\n setteam
to the name of the team you want CFB media information from.\n\n
conference_abv
(str, optional):\n Optional argument.\n If you only want media information from games \n involving teams a specific confrence, \n setconference_abv
to the abbreviation \n of the conference you want game information from.\n\n
stat_category
(str, optional):\n Optional argument.\n If only want stats for a specific stat category, \n set this variable to that category.\n\nValid inputs are:\n- `passing`\n- `rushing`\n- `receiving`\n- `fumbles`\n- `defensive`\n- `interceptions`\n- `punting`\n- `kicking`\n- `kickReturns`\n- `puntReturns`\n
\n\n
game_id
(int, optional):\n Optional argument. \n Ifgame_id
is set to a game ID,get_cfbd_player_game_stats()
will try to get \n player game stats just for that game ID.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.games import get_cfbd_player_game_stats\n\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get player game stats for week 10 of the 2020 CFB season.\n print(\"Get player game stats for week 10 of the 2020 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n api_key=cfbd_key,\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get postseason player game stats for the 2020 CFB season.\n print(\"Get postseason player game stats for the 2020 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n api_key=cfbd_key,\n season=2020,\n season_type=\"postseason\",\n week=1\n )\n print(json_data)\n time.sleep(5)\n\n # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.\n print(\"Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n api_key=cfbd_key,\n season=2018,\n team=\"Alabama\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.\n print(\"Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n api_key=cfbd_key,\n season=2020,\n conference_abv=\"ACC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get get passing stats from players who played in week 7 of the 2017 CFB season.\n print(\"Get get passing stats from players who played in week 7 of the 2017 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n api_key=cfbd_key,\n season=2017,\n week=7,\n stat_category=\"pasing\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get player game stats from the 2021 Virbo Citrus Bowl, \n # a bowl game that happened in the 2020 CFB season.\n print(\"Get player game stats from the 2021 Virbo Citrus Bowl, a bowl game that happened in the 2020 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n api_key=cfbd_key,\n season=2020,\n game_id=401256199\n )\n print(json_data)\n time.sleep(5)\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_player_game_stats(\n season=2020,\n week=10,\n api_key=cfbd_key,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get player game stats for week 10 of the 2020 CFB season.\n print(\"Get player game stats for week 10 of the 2020 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n season=2020,\n week=10\n )\n print(json_data)\n time.sleep(5)\n\n # Get postseason player game stats for the 2020 CFB season.\n print(\"Get postseason player game stats for the 2020 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n season=2020,\n season_type=\"postseason\",\n week=1\n )\n print(json_data)\n time.sleep(5)\n\n # Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.\n print(\"Get player game stats for the Alabma Crimson Tide Football Team for the 2018 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n season=2018,\n team=\"Alabama\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.\n print(\"Get player game stats for players of teams in the Atlantic Coast Conference (ACC) in the 2020 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n season=2020,\n conference_abv=\"ACC\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get get passing stats from players who played in week 7 of the 2017 CFB season.\n print(\"Get get passing stats from players who played in week 7 of the 2017 CFB season.\")\n json_data = get_cfbd_player_game_stats(\n season=2017,\n week=7,\n stat_category=\"passing\"\n )\n print(json_data)\n time.sleep(5)\n\n # Get player game stats from the 2021 Virbo Citrus Bowl, \n # a bowl game that happened in the 2020 CFB season,\n # between the Aubrun Tigers, and the Northwestern Wildcats.\n print(\"Get player game stats from the 2021 Virbo Citrus Bowl, \"+\n \"a bowl game that happened in the 2020 CFB season between the Aubrun Tigers, and the Northwestern Wildcats.\")\n json_data = get_cfbd_player_game_stats(\n season=2020,\n game_id=401256199\n )\n print(json_data)\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_player_game_stats(\n season=2020,\n week=10,\n return_as_dict=True\n )\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tseason_type: str = 'regular',\tweek: int = None,\tteam: str = None,\tconference_abv: str = None,\tstat_category: str = None,\tgame_id: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.games.get_cfbd_player_advanced_game_stats", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_player_advanced_game_stats", "kind": "function", "doc": "DataFrame
object with player game stats data, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with player game stats data.Retrives advanced game stats from the CFBD API.
\n\nParameters
\n\n\n\n
api_key
(str, optional):\n Semi-optional argument. \n Ifapi_key
is null, this function will attempt to load a CFBD API key\n from the python environment, or from a file on this computer.\n Ifapi_key
is not null, this function will automatically assume that the\n inputtedapi_key
is a valid CFBD API key.\n\n
api_key_dir
(str, optional):\n Optional argument.\n Ifapi_key
is set to a string non-empty string, this variable is ignored.\n Ifapi_key_dir
is null, andapi_key
is null, \n this function will try to find a CFBD API key file in this user's home directory.\n Ifapi_key_dir
is set to a string, andapi_key
is null,\n this function will assume thatapi_key_dir
is a directory, \n and will try to find a CFBD API key file in that directory.\n\n
return_as_dict
(bool, semi-optional):\n Semi-optional argument.\n If you want this function to return the data as a dictionary (read: JSON object), \n instead of a pandasDataFrame
object,\n setreturn_as_dict
toTrue
.Usage
\n\n\n\nimport time\n\nfrom cfbd_json_py.games import get_cfbd_player_advanced_game_stats\n\n\ncfbd_key = \"tigersAreAwsome\" # placeholder for your CFBD API Key.\n\nif cfbd_key != \"tigersAreAwsome\":\n print(\"Using the user's API key declared in this script for this example.\")\n\n # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, \n # and the Oklahoma Sooners Football Program.\n print(\"Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.\")\n json_data = get_cfbd_player_advanced_game_stats(\n api_key=cfbd_key,\n game_id=401135278\n )\n print(json_data)\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_player_advanced_game_stats(\n api_key=cfbd_key,\n game_id=401135278,\n return_as_dict=True\n )\n print(json_data)\n\nelse:\n # Alternatively, if the CFBD API key exists in this python environment,\n # or it's been set by cfbd_json_py.utls.set_cfbd_api_token(),\n # you could just call these functions directly, without setting the API key\n # in the script.\n print(\"Using the user's API key suposedly loaded into this python environment for this example.\")\n\n # Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, \n # and the Oklahoma Sooners Football Program.\n print(\"Get advanced player stats for a 2019 CFB game between the LSU Tigers Football Program, and the Oklahoma Sooners Football Program.\")\n json_data = get_cfbd_player_advanced_game_stats(\n game_id=401135278\n )\n print(json_data)\n time.sleep(5)\n\n\n # You can also tell this function to just return the API call as\n # a Dictionary (read: JSON) object.\n print(\"You can also tell this function to just return the API call as a Dictionary (read: JSON) object.\")\n json_data = get_cfbd_player_advanced_game_stats(\n game_id=401135278,\n return_as_dict=True\n )\n print(json_data)\n\n
Returns
\n\nA pandas
\n", "signature": "(\tgame_id: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.games.get_cfbd_live_scoreboard", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_live_scoreboard", "kind": "function", "doc": "DataFrame
object with college football game information, \nor (ifreturn_as_dict
is set toTrue
) \na dictionary object with college football game information.YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK!\nTo view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tncaa_division: str = 'fbs',\tconference: str = None):", "funcdef": "def"}, {"fullname": "cfbd_json_py.games.get_cfbd_weather_info", "modulename": "cfbd_json_py.games", "qualname": "get_cfbd_weather_info", "kind": "function", "doc": "YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK!\nTo view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata
\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tncaa_division: str = 'fbs',\tgame_id: int = None,\tseason: int = None,\tweek: int = None,\tseason_type: str = 'regular',\tconference: str = None):", "funcdef": "def"}, {"fullname": "cfbd_json_py.metrics", "modulename": "cfbd_json_py.metrics", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.metrics.get_cfbd_predicted_ppa_from_down_distance", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_predicted_ppa_from_down_distance", "kind": "function", "doc": "\n", "signature": "(\tdown: int,\tdistance: int,\tapi_key: str = None,\tapi_key_dir: str = None):", "funcdef": "def"}, {"fullname": "cfbd_json_py.metrics.get_cfbd_team_ppa_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_team_ppa_data", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\tconference_abv: str = None,\texclude_garbage_time: bool = False,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.metrics.get_cfbd_game_ppa_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_game_ppa_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\tconference_abv: str = None,\texclude_garbage_time: bool = False,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.metrics.get_cfbd_game_player_ppa_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_game_player_ppa_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\tposition: str = None,\tplayer_id: int = None,\tplay_threshold: int = None,\texclude_garbage_time: bool = False,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.metrics.get_cfbd_season_player_ppa_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_season_player_ppa_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tconference_abv: str = None,\tposition: str = None,\tplayer_id: int = None,\tplay_threshold: int = None,\texclude_garbage_time: bool = False,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.metrics.get_cfbd_game_win_probability_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_game_win_probability_data", "kind": "function", "doc": "\n", "signature": "(\tgame_id: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.metrics.get_cfbd_pregame_win_probability_data", "modulename": "cfbd_json_py.metrics", "qualname": "get_cfbd_pregame_win_probability_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.players", "modulename": "cfbd_json_py.players", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.players.cfbd_player_search", "modulename": "cfbd_json_py.players", "qualname": "cfbd_player_search", "kind": "function", "doc": "\n", "signature": "(\tsearch_str: str,\tapi_key: str = None,\tapi_key_dir: str = None,\tposition: str = None,\tteam: str = None,\tseason: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.players.get_cfbd_player_usage", "modulename": "cfbd_json_py.players", "qualname": "get_cfbd_player_usage", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tconference_abv: str = None,\tposition: str = None,\tplayer_id: int = None,\texclude_garbage_time: bool = False,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.players.get_cfbd_returning_production", "modulename": "cfbd_json_py.players", "qualname": "get_cfbd_returning_production", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.players.get_cfbd_player_season_stats", "modulename": "cfbd_json_py.players", "qualname": "get_cfbd_player_season_stats", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tconference_abv: str = None,\tstart_week: int = None,\tend_week: int = None,\tseason_type: str = 'regular',\tstat_category: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.players.get_cfbd_transfer_portal_data", "modulename": "cfbd_json_py.players", "qualname": "get_cfbd_transfer_portal_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.plays", "modulename": "cfbd_json_py.plays", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.plays.get_cfbd_pbp_data", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_pbp_data", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\toffensive_team: str = None,\tdefensive_team: str = None,\tconference_abv: str = None,\toffensive_conference_abv: str = None,\tdefensive_conference_abv: str = None,\tplay_type: int = None,\tncaa_division: str = 'fbs',\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.plays.get_cfbd_pbp_play_types", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_pbp_play_types", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.plays.get_cfbd_pbp_stats", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_pbp_stats", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tteam: str = None,\tgame_id: int = None,\tathlete_id: int = None,\tstat_type_id: int = None,\tseason_type: str = 'regular',\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.plays.get_cfbd_pbp_stat_types", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_pbp_stat_types", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.plays.get_cfbd_live_pbp_data", "modulename": "cfbd_json_py.plays", "qualname": "get_cfbd_live_pbp_data", "kind": "function", "doc": "\n", "signature": "(\tgame_id: int,\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.rankings", "modulename": "cfbd_json_py.rankings", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.rankings.get_cfbd_poll_rankings", "modulename": "cfbd_json_py.rankings", "qualname": "get_cfbd_poll_rankings", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.ratings", "modulename": "cfbd_json_py.ratings", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.ratings.get_cfbd_sp_plus_ratings", "modulename": "cfbd_json_py.ratings", "qualname": "get_cfbd_sp_plus_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.ratings.get_cfbd_srs_ratings", "modulename": "cfbd_json_py.ratings", "qualname": "get_cfbd_srs_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: int = None,\tconferenece: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.ratings.get_cfbd_sp_plus_conference_ratings", "modulename": "cfbd_json_py.ratings", "qualname": "get_cfbd_sp_plus_conference_ratings", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.ratings.get_cfbd_elo_ratings", "modulename": "cfbd_json_py.ratings", "qualname": "get_cfbd_elo_ratings", "kind": "function", "doc": "\n", "signature": "(\tseason: int,\tapi_key: str = None,\tapi_key_dir: str = None,\tweek: int = None,\tseason_type: str = 'regular',\tteam: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.recruiting", "modulename": "cfbd_json_py.recruiting", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.recruiting.get_cfbd_player_recruit_ratings", "modulename": "cfbd_json_py.recruiting", "qualname": "get_cfbd_player_recruit_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\trecruit_classification: str = 'HighSchool',\tposition: str = None,\tstate: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.recruiting.get_cfbd_team_recruiting_ratings", "modulename": "cfbd_json_py.recruiting", "qualname": "get_cfbd_team_recruiting_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.recruiting.get_cfbd_team_recruiting_group_ratings", "modulename": "cfbd_json_py.recruiting", "qualname": "get_cfbd_team_recruiting_group_ratings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tstart_season: int = None,\tend_season: int = None,\tteam: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.stats", "modulename": "cfbd_json_py.stats", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.stats.get_cfbd_team_season_stats", "modulename": "cfbd_json_py.stats", "qualname": "get_cfbd_team_season_stats", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\tconference_abv: str = None,\tstart_week: int = None,\tend_week: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.stats.get_cfbd_advanced_team_season_stats", "modulename": "cfbd_json_py.stats", "qualname": "get_cfbd_advanced_team_season_stats", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\texclude_garbage_time: bool = False,\tstart_week: int = None,\tend_week: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.stats.get_cfbd_advanced_team_game_stats", "modulename": "cfbd_json_py.stats", "qualname": "get_cfbd_advanced_team_game_stats", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\tteam: str = None,\tweek: int = None,\topponent: str = None,\texclude_garbage_time: bool = False,\tseason_type: str = 'regular',\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.stats.get_cfbd_team_stat_categories", "modulename": "cfbd_json_py.stats", "qualname": "get_cfbd_team_stat_categories", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.teams", "modulename": "cfbd_json_py.teams", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.teams.get_cfbd_team_information", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_team_information", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tconference_abv: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.teams.get_cfbd_fbs_team_list", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_fbs_team_list", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.teams.get_cfbd_team_rosters", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_team_rosters", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tteam: str = None,\tseason: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.teams.get_cfbd_team_talent_rankings", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_team_talent_rankings", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\tseason: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.teams.get_cfbd_team_matchup_history", "modulename": "cfbd_json_py.teams", "qualname": "get_cfbd_team_matchup_history", "kind": "function", "doc": "\n", "signature": "(\tteam_1: str,\tteam_2: str,\tapi_key: str = None,\tapi_key_dir: str = None,\tmin_season: int = None,\tmax_season: int = None,\treturn_as_dict: bool = False):", "funcdef": "def"}, {"fullname": "cfbd_json_py.utls", "modulename": "cfbd_json_py.utls", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.utls.reverse_cipher_encrypt", "modulename": "cfbd_json_py.utls", "qualname": "reverse_cipher_encrypt", "kind": "function", "doc": "Implements a reverse cipher encription to a plain text string.
\n\nParameters
\n\n\n\n
plain_text_str
(mandatory, str):\n The string you want to encrypt through reverse cipher encryption.Returns
\n\nA string encrypted through reverse cipher encryption.
\n", "signature": "(plain_text_str: str):", "funcdef": "def"}, {"fullname": "cfbd_json_py.utls.reverse_cipher_decrypt", "modulename": "cfbd_json_py.utls", "qualname": "reverse_cipher_decrypt", "kind": "function", "doc": "Decrypts a string that was presumed to be encrypted by a reverse cipher encryption.
\n\nParameters
\n\n\n\n
encrypted_text_str
(mandatory, str):\n The string you presume that is encrypted through reverse cipher encryption, \n that you want decrypted.Returns
\n\nA decrypted string.
\n", "signature": "(encrypted_text_str: str):", "funcdef": "def"}, {"fullname": "cfbd_json_py.utls.get_cfbd_api_token", "modulename": "cfbd_json_py.utls", "qualname": "get_cfbd_api_token", "kind": "function", "doc": "If the CFBD API key exists in the environment, \nor is in a file, this function retrives the CFBD API key, \nand returns it as a string.
\n\nIf this package is being used in a GitHub Actions action,\nset the key in the environment by \ncreating a repository secret nammed
\n\nCFBD_API_KEY
.Parameters
\n\n\n\n
api_key_dir
(str, optional):\n Optional argument. Ifapi_key_dir
is set to a non-null string, \nset_cfbd_api_token()
will attempt to save the key file in that directory,\n instead of this user's home directory.Returns
\n\nA CFBD API key that exists within this python environment,\nor within this computer.
\n", "signature": "(api_key_dir: str = None):", "funcdef": "def"}, {"fullname": "cfbd_json_py.utls.set_cfbd_api_token", "modulename": "cfbd_json_py.utls", "qualname": "set_cfbd_api_token", "kind": "function", "doc": "Sets the CFBD API key into a file that exists \neither in
\n\n{home_dir}/.cfbd/cfbd_key.json
, or in a custom directory.Parameters
\n\n\n\n
api_key
(str, mandatory):\n The CFBD API key you have. \n DO NOT inputBearer {your CFBD API key}
,\n this package will take care of that for you.\n\n
api_key_dir
(str, optional):\n Optional argument. Ifapi_key_dir
is set to a non-null string, \nset_cfbd_api_token()
will attempt to save the key file in that directory,\n instead of this user's home directory.Returns
\n\nNothing. \nThis function only sets up the API key file that this package can reference later.
\n", "signature": "(api_key: str, api_key_dir: str = None):", "funcdef": "def"}, {"fullname": "cfbd_json_py.venues", "modulename": "cfbd_json_py.venues", "kind": "module", "doc": "\n"}, {"fullname": "cfbd_json_py.venues.get_cfbd_venues", "modulename": "cfbd_json_py.venues", "qualname": "get_cfbd_venues", "kind": "function", "doc": "\n", "signature": "(\tapi_key: str = None,\tapi_key_dir: str = None,\treturn_as_dict: bool = False):", "funcdef": "def"}]; // mirrored in build-search-index.js (part 1) // Also split on html tags. this is a cheap heuristic, but good enough. diff --git a/pyproject.toml b/pyproject.toml index d3674b5..00f7e45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "cfbd_json_py" -version = "0.0.7" +version = "0.0.8" readme = "README.md" requires-python = ">=3.10" license = {text = "MIT"}