statbook 0.0.1

A Rust library for accessing sports statistics and data (early development)
Documentation

Statbook

CI Crates.io License: MIT OR Apache-2.0 Rust Version

A Rust library for accessing sports statistics and data.

Currently supports NFL player data via MySportsFeeds.com with plans to expand to other sports and data sources.

Setup

1. Get MySportsFeeds Credentials

Sign up for a free account at MySportsFeeds.com to get your API credentials.

2. Add to Cargo.toml

[dependencies]
statbook = "0.1.0"
tokio = { version = "1.0", features = ["full"] }

3. Set Environment Variables

export STATBOOK_API_KEY="your-api-key"
export STATBOOK_PASSWORD="your-password"

Quick Start

use statbook::{StatbookClient, api::players::get_player_by_name};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = StatbookClient::from_env()?;
    
    if let Some(player) = get_player_by_name(&client, "tom-brady").await? {
        println!("{} {} - #{}", player.first_name, player.last_name, player.jersey_number);
        println!("Position: {}", player.primary_position);
        println!("Team: {}", player.current_team);
        println!("Games Played: {}", player.games_played);
    }
    
    Ok(())
}

Configuration Options

Environment Variables (Recommended)

use statbook::StatbookClient;

let client = StatbookClient::from_env()?;

Builder Pattern

use statbook::{StatbookClient, StatbookConfig};

let config = StatbookConfig::builder()
    .api_key("your-api-key")
    .password("your-password")
    .build()?;
    
let client = StatbookClient::new(config);

Direct Configuration

use statbook::{StatbookClient, StatbookConfig};

let config = StatbookConfig::new(
    "your-api-key".to_string(), 
    "your-password".to_string()
);
let client = StatbookClient::new(config);

API Reference

Players

use statbook::api::players::get_player_by_name;

// Get player summary
let player = get_player_by_name(&client, "josh-allen").await?;

Types

use statbook::models::PlayerSummary;

// PlayerSummary contains:
// - first_name: String
// - last_name: String  
// - primary_position: String
// - jersey_number: u32
// - current_team: String
// - injury: String
// - rookie: bool
// - games_played: u64

Error Handling

use statbook::{StatbookClient, StatbookError};

match StatbookClient::from_env() {
    Ok(client) => {
        // Use client
    }
    Err(StatbookError::MissingApiKey) => {
        eprintln!("Please set STATBOOK_API_KEY environment variable");
    }
    Err(StatbookError::MissingPassword) => {
        eprintln!("Please set STATBOOK_PASSWORD environment variable");
    }
    Err(e) => {
        eprintln!("Error: {}", e);
    }
}

Future Plans

  • Finish NFL player and team statistics
  • More comprehensive NFL data (forecasting, games, seasons)
  • Additional sports (NHL, NBA, etc.)
  • Additional data providers beyond MySportsFeeds

License

Licensed under either of

  • Apache License, Version 2.0
  • MIT license

at your option.