beatsaber-playlist-tool/BEATLEADER.md

2.4 KiB

BeatLeaderAPI Python Wrapper

This Python class provides a convenient wrapper for interacting with the BeatLeader API, specifically for retrieving player scores and song data for the game Beat Saber.

Features

  • Fetch player scores and song data from the BeatLeader API
  • Local caching of API responses to reduce API calls and improve performance
  • Automatic pagination handling to retrieve all available data
  • Configurable cache expiration
  • Methods to retrieve both full and minimal song data

Usage

Basic Usage

from saberlist.beatleaderAPI import BeatLeaderAPI

# Initialize the API wrapper
api = BeatLeaderAPI(cache_expiry_days=1)

# Fetch player scores
player_id = '76561199407393962'
scores = api.get_player_scores(player_id)

# Get full song data
songs = api.get_player_songs(player_id)

# Get minimal song data
minimal_songs = api.get_player_songs_minimal(player_id)

Caching

The class uses a local cache to store API responses. By default, the cache is located at:

  • ~/.cache/saberlist/ on Unix-like systems (if ~/.cache/ exists)
  • ./.cache/ in the current working directory (as a fallback)

You can control cache behavior:

# Set cache expiry (in days)
api = BeatLeaderAPI(cache_expiry_days=7)

# Force a fresh API call (ignore cache)
fresh_scores = api.get_player_scores(player_id, use_cache=False)

# Clear cache for a specific player
api.clear_cache(player_id)

# Clear all cache
api.clear_cache()

# Get the current cache directory
cache_dir = api.get_cache_dir()

Pagination

The get_player_scores method automatically handles pagination to retrieve all available scores. You can control this behavior:

# Set a custom page size (default is 100)
scores = api.get_player_scores(player_id, page_size=50)

# Limit the number of pages fetched
scores = api.get_player_scores(player_id, max_pages=5)

Methods

  • get_player_scores(player_id, use_cache=True, page_size=100, max_pages=None): Retrieves all scores for a player.
  • get_player_songs(player_id, page=1, count=100, use_cache=True): Retrieves full song data for all unique songs a player has played.
  • get_player_songs_minimal(player_id, page=1, count=100, use_cache=True): Retrieves minimal song data (id, name, author, mapper, hash, bpm, duration) for all unique songs a player has played.
  • clear_cache(player_id=None): Clears the cache for a specific player or all cached data.
  • get_cache_dir(): Returns the path to the current cache directory.