ParseScore - A client for collecting character data and adding it to the WoW addon
Project description
ParseScore
ParseScore is a system for collecting, processing, and displaying player performance data from Warcraft Logs.
Components
The system consists of three main components:
- Client: Fetches data from the server and converts it to a format usable by the addon
Features
- Scheduled data collection that runs hourly
- Error recovery mechanisms for API outages and rate limiting
- Comprehensive logging system
- Data validation for consistency and quality
- Configuration system for customizable collection parameters
Setup
- Ensure you have Python 3.14 or later installed
- Create a virtual environment:
uv venv - Activate the virtual environment:
# On Windows (PowerShell): .\.venv\Scripts\Activate.ps1 # On Windows (Command Prompt): .venv\Scripts\activate # On Unix/MacOS: source .venv/bin/activate - Install dependencies:
uv sync - Set up environment variables in a
.envfile:WCL_CLIENT_ID=your_client_id WCL_CLIENT_SECRET=your_client_secret WCL_TOKEN=your_token WCL_RECENT_REPORTS_URL=your_reports_url
Configuration
The server can be configured using a config.yaml file in the project root. If this file doesn't exist, a default one
will be created when the server is first run.
The configuration file has the following sections:
- api: API-related settings (rate limits, timeouts, etc.)
- data_collection: Settings for the data collection process
- database: Database settings
- logging: Logging configuration
- urls: URL settings
- zones: Zone ID settings
Example configuration:
api:
rate_limit: 9000
rate_limit_threshold: 8500
max_retries: 5
timeout: 60
batch_interval: 1
data_collection:
schedule_interval_seconds: 3600 # 1 hour
max_reports_to_process: 10
concurrent_requests: 5
database:
path: db.sqlite3
backup_interval_days: 7
max_backups: 5
logging:
file: logs/server.log
rotation: 10 MB
retention: 1 week
format: "{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}"
level: INFO
urls:
recent_reports: https://www.example.com/reports
api_endpoint: https://www.warcraftlogs.com/api/v2/client
zones:
current_zone_id: 43
Running the Server
To run the server with the default scheduled task system:
python -m src.server.main
To run the data collection task once and exit:
python -m src.server.main --run-once
To test the configuration system:
python -m src.server.main --test-config
Alternatively, you can use the test script:
python -m tests.test_config
Client
The client is a Python application that fetches data from the server and converts it to a format usable by the addon.
Client implementation is in progress.
Addon
The addon is a World of Warcraft addon that displays player performance data in-game.
Addon implementation is in progress.
Development
Running Tests
To run the tests:
python -m pytest
Code Style
The project uses ruff for linting and formatting:
# Check for linting errors and apply automatic fixes
ruff check --fix .
# Format all files
ruff format .
Type Checking
The project uses ty for static type checking:
ty check .
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file parsescore_client-0.14.tar.gz.
File metadata
- Download URL: parsescore_client-0.14.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
250efb70212764e96402fe531022de14db8e3d3a76c16b789acc292f21f6c3ba
|
|
| MD5 |
2deb41f0a57dcf1c51cba0149e1067ba
|
|
| BLAKE2b-256 |
f15037be34d5b24f1770b158ac3284754e323318d181cbe09634c9e721fddefa
|
Provenance
The following attestation bundles were made for parsescore_client-0.14.tar.gz:
Publisher:
publish.yml on Krytos/parsescore-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
parsescore_client-0.14.tar.gz -
Subject digest:
250efb70212764e96402fe531022de14db8e3d3a76c16b789acc292f21f6c3ba - Sigstore transparency entry: 229718742
- Sigstore integration time:
-
Permalink:
Krytos/parsescore-client@6822f39da3cb954472783b311e7a7bc0c7b3a432 -
Branch / Tag:
refs/tags/v0.14 - Owner: https://github.com/Krytos
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6822f39da3cb954472783b311e7a7bc0c7b3a432 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file parsescore_client-0.14-py3-none-any.whl.
File metadata
- Download URL: parsescore_client-0.14-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
188642fd6c85954987204841ab2920d7cde0a120992bd2c6bd60df26b786fd42
|
|
| MD5 |
a434e5d07d211503ed29c0a8bb13e4cd
|
|
| BLAKE2b-256 |
6a5c64d316bdb1b4db810cfe3af12077e4695a9d225cee24c003319361656aae
|
Provenance
The following attestation bundles were made for parsescore_client-0.14-py3-none-any.whl:
Publisher:
publish.yml on Krytos/parsescore-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
parsescore_client-0.14-py3-none-any.whl -
Subject digest:
188642fd6c85954987204841ab2920d7cde0a120992bd2c6bd60df26b786fd42 - Sigstore transparency entry: 229718744
- Sigstore integration time:
-
Permalink:
Krytos/parsescore-client@6822f39da3cb954472783b311e7a7bc0c7b3a432 -
Branch / Tag:
refs/tags/v0.14 - Owner: https://github.com/Krytos
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6822f39da3cb954472783b311e7a7bc0c7b3a432 -
Trigger Event:
workflow_dispatch
-
Statement type: