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: = 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.8 ,<=3.12
- aiohttp
- attrs.
Optional Requirements for speedups.
- aiodns
- cchardet
- uvloop
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.5b12.tar.gz
(86.8 kB
view hashes)
Built Distribution
aiobungie-0.2.5b12-py3-none-any.whl
(119.3 kB
view hashes)
Close
Hashes for aiobungie-0.2.5b12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c71148485fcd3c088d6c406b6266a3e0df288455938fe5f4343ebdb275ddc00 |
|
MD5 | a2c263e27cace3bc66370c67153a48be |
|
BLAKE2b-256 | bc8881d089c40c662a349ce276e1cb459e7ece4625e2c128f4933b8e8043c5ab |