{"id":27972702,"url":"https://github.com/niceaesth/aiosu","last_synced_at":"2025-07-11T15:42:45.968Z","repository":{"id":64161584,"uuid":"532362517","full_name":"NiceAesth/aiosu","owner":"NiceAesth","description":"Simple and fast asynchronous osu! API v1 and v2 library","archived":false,"fork":false,"pushed_at":"2025-05-28T09:53:45.000Z","size":4072,"stargazers_count":17,"open_issues_count":14,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-07T19:37:21.312Z","etag":null,"topics":["async","osu","osu-api","osu-api-v1","osu-api-v2","osu-libraries","osu-web","osugame","python3"],"latest_commit_sha":null,"homepage":"https://aiosu.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NiceAesth.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":".github/CONTRIBUTING.rst","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.rst","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"niceaesth"}},"created_at":"2022-09-03T20:04:31.000Z","updated_at":"2025-05-28T09:53:49.000Z","dependencies_parsed_at":"2023-12-23T15:19:38.546Z","dependency_job_id":"7b2f0b6c-38a5-4353-8633-e4ea5cef1762","html_url":"https://github.com/NiceAesth/aiosu","commit_stats":null,"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/NiceAesth/aiosu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceAesth%2Faiosu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceAesth%2Faiosu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceAesth%2Faiosu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceAesth%2Faiosu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NiceAesth","download_url":"https://codeload.github.com/NiceAesth/aiosu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NiceAesth%2Faiosu/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264842699,"owners_count":23672046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","osu","osu-api","osu-api-v1","osu-api-v2","osu-libraries","osu-web","osugame","python3"],"created_at":"2025-05-07T23:13:46.448Z","updated_at":"2025-07-11T15:42:45.900Z","avatar_url":"https://github.com/NiceAesth.png","language":"Python","funding_links":["https://ko-fi.com/niceaesth"],"categories":[],"sub_categories":[],"readme":"aiosu\n=====\n\n|Python| |pypi| |pre-commit.ci status| |rtd| |pytest| |mypy| |codacy|\n\nSimple and fast asynchronous osu! API v1 and v2 library with various utilities.\n\n\nFeatures\n--------\n\n- Support for modern async syntax (async with)\n- Support for API v1 and API v2\n- Rate limit handling\n- Utilities for osu! related calculations\n- Easy to use\n\n\nInstalling\n----------\n\n**Python 3.9 or higher is required**\n\nTo install the library, simply run the following commands\n\n.. code:: sh\n\n    # Linux/macOS\n    python3 -m pip install -U aiosu\n\n    # Windows\n    py -3 -m pip install -U aiosu\n\nTo install the development version, do the following:\n\n.. code:: sh\n\n    $ git clone https://github.com/NiceAesth/aiosu\n    $ cd aiosu\n    $ python3 -m pip install -U .\n\n\nAPI v1 Example\n--------------\n\n.. code:: py\n\n   import aiosu\n   import asyncio\n\n\n   async def main():\n       # async with syntax\n       async with aiosu.v1.Client(\"osu api token\") as client:\n           user = await client.get_user(7782553)\n\n       # regular syntax\n       client = aiosu.v1.Client(\"osu api token\")\n       user = await client.get_user(7782553)\n       await client.aclose()\n\n\n   if __name__ == \"__main__\":\n       asyncio.run(main())\n\n\nAPI v2 Example\n--------------\n\n.. code:: py\n\n    import aiosu\n    import asyncio\n    import datetime\n\n\n    async def main():\n        token = aiosu.models.OAuthToken.model_validate(json_token_from_api)\n\n        # or\n\n        token = aiosu.models.OAuthToken(\n            access_token=\"access token\",\n            refresh_token=\"refresh token\",\n            expires_on=datetime.datetime.utcnow()\n            + datetime.timedelta(days=1),  # can also be string\n        )\n\n        # async with syntax\n        async with aiosu.v2.Client(\n            client_secret=\"secret\", client_id=1000, token=token\n        ) as client:\n            user = await client.get_me()\n\n        # regular syntax\n        client = aiosu.v2.Client(client_secret=\"secret\", client_id=1000, token=token)\n        user = await client.get_me()\n        await client.aclose()\n\n\n    if __name__ == \"__main__\":\n        asyncio.run(main())\n\n\nYou can find more examples in the examples directory.\n\n\nContributing\n------------\n\nPlease read the `CONTRIBUTING.rst \u003c.github/CONTRIBUTING.rst\u003e`__ to learn how to contribute to aiosu!\n\n\nAcknowledgments\n---------------\n\n-  `discord.py \u003chttps://github.com/Rapptz/discord.py\u003e`__\n   for README formatting\n-  `osu!Akatsuki \u003chttps://github.com/osuAkatsuki/performance-calculator\u003e`__\n   for performance and accuracy utils\n\n\n.. |Python| image:: https://img.shields.io/pypi/pyversions/aiosu.svg\n    :target: https://pypi.python.org/pypi/aiosu\n    :alt: Python version info\n.. |pypi| image:: https://img.shields.io/pypi/v/aiosu.svg\n    :target: https://pypi.python.org/pypi/aiosu\n    :alt: PyPI version info\n.. |pre-commit.ci status| image:: https://results.pre-commit.ci/badge/github/NiceAesth/aiosu/master.svg\n    :target: https://results.pre-commit.ci/latest/github/NiceAesth/aiosu/master\n    :alt: pre-commit.ci status\n.. |pytest| image:: https://github.com/NiceAesth/aiosu/actions/workflows/pytest.yml/badge.svg\n    :target: https://github.com/NiceAesth/aiosu/actions/workflows/pytest.yml\n    :alt: pytest Status\n.. |mypy| image:: https://github.com/NiceAesth/aiosu/actions/workflows/mypy.yml/badge.svg\n    :target: https://github.com/NiceAesth/aiosu/actions/workflows/mypy.yml\n    :alt: mypy Status\n.. |rtd| image:: https://readthedocs.org/projects/aiosu/badge/?version=latest\n    :target: https://aiosu.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n.. |codacy| image:: https://app.codacy.com/project/badge/Grade/9bf211d7e29546dc99cc0b1a3d89b291\n    :target: https://app.codacy.com/gh/NiceAesth/aiosu/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=NiceAesth/aiosu\u0026amp;utm_campaign=Badge_Grade\n    :alt: Codacy Status\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniceaesth%2Faiosu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniceaesth%2Faiosu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniceaesth%2Faiosu/lists"}