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 @@ 

 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.
 
@@ -84,11 +85,11 @@

-
 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    )
+            
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    )
 
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 @@

  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
 
@@ -471,391 +472,391 @@

-
 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
+            
 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
 
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 @@

  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
 
@@ -464,385 +465,385 @@

-
 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
+            
 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
 
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 @@

  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
 
@@ -237,161 +238,161 @@

-
 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
+            
 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
 
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 @@

  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
 
@@ -752,160 +753,160 @@

-
 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
+            
 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_df
 
@@ -999,152 +1000,152 @@

Returns

-
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
+            
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_df
 
@@ -1238,363 +1239,363 @@

Returns

-
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
+            
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
 
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 @@

  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
 
@@ -612,533 +613,533 @@

-
 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
+            
 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_df
 
@@ -1202,7 +1203,7 @@

Parameters

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/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    )
    +                        
       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    )
     
    @@ -523,302 +3628,500 @@

    -
     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_df
     
    -

    Retrives game schedule data CFBD API.

    +

    Retrives game schedule data from the CFBD API.

    Parameters

    @@ -916,9 +4219,206 @@

    Parameters

    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

    -
    
    +
    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. + 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 (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.

    + +

    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.

    + +

    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 (if return_as_dict is set to True) +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. + 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_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 (if return_as_dict is set to True) +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. + 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.

    +
    +
    @@ -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. + 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.

    +
    + -
    - +
    +
    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. + 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.

    +
    +
    @@ -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    )
     
    - +

    YOU MUST BE SUBSCRIBED TO THE CFBD PATREON FOR THIS FUNCTION TO WORK! +To view the CFBD Patreon, visit https://www.patreon.com/collegefootballdata

    +
    + 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 @@

      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    )
     
    @@ -217,17 +218,17 @@

    -
     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    )
    +            
     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    )
     
    @@ -245,23 +246,23 @@

    -
    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    )
    +            
    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    )
     
    @@ -279,24 +280,24 @@

    -
    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    )
    +            
    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    )
     
    @@ -314,27 +315,27 @@

    -
    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    )
    +            
    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    )
     
    @@ -352,24 +353,24 @@

    -
     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    )
    +            
     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    )
     
    @@ -387,18 +388,18 @@

    -
    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    )
    +            
    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    )
     
    @@ -416,21 +417,21 @@

    -
    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    )
    +            
    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    )
     
    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 @@

     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    )
     
    @@ -171,21 +172,21 @@

    -
     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    )
    +            
    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    )
     
    @@ -203,22 +204,22 @@

    -
    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    )
    +            
    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    )
     
    @@ -236,20 +237,20 @@

    -
    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    )
    +            
    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    )
     
    @@ -267,24 +268,24 @@

    -
    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    )
    +            
    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    )
     
    @@ -302,18 +303,18 @@

    -
    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    )
    +            
    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    )
     
    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 @@

     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    )
     
    @@ -177,28 +178,28 @@

    -
     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    )
    +            
     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    )
     
    @@ -216,17 +217,17 @@

    -
    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    )
    +            
    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    )
     
    @@ -244,25 +245,25 @@

    -
    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    )
    +            
    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    )
     
    @@ -280,17 +281,17 @@

    -
    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    )
    +            
    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    )
     
    @@ -308,18 +309,18 @@

    -
    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    )
    +            
    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    )
     
    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 @@

     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    )
     
    @@ -89,20 +90,20 @@

    -
     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    )
    +            
     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    )
     
    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 @@

     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    )
     
    @@ -148,20 +149,20 @@

    -
     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    )
    +            
     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    )
     
    @@ -179,21 +180,21 @@

    -
    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    )
    +            
    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    )
     
    @@ -211,19 +212,19 @@

    -
    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    )
    +            
    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    )
     
    @@ -241,22 +242,22 @@

    -
    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    )
    +            
    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    )
     
    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 @@

     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    )
     
    @@ -131,24 +132,24 @@

    -
     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    )
    +            
     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    )
     
    @@ -166,19 +167,19 @@

    -
    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    )
    +            
    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    )
     
    @@ -196,21 +197,21 @@

    -
    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    )
    +            
    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    )
     
    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 @@

     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    )
     
    @@ -153,23 +154,23 @@

    -
     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    )
    +            
     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    )
     
    @@ -187,23 +188,23 @@

    -
    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    )
    +            
    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    )
     
    @@ -221,24 +222,24 @@

    -
    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    )
    +            
    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    )
     
    @@ -256,17 +257,17 @@

    -
    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    )
    +            
    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    )
     
    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 @@

     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    )
     
    @@ -159,18 +160,18 @@

    -
     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    )
    +            
     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    )
     
    @@ -188,18 +189,18 @@

    -
    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    )
    +            
    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    )
     
    @@ -217,19 +218,19 @@

    -
    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    )
    +            
    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    )
     
    @@ -247,18 +248,18 @@

    -
    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    )
    +            
    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    )
     
    @@ -276,21 +277,21 @@

    -
    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    )
    +            
    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    )
     
    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 @@

      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)
     
    @@ -350,28 +351,28 @@

    -
    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
    +            
    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_text
     
    @@ -400,31 +401,31 @@

    Returns

    -
    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
    +            
    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_text
     
    @@ -454,67 +455,67 @@

    Returns

    -
     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
    +            
     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_key
     
    @@ -552,133 +553,133 @@

    Returns

    -
    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
    +            
    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
     
    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 @@

     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;e1;){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\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 If game_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 If week 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, set season_type to \"postseason\".\n If season_type is set to anything but \"regular\" or \"postseason\", \n a ValueError() 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 set team 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 set home_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 set away_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 set conference_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with college football betting data, \nor (if return_as_dict is set to True) \na dictionary object with college football betting data.

    \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": "

    Retrives information from the CFBD API on CFB Head Coaches.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 to year, but used in tandem with max_season to get coaches who coached with in a range of seasons.

    \n\n

    max_season (int, optional):\n Optional argument.\n Similar to year, but used in tandem with min_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with CFB head coach data, \nor (if return_as_dict is set to True) \na dictionary object with CFB head coach data.

    \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": "

    Retrives a list of CFB conferences from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with CFB conference data, \nor (if return_as_dict is set to True) \na dictionary object with CFB conference data.

    \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": "

    Retrives a list of NFL teams from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with NFL team data, \nor (if return_as_dict is set to True) \na dictionary object with NFL team data.

    \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": "

    Retrives a list of player positions for the NFL Draft from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with player position data, \nor (if return_as_dict is set to True) \na dictionary object with player position data.

    \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": "

    Retrives a list of actual NFL Draft selections from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_key_dir is a directory, \n and will try to find a CFBD API key file in that directory.

    \n\n

    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

    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, set season to 2020.

    \n\n

    nfl_team (str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific NFL team, set nfl_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, set nfl_team to Cincinnati.

    \n\n

    college (str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific CFB team, set college 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, set college to Clemson.

    \n\n

    conference (str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific CFB confrence, set conference to the abbreviation of that confrence. \n A list of CFBD API confrence abbreviations can be found in the conference_abbreviation column from \n the pandas DataFrame that is returned by calling cfbd_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, set confrence to B12.

    \n\n

    position (str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections who played a specific position, \n set position to that position's abbreviation. \n A list of CFBD API positions can be found in the position_abbreviation column from \n the pandas DataFrame that is returned by calling cfbd_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with NFL Draft selection data, \nor (if return_as_dict is set to True) \na dictionary object with NFL Draft selection data.

    \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": "

    Retrives a list of CFB drives from the CFBD API.

    \n\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 set season_type to \"postseason\".\n If season_type is set to anything but \"regular\" or \"postseason\", \n a ValueError() will be raised.

    \n\n

    week (int, optional):\n Optional argument.\n If week 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 set team 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 set team 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 set team 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 set conference_abv to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use the cfbd_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 set conference_abv to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use the cfbd_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 set conference_abv to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use the cfbd_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\n
    Other 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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with CFB drive data, \nor (if return_as_dict is set to True) \na dictionary object with CFB drive data.

    \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": "

    Retrives game schedule data CFBD API.

    \n\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 set season_type to \"postseason\".\n If season_type is set to anything but \"regular\" or \"postseason\", \n a ValueError() will be raised.

    \n\n

    week (int, optional):\n Optional argument.\n If week 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 set team 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 set home_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 set away_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 set conference_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\n
    Other 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 If game_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

    Usage

    \n\n
    \n
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with college football game information, \nor (if return_as_dict is set to True) \na dictionary object with college football game information.

    \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": "

    Implements a reverse cipher encription to a plain text string.

    \n\n

    Parameters

    \n\n

    plain_text_str (mandatory, str):\n The string you want to encrypt through reverse cipher encryption.

    \n\n

    Returns

    \n\n

    A 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\n

    Parameters

    \n\n

    encrypted_text_str (mandatory, str):\n The string you presume that is encrypted through reverse cipher encryption, \n that you want decrypted.

    \n\n

    Returns

    \n\n

    A 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\n

    If this package is being used in a GitHub Actions action,\nset the key in the environment by \ncreating a repository secret nammed CFBD_API_KEY.

    \n\n

    Parameters

    \n\n

    api_key_dir (str, optional):\n Optional argument. If api_key_dir is set to a non-null string, \n set_cfbd_api_token() will attempt to save the key file in that directory,\n instead of this user's home directory.

    \n\n

    Returns

    \n\n

    A 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 {home_dir}/.cfbd/cfbd_key.json, or in a custom directory.

    \n\n

    Parameters

    \n\n

    api_key (str, mandatory):\n The CFBD API key you have. \n DO NOT input Bearer {your CFBD API key},\n this package will take care of that for you.

    \n\n

    api_key_dir (str, optional):\n Optional argument. If api_key_dir is set to a non-null string, \n set_cfbd_api_token() will attempt to save the key file in that directory,\n instead of this user's home directory.

    \n\n

    Returns

    \n\n

    Nothing. \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\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 If game_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 If week 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, set season_type to \"postseason\".\n If season_type is set to anything but \"regular\" or \"postseason\", \n a ValueError() 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 set team 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 set home_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 set away_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 set conference_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with college football betting data, \nor (if return_as_dict is set to True) \na dictionary object with college football betting data.

    \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": "

    Retrives information from the CFBD API on CFB Head Coaches.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 to year, but used in tandem with max_season to get coaches who coached with in a range of seasons.

    \n\n

    max_season (int, optional):\n Optional argument.\n Similar to year, but used in tandem with min_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with CFB head coach data, \nor (if return_as_dict is set to True) \na dictionary object with CFB head coach data.

    \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": "

    Retrives a list of CFB conferences from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with CFB conference data, \nor (if return_as_dict is set to True) \na dictionary object with CFB conference data.

    \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": "

    Retrives a list of NFL teams from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with NFL team data, \nor (if return_as_dict is set to True) \na dictionary object with NFL team data.

    \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": "

    Retrives a list of player positions for the NFL Draft from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with player position data, \nor (if return_as_dict is set to True) \na dictionary object with player position data.

    \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": "

    Retrives a list of actual NFL Draft selections from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_key_dir is a directory, \n and will try to find a CFBD API key file in that directory.

    \n\n

    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

    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, set season to 2020.

    \n\n

    nfl_team (str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific NFL team, set nfl_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, set nfl_team to Cincinnati.

    \n\n

    college (str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific CFB team, set college 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, set college to Clemson.

    \n\n

    conference (str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections from a specific CFB confrence, set conference to the abbreviation of that confrence. \n A list of CFBD API confrence abbreviations can be found in the conference_abbreviation column from \n the pandas DataFrame that is returned by calling cfbd_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, set confrence to B12.

    \n\n

    position (str, optional):\n Semi-Optional argument.\n If you only want NFL Draft selections who played a specific position, \n set position to that position's abbreviation. \n A list of CFBD API positions can be found in the position_abbreviation column from \n the pandas DataFrame that is returned by calling cfbd_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with NFL Draft selection data, \nor (if return_as_dict is set to True) \na dictionary object with NFL Draft selection data.

    \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": "

    Retrives a list of CFB drives from the CFBD API.

    \n\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 set season_type to \"postseason\".\n If season_type is set to anything but \"regular\" or \"postseason\", \n a ValueError() will be raised.

    \n\n

    week (int, optional):\n Optional argument.\n If week 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 set team 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 set team 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 set team 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 set conference_abv to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use the cfbd_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 set conference_abv to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use the cfbd_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 set conference_abv to the abbreviation \n of the conference you want CFB drive data from.\n For a list of confrences, \n use the cfbd_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\n
    Other 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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with CFB drive data, \nor (if return_as_dict is set to True) \na dictionary object with CFB drive data.

    \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": "

    Retrives game schedule data from the CFBD API.

    \n\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 set season_type to \"postseason\".\n If season_type is set to anything but \"regular\" or \"postseason\", \n a ValueError() will be raised.

    \n\n

    week (int, optional):\n Optional argument.\n If week 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 set team 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 set home_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 set away_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 set conference_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\n
    Other 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 If game_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with college football game information, \nor (if return_as_dict is set to True) \na dictionary object with college football game information.

    \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": "

    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\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 set season or team to a non-null value for \n this function to work. If you don't, a ValueError() \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 set team to the name of the team you want CFB drive data from.\n You MUST set season or team to a non-null value for \n this function to work. If you don't, a ValueError() \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 set conference_abv to the abbreviation \n of the conference you want CFB team records data from.\n For a list of confrences, \n use the cfbd_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with CFB team records data, \nor (if return_as_dict is set to True)\na dictionary object with CFB team records data.

    \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": "

    Retrives a list of weeks that occured in a given CFB season.

    \n\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with a list of valid weeks in a given CFB season, \nor (if return_as_dict is set to True)\na dictionary object with a list of valid weeks in a given CFB season.

    \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": "

    Gets known media information for CFB games in a given CFB season.

    \n\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 set season_type to \"postseason\".\n If you want both \"regular\" and \"postseason\" games retunred, \n set season_type to \"both\"\n If season_type is set to anything but \"regular\" or \"postseason\", \n a ValueError() will be raised.

    \n\n

    week (int, optional):\n Optional argument.\n If week 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 set team 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 set conference_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\n
    Valid 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\n
    Other 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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with college football media information, \nor (if return_as_dict is set to True) \na dictionary object with college football media information.

    \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": "

    Retrives player game stats for a given time frame.

    \n\n

    Parameters

    \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 If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 set season_type to \"postseason\".\n If season_type is set to anything but \"regular\" or \"postseason\", \n a ValueError() will be raised.

    \n\n

    For the following three variables, \nat least one must be set to a non-null variable when calling this function.

    \n\n

    week (int, optional):\n Optional argument.\n If week 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 set team 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 set conference_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\n
    Valid 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 If game_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with player game stats data, \nor (if return_as_dict is set to True) \na dictionary object with player game stats data.

    \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": "

    Retrives advanced game stats from the CFBD API.

    \n\n

    Parameters

    \n\n

    api_key (str, optional):\n Semi-optional argument. \n If api_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 If api_key is not null, this function will automatically assume that the\n inputted api_key is a valid CFBD API key.

    \n\n

    api_key_dir (str, optional):\n Optional argument.\n If api_key is set to a string non-empty string, this variable is ignored.\n If api_key_dir is null, and api_key is null, \n this function will try to find a CFBD API key file in this user's home directory.\n If api_key_dir is set to a string, and api_key is null,\n this function will assume that api_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 pandas DataFrame object,\n set return_as_dict to True.

    \n\n

    Usage

    \n\n
    import 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
    \n\n

    Returns

    \n\n

    A pandas DataFrame object with college football game information, \nor (if return_as_dict is set to True) \na dictionary object with college football game information.

    \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": "

    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\n

    Parameters

    \n\n

    plain_text_str (mandatory, str):\n The string you want to encrypt through reverse cipher encryption.

    \n\n

    Returns

    \n\n

    A 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\n

    Parameters

    \n\n

    encrypted_text_str (mandatory, str):\n The string you presume that is encrypted through reverse cipher encryption, \n that you want decrypted.

    \n\n

    Returns

    \n\n

    A 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\n

    If this package is being used in a GitHub Actions action,\nset the key in the environment by \ncreating a repository secret nammed CFBD_API_KEY.

    \n\n

    Parameters

    \n\n

    api_key_dir (str, optional):\n Optional argument. If api_key_dir is set to a non-null string, \n set_cfbd_api_token() will attempt to save the key file in that directory,\n instead of this user's home directory.

    \n\n

    Returns

    \n\n

    A 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 {home_dir}/.cfbd/cfbd_key.json, or in a custom directory.

    \n\n

    Parameters

    \n\n

    api_key (str, mandatory):\n The CFBD API key you have. \n DO NOT input Bearer {your CFBD API key},\n this package will take care of that for you.

    \n\n

    api_key_dir (str, optional):\n Optional argument. If api_key_dir is set to a non-null string, \n set_cfbd_api_token() will attempt to save the key file in that directory,\n instead of this user's home directory.

    \n\n

    Returns

    \n\n

    Nothing. \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"}