Skip to content

Latest commit

 

History

History
107 lines (82 loc) · 3.38 KB

README.md

File metadata and controls

107 lines (82 loc) · 3.38 KB

aiobungie

An asynchronous statically typed API wrapper for the Bungie API written in Python.

Installing

PyPI stable release.

$ pip install aiobungie

Development

$ pip install git+https://github.com/nxtlo/aiobungie@master

Quick Example

See Examples for advance usage.

import aiobungie

client = aiobungie.Client('YOUR_API_KEY')

async def main() -> None:

    # fetch a clan
    clan = await client.fetch_clan("Nuanceㅤ")

    for member in await clan.fetch_members():
        if member.unique_name == "Fate怒#4275":

            # Get the profile for this clan member.
            profile = await member.fetch_self_profile(components=[aiobungie.ComponentType.CHARACTERS])

            # Get the character component for the profile.
            if characters := profile.characters:
                for character in characters.values():
                    print(character.class_type, character.light, character.gender)

                # Check some character stats.
                for stat, stat_value in character.stats.items():
                    if stat is aiobungie.Stat.MOBILITY and stat_value > 90:
                        print(f"Zooming {stat_value} ⭐")

# 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:
    async with aiobungie.RESTClient("TOKEN") as rest_client:
        response = await rest_client.fetch_clan_members(4389205)
        raw_members_payload = response['results']

        for member in raw_members_payload:
            for k, v in member['destinyUserInfo'].items():
                print(k, v)

            # aiobungie also exposes a method which lets you make your own requests.
            await rest.static_request("POST", "Some/Endpoint", auth=access_token, json={...: ...})

            # Methods only exposed through the rest client.
            await rest.refresh_access_token('a token')

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.