Skip to main content

A collection of sports analysis utility functions and API wrappers

Project description

lukhed_sports

A collection of sports analysis utility functions and API wrappers

Installation

pip install lukhed-sports

Available Wrappers

Drafkings Sportsbook Wrapper

Access live data from Draftkings Sportsbook via their API methods. Quick start information below. Full documentation coming. This class is still a work in progress.

Table of Contents

Instantiation

from lukhed_sports import DkSportsbook
api = DkSportsbook()

get_available_leagues

Provides valid league inputs for various methods.

leagues = api.get_available_leagues('basketball')
[
    "argentina - liga nacional de basquetbol",
    "australia - nbl",
    "brazil - nbb",
    "china - cba",
    "college basketball (m)",
    "college basketball (w)",
    "croatia premier league",
    "germany - bundesliga",
    "greece - basket league",
    "israel - super league (w)",
    "italy - lega 1",
    "korea - basketball league (w)",
    "nba",
    "turkey - bsl",
    "wnba"
]

get_spread_for_team

Provides the current spread and spread odds for the given team.

spread = api.get_spread_for_team('nfl', 'commanders')
{
    "spread": 5.5,
    "odds": {
        "american": "-108",
        "decimal": "1.92",
        "fractional": "25/27"
    }
}

get_gamelines_for_league

Provides all the gamelines available for a given league.

gamelines = api.get_gamelines_for_league('nfl')

Full example response

get_basic_touchdown_scorer_props

Provides all the basic td scoring props available, with various filter options.

td = api.get_basic_touchdown_scorer_props('college football', prop_type_filter='anytime', game_filter='notre dame')
[
    {
        "id": "0QA229129141#130806310_13L87637Q1477509025Q20",
        "marketId": "229129141",
        "label": "Jeremiah Smith",
        "displayOdds": {
            "american": "-140",
            "decimal": "1.71",
            "fractional": "5/7"
        },
        "trueOdds": 1.71428572,
        "outcomeType": "Anytime Scorer",
        "participants": [
            {
                "id": "786772",
                "name": "Jeremiah Smith",
                "type": "Player",
                "seoIdentifier": "Jeremiah Smith"
            }
        ],
        "sortOrder": 3001710,
        "tags": [
            "SGP",
            "1stFavorite"
        ],
        "metadata": {}
    },
    {
        "id": "0QA229129141#130806308_13L87637Q1709721529Q20",
        "marketId": "229129141",
        "label": "TreVeyon Henderson",
        "displayOdds": {
            "american": "-140",
            "decimal": "1.71",
            "fractional": "5/7"
        },
        "trueOdds": 1.71428572,
        "outcomeType": "Anytime Scorer",
        "participants": [
            {
                "id": "570977",
                "name": "TreVeyon Henderson",
                "type": "Player",
                "seoIdentifier": "TreVeyon Henderson"
            }
        ],
        "sortOrder": 3001710,
        "tags": [
            "SGP",
            "2ndFavorite"
        ],
        "metadata": {}
    },
    ...

ESPN NFL Stats Wrapper

Access team and player statistics from ESPN for the NFL. This wrapper provides functionality to retrieve team statistics, player rosters, player search, and detailed player statistics.

Partial documentation below. See examples.py in the repo for more.

Table of Contents

Instantiation

from lukhed_sports import EspnNflStats
espn = EspnNflStats()

Team Statistics

Get comprehensive team statistics for the NFL.

# Get all team stats for a specific season
stats = espn.get_all_teams_stats(2023, regular_or_offseason='regular')

# Get offensive stats summary for a team
offense_summary = espn.team_stats_get_ypg_summary('DET', ball_side='offense')

Player Search

Search for players with various filtering options, including fuzzy name matching.

# Basic search
players = espn.player_search('Mahomes')

# Advanced search with fuzzy matching
players = espn.player_search('Mahomes', fuzzy_search=True, fuzzy_threshold=80)

Player Statistics

Access detailed player statistics including career stats, game logs, and splits.

# Get overview stats (page: https://www.espn.com/nfl/player/_/id/3139477/patrick-mahomes)
player_overview = espn.get_player_stat_overview('Patrick Mahomes', team='KC')

# Get player career bio information (page: https://www.espn.com/nfl/player/bio/_/id/3139477/patrick-mahomes)
player_bio = espn.get_player_stat_bio('Patrick Mahomes')

# Get player game log for season (page: https://www.espn.com/nfl/player/gamelog/_/id/3139477/type/nfl/year/2023)
game_log = espn.get_player_stat_gamelog('Patrick Mahomes', season='2023')

# Get player statistical splits (page: https://www.espn.com/nfl/player/splits/_/id/3139477/patrick-mahomes)
splits = espn.get_player_stat_splits('Patrick Mahomes')

# Get college stats for a player (page: https://www.espn.com/nfl/player/gamelog/_/id/3916387/type/college-football)
college_stats = espn.get_player_stat_gamelog('jackson', last_name_search=True, team='bal', position='QB', 
                                             league='college')

Sportspage Feeds Wrapper

This class is a custom wrapper for the sportspagefeeds API.

It provides:

  • Management of api key -> You can store api key locally (by default) or with a private github repo so you can use the api efficiently across different hardware.
  • Optionally manage api limits (on by default)
  • Methods to utilize each endpoint from sportspagefeeds
  • Optionally validate input (on by default), to ensure you do not waste API calls
  • Methods to get valid inputs for each endpoint, as documentation is sparse
  • Methods to parse data returned by basic (non-paid) endpoints

Quick start information below. Full documentation for this class is in development.

API Key Management Locally

Instatiate without optional parameters and upon first use, the class will take you thru setup (copy and paste your Sportspage key)

api = SportsPage()

API Key Managment with Private Github Repo

Instantiate with option github parameters and Upon first use, class will take you thru setup (github token and Sportspage key). Future instantiation, just reference the github_project.

# 
api = SportsPage(
    config_file_preference='github', 
    github_project='any_project_name'
    )

Games

Get the games occuring today with basic schedule and odds information.

api.get_games('nfl')

See full example response see here.

Rankings

Get rankings for the given target.

rankings = api.get_rankings('ncaaf')

See full example response see here.

Check API Usage

Free tier of Sportspage is limited. You can check your api usage with this method.

api.check_api_limit()

# print to console
>>>
You have 15 api calls remaining
Your reset time is set for 20241230194114 US/Eastern
Your limit is 20

Response

{
    "limit": 20,
    "remaining": 15,
    "resetTime": "20250105194115",
    "lastCall": "20250105121251"
}

All Endpoints

api.get_games           # Get schedule/status of games
api.get_rankings        # Get rankings for various leagues    
api.get_teams           # Get teams in leagues/conferences
api.get_conferences     # Get conferences in leagues
api.get_game_by_id      # Get info about a game by its ID
api.get_odds            # Get odds for a game (requires paid tier)

Example responses

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lukhed_sports-0.8.0.tar.gz (50.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lukhed_sports-0.8.0-py3-none-any.whl (67.8 kB view details)

Uploaded Python 3

File details

Details for the file lukhed_sports-0.8.0.tar.gz.

File metadata

  • Download URL: lukhed_sports-0.8.0.tar.gz
  • Upload date:
  • Size: 50.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for lukhed_sports-0.8.0.tar.gz
Algorithm Hash digest
SHA256 779c6db5f386157eaa39e704fadef9ec94af0da2374e5ffd9c1fee2028fbc342
MD5 de958f37a6bdbedbed449640225b5bf2
BLAKE2b-256 c6a748a071a1c6d87e019575f2d0b2f20aadafd6bb01d30fe76bbe0596bca6b8

See more details on using hashes here.

File details

Details for the file lukhed_sports-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: lukhed_sports-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 67.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for lukhed_sports-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7e6960f235bb4e23ac4f4b02c523ca67d2faf4e4b6f2942cf9335282954dcfff
MD5 812a76b1f16bc6e5e9c315db54f48947
BLAKE2b-256 5623f849086fdd052b778711d8c3c13e407a3f3985651585fc51b0c5a3973524

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page