SkyHelper-Networth-Python
SkyHelper's Networth Calculation as a Python package to calculate a player's SkyBlock networth by using their profile data provided by the Hypixel API.
This project is not affiliated with SkyHelper or Hypixel in any way. Do not report issues regarding this package to them. However, feel free to open an issue here.
Installation
You can install the package using pip:
pip install skyhelper-networth
Or using uv:
uv add skyhelper-networth
Quick Start
This package was designed to be used asynchronously, you should use an async HTTP client to fetch
the profile and museum data from the Hypixel API. It
uses aiohttp internally to make its API calls (to get current
prices from SkyHelper prices repo and item information from Hypixel API). The following example
demonstrates how to use the ProfileNetworthCalculator to calculate a player's networth while
reusing the existing ClientSession:
import asyncio
from aiohttp import ClientSession
from skyhelper_networth import ProfileNetworthCalculator
uuid = ""
profile_id = ""
hypixel_api_key = ""
headers = {"API-Key": hypixel_api_key}
async def main():
async with ClientSession() as session:
async with session.get(
"https://api.hypixel.net/v2/skyblock/profiles",
headers=headers,
params={"uuid": uuid},
) as response:
profiles = await response.json()
async with session.get(
"https://api.hypixel.net/v2/skyblock/museum",
headers=headers,
params={"profile": profile_id},
) as response:
museum = await response.json()
profile = next(
profile
for profile in profiles.get("profiles")
if profile.get("profile_id") == profile_id
)
user_profile = profile.get("members").get(uuid)
# In some cases, the balance may not be present in the profile data.
balance = profile.get("banking", {}).get("balance", 0)
museum_data = museum.get("members").get(uuid)
calculator = ProfileNetworthCalculator(user_profile, museum_data, balance, session=session)
networth = await calculator.get_networth()
non_cosmetic_networth = await calculator.get_non_cosmetic_networth()
print("Networth:", networth)
print("Non-Cosmetic Networth:", non_cosmetic_networth)
asyncio.run(main())
If you do not wish to provide a session, you can use ProfileNetworthCalculator as an asynchronous
context manager, which will handle the session internally. It is not recommended as it will create a
new session for each instance of the calculator.
async with ProfileNetworthCalculator(user_profile, museum_data, balance) as calculator:
networth = await calculator.get_networth()
Methods like get_networth and get_non_cosmetic_networth will only work within the context
manager or as long as the session is open.
Other calculators are available, such as
PetCalculatororSkyBlockItemCalculator, which can be used to calculate the networth of a single item.
Contributing
Contributions are welcome!
The project uses uv for development, you can set up your
environment with:
uv sync
Pre-commit Hooks
You can use prek for pre-commit hooks. It will notably run pyproject-fmt, Ruff and ty. Check out prek.toml for the full configuration.
uv run prek
You can install the pre-commit hooks so that it runs automatically before each commit with the following command:
uv run prek install
Testing
You can run the tests using unittest:
uv run -m unittest
Credits
Huge thanks to Altpapier for creating SkyHelper-Networth. This project would not have been possible without their work.
I would also like to thank DuckySoLucky for doing a Go implementation of the Node.js module, SkyHelper-Networth-Go, which helped me understand the structure and logic of the original code. It served as a great reference to correctly type the code.
Again, this project is not affiliated with either of them.
License
This project is licensed under the MIT License. See the LICENSE file for details.
The NBT parsing code is based on PyNBT by Tyler Kennedy, which is also licensed under the MIT License.
Metadata
Release files for skyhelper-networth 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| skyhelper_networth-0.0.3.tar.gz | 33.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| skyhelper_networth-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 98.2 kB
Release files / skyhelper_networth-0.0.3.tar.gz
| Download URL | skyhelper_networth-0.0.3.tar.gz |
|---|---|
| Size | 33.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c1bd9a44bdfe2cb749bade192b84a44588971d7a7d065e350165c5e2d3253d28
|
|
BLAKE2b-256 checksum How to use checksums |
e87e0e7c0201a4b27f89968c658c568de67eb454cec613745bb4511879452e87
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Alpine Linux","version":"3.24.1","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / skyhelper_networth-0.0.3-py3-none-any.whl
| Download URL | skyhelper_networth-0.0.3-py3-none-any.whl |
|---|---|
| Size | 65.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b83ccc714ea21897fdd5be354cde69f2306cac7a889d82306c1a1b15774bb1c1
|
|
BLAKE2b-256 checksum How to use checksums |
16daf65fdcad56514f81b315dfe1295f8167f935d226d5762937a98322dec610
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Alpine Linux","version":"3.24.1","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|