This project fetches World of Warcraft character data for all members of a specified guild using Blizzard's Battle.net API. It stores the data in a DuckDB database and provides a Dash-based analytics dashboard to visualize roster demographics, item levels, and progression.
- Python 3.13+
- uv (package manager)
- An active Battle.net API key (CLIENT_ID and CLIENT_SECRET)
- Clone the repository.
- Navigate to the project directory and sync the environment:
uv sync- Obtain the
CLIENT_IDandCLIENT_SECRETfor the Battle.net API by following these instructions. - Create a
.envfile in the project root directory with the following content:
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secretReplace your_client_id and your_client_secret with the actual values obtained in step 3.
To fetch character information for a specific realm and guild, run the import.py script:
uv run python import.py <realm> <guild>Replace <realm> and <guild> with the desired realm and guild names. This will store the fetched data in characters.duckdb.
To import data from a curated list of top US PvE and PvP guilds:
./import_top_guilds.shStart the analytics dashboard with:
uv run app.pyOpen your browser and navigate to http://127.0.0.1:8050.
- Roster Analytics: View class, spec, race, and faction breakdowns.
- Progression Tracking: Level distribution (max level 80) and Item Level vs. Achievement Points scatter plot.
- Filtering: Filter by Guild, Class, and Max Level (80).
- Theme: Dark "World of Warcraft" inspired UI.
Build and run the container:
docker build -t wow-fetcher .
docker run -p 8000:8000 --env-file .env wow-fetcher