A Python library for utilizing the Nebulous.io UDP protocol.
Project description
nebulous.py
Table of Contents
Installation
- Install git
- Install
java-random
:python -m pip install --user git+https://github.com/MostAwesomeDude/java-random
- NOTE: This is a required step, as the
java-random
package on pypi is outdated and broken.
- NOTE: This is a required step, as the
- Install
nebulous.py
:python -m pip install --user nebulous.py
Usage
Utilizing the client
From test_connect.py
:
import time
from nebulous.game.account import ServerRegions
from nebulous.game.models.client import Client, ClientCallbacks
from nebulous.game.packets import ConnectRequest3, ConnectResult2, Disconnect, KeepAlive
TEST_TICKET = ""
class TestCallbacks(ClientCallbacks):
def on_connect(self, client: Client, packet: ConnectRequest3) -> ConnectRequest3:
print("Connected to server")
return packet
def on_disconnect(self, client: Client, packet: Disconnect) -> Disconnect:
print("Disconnected from server")
return packet
def on_keep_alive(self, client: Client, packet: KeepAlive) -> KeepAlive:
print("Sending keep alive packet")
return packet
def on_connect_result(self, client: Client, packet: ConnectResult2) -> ConnectResult2:
print(f"Received connection result: {packet.result}")
return packet
def test_client():
client = Client(TEST_TICKET, ServerRegions.US_EAST, callbacks=TestCallbacks())
client.start()
# disconnect after 3 seconds.
# can also use client.run_forever() to keep the client running indefinitely
# until ctrl+c is pressed.
time.sleep(3)
client.stop()
if __name__ == "__main__":
test_client()
Interacting with the API
From test_account.py
:
def test_fetch_self():
account = Account(secrets.get("TICKET", ""), ServerRegions.US_EAST) # type: ignore
player = account.player_obj
if player is None:
logger.error("Failed to fetch player object")
return
player_profile = player.get_profile()
player_stats = player.get_stats()
player_xp = player_stats.general_stats.xp
logger.info(f"Player: {player_stats.account_name}")
logger.info(f"Level: {xp2level(player_xp)}")
logger.info(f"Current XP: {player_xp}")
clan_member = player_stats.clan_member
logger.info(f"Clan: {clan_member.clan.name}")
logger.info(f"Role: {clan_member.clan_role}")
logger.info(f"Account bio: {player_profile.bio}")
# fetch friends
logger.info("Fetching friends...")
friends = player.get_friends()
if len(friends) == 0:
logger.info("No friends :(")
return
for friend in friends:
friend_profile = friend.get_profile()
friend_stats = friend.get_stats()
friend_xp = friend_stats.general_stats.xp
logger.info(f"Friend: {friend_stats.account_name}")
logger.info(f"Level: {xp2level(friend_xp)}")
logger.info(f"Current XP: {friend_xp}")
logger.info(f"Account bio: {friend_profile.bio}")
logger.info(f"BFF: {friend.bff}")
logger.info(f"Last seen: {friend.last_played_utc}\n")
logger.info("Cooldown for 1.5 seconds...")
time.sleep(1.5) # don't spam the API
Client
objects also contain an instance to an Account
object, which can be accessed via client.account
.
Dumping Packets
You can also dump packets as json, as shown in sample_packet.json
:
print(packet.as_json(indent=4))
License
nebulous.py
is distributed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nebulous_py-1.3.1.tar.gz
(31.1 kB
view details)
Built Distribution
File details
Details for the file nebulous_py-1.3.1.tar.gz
.
File metadata
- Download URL: nebulous_py-1.3.1.tar.gz
- Upload date:
- Size: 31.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.25.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd7e9b70a65c9920f9d8ff1b104316722bdb70c2894e4299126ffabe5a0d6ae6 |
|
MD5 | bf3f86afe764501e60d2e096b974ebdc |
|
BLAKE2b-256 | 11e6622de6c1dd02124f5296d7230fa2d3a3622ca5afc81e9b33627e67399911 |
File details
Details for the file nebulous_py-1.3.1-py3-none-any.whl
.
File metadata
- Download URL: nebulous_py-1.3.1-py3-none-any.whl
- Upload date:
- Size: 32.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.25.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c807aa19bcdcba0bcf44a681d651c288b08d83db381f51822b9de2ea08049b25 |
|
MD5 | d05871ea4b54aaa38d12d0b9cbade1dd |
|
BLAKE2b-256 | 52b50c4d1ee5df4a9d3cd122fd27f474844e3e3d0d5c617b71b4210440d2f8fa |