A small async api wrapper for the bungie api
Project description
Installing
IT IS recommended to use the latest pre-release from master
since 0.2.4
is missing features from 0.2.5
.
PyPI stable release. Not Recommended Currently.
$ pip install aiobungie
From master Recommended Currently.
$ pip install git+https://github.com/nxtlo/aiobungie
Quick Example
See Examples for advance usage.
import aiobungie
# crates in aiobungie are implementations
# of Bungie's objects to provide
# more functionality.
client = aiobungie.Client('YOUR_API_KEY')
async def main() -> None:
# fetch a clan
clan: aiobungie.crate.Clan = await client.fetch_clan("Nuanceㅤ")
print(clan.name, clan.id)
# Clan owner.
if owner := clan.owner:
# Fetch a profile.
profile: aiobungie.crate.Component = await client.fetch_profile(
owner.id,
owner.type,
# Return All profile components and character components.
aiobungie.ComponentType.CHARACTERS,
*aiobungie.ComponentType.ALL_PROFILES.value
# If a method requires OAuth2 you may wanna pass an auth token as a kwarg.
auth="access_token"
)
# A profile characters component as a mapping from each character id to a character object.
if owner_characters := profile.characters:
for character_id, character in owner_characters.items():
print(f"ID: {character_id}: Character {character}")
# Check if warlock
if character.class_type is aiobungie.Class.WARLOCK:
# Do something with the warlock
...
# You can either run it using the client or just `asyncio.run(main())`
client.run(main())
RESTful client
Alternatively, You can use RESTClient
which's designed to only make HTTP requests and return JSON objects.
Quick Example
import aiobungie
import asyncio
async def main(access_token: str) -> None:
# Max retries is the maximum retries to backoff when you hit 5xx error codes.
# It defaults to 4 retries.
async with aiobungie.RESTClient("TOKEN", max_retries=5) as rest:
# Passing the player's name and code -> 'Fate怒#4275'
fetch_player = await rest.fetch_player('Fate怒', 4275)
print(*fetch_player) # A JSON array of dict object
for player in fetch_player: # Iterate through the array.
print(player['membershipId'], player['iconPath']) # The player id and icon path.
for k, v in player.items():
print(k, v)
# You can also send your own requests.
await rest.static_request("POST", "Need/OAuth2", headers={"A-HEADER": f"A-Value"}, auth=access_token)
# Defined methods.
await rest.send_friend_request(access_token, member_id=1234)
asyncio.run(main("DB_ACCESS_TOKEN"))
Requirements
- Python 3.9 or higher
- aiohttp
- attrs
Contributing
Please read this manual
Getting Help
- Discord:
Fate 怒#0008
|350750086357057537
- Docs: Here.
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
aiobungie-0.2.5b13.tar.gz
(96.4 kB
view hashes)
Built Distribution
aiobungie-0.2.5b13-py3-none-any.whl
(128.0 kB
view hashes)
Close
Hashes for aiobungie-0.2.5b13-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 751445073607334bd45aee5c9e4450a708bfdcfb0ab46869256dff3ad4cfea03 |
|
MD5 | e54cc2e6c7b4037c346109ea4b3f0f86 |
|
BLAKE2b-256 | e047fb66a5b4cb3b2c828101add40e21ecb24d8be1dd2452a7ed062fbb309020 |