Name | ossapi JSON |
Version |
5.0.4
JSON |
| download |
home_page | None |
Summary | Complete python wrapper for osu! api v2 and v1. |
upload_time | 2024-12-08 19:21:51 |
maintainer | None |
docs_url | None |
author | None |
requires_python | None |
license | None |
keywords |
osu!
wrapper
api
python
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# ossapi ([documentation](https://tybug.github.io/ossapi/)) [![PyPI version](https://badge.fury.io/py/ossapi.svg)](https://pypi.org/project/ossapi/)
ossapi is the definitive python wrapper for the osu! api. ossapi has complete coverage of [api v2](https://osu.ppy.sh/docs/index.html) and [api v1](https://github.com/ppy/osu-api/wiki), and provides both sync (`Ossapi`) and async (`OssapiAsync`) versions for api v2.
If you need support or would like to contribute, feel free to ask in the `#ossapi` channel of the [circleguard discord](https://discord.gg/e84qxkQ).
* [Installation](#installation)
* [Quickstart](#quickstart)
* [Async](#async)
* [Endpoints](#endpoints)
* [Beatmap Packs](#endpoints-beatmap-packs)
* [Beatmaps](#endpoints-beatmaps)
* [Beatmapsets](#endpoints-beatmapsets)
* [Changelog](#endpoints-changelog)
* [Chat](#endpoints-chat)
* [Comments](#endpoints-comments)
* [Events](#endpoints-events)
* [Forums](#endpoints-forums)
* [Friends](#endpoints-friends)
* [Home](#endpoints-home)
* [Matches](#endpoints-matches)
* [Me](#endpoints-me)
* [News](#endpoints-news)
* [OAuth](#endpoints-oauth)
* [Rankings](#endpoints-rankings)
* [Rooms](#endpoints-rooms)
* [Scores](#endpoints-scores)
* [Seasonal Backgrounds](#endpoints-seasonal-backgrounds)
* [Spotlights](#endpoints-spotlights)
* [Users](#endpoints-users)
* [Wiki](#endpoints-wiki)
* [Other domains](#other-domains)
* [API v1 Usage](#api-v1-usage)
## Installation
To install:
```bash
pip install ossapi
# or, if you want to use OssapiAsync:
pip install ossapi[async]
```
To upgrade:
```bash
pip install -U ossapi
```
To get started, read the docs: https://tybug.github.io/ossapi/.
## Quickstart
[The docs](https://tybug.github.io/ossapi/) have an [in depth quickstart](https://tybug.github.io/ossapi/creating-a-client.html), but here's a super short version for api v2:
```python
from ossapi import Ossapi
# create a new client at https://osu.ppy.sh/home/account/edit#oauth
api = Ossapi(client_id, client_secret)
# see docs for full list of endpoints
print(api.user("tybug").username)
print(api.user(12092800, mode="osu").username)
print(api.beatmap(221777).id)
```
## Async
ossapi provides an async variant, `OssapiAsync`, which has an identical interface to `Ossapi`:
```python
import asyncio
from ossapi import OssapiAsync
api = OssapiAsync(client_id, client_secret)
async def main():
await api.user("tybug")
asyncio.run(main())
```
[Read more about OssapiAsync on the docs.](https://tybug.github.io/ossapi/async.html)
## Other domains
You can use ossapi to interact with the api of other deployments of the osu website, such as https://dev.ppy.sh.
```python
from ossapi import Ossapi
api = Ossapi(client_id, client_secret, domain="dev")
# get the dev server pp leaderboards
ranking = api.ranking("osu", "performance").ranking
# pearline06, as of 2023
print(ranking[0].user.username)
```
[Read more about domains on the docs.](https://tybug.github.io/ossapi/domains.html)
## Endpoints
All endpoints for api v2.
* Beatmap Packs<a name="endpoints-beatmap-packs"></a>
* [`api.beatmap_pack`](https://tybug.github.io/ossapi/beatmap%20packs.html#ossapi.ossapiv2.Ossapi.beatmap_pack)
* [`api.beatmap_packs`](https://tybug.github.io/ossapi/beatmap%20packs.html#ossapi.ossapiv2.Ossapi.beatmap_packs)
* Beatmaps<a name="endpoints-beatmaps"></a>
* [`api.beatmap`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap)
* [`api.beatmap_attributes`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap_attributes)
* [`api.beatmap_scores`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap_scores)
* [`api.beatmap_user_score`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap_user_score)
* [`api.beatmap_user_scores`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap_user_scores)
* [`api.beatmaps`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmaps)
* Beatmapsets<a name="endpoints-beatmapsets"></a>
* [`api.beatmapset`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset)
* [`api.beatmapset_discussion_posts`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset_discussion_posts)
* [`api.beatmapset_discussion_votes`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset_discussion_votes)
* [`api.beatmapset_discussions`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset_discussions)
* [`api.beatmapset_events`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset_events)
* [`api.search_beatmapsets`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.search_beatmapsets)
* Changelog<a name="endpoints-changelog"></a>
* [`api.changelog_build`](https://tybug.github.io/ossapi/changelog.html#ossapi.ossapiv2.Ossapi.changelog_build)
* [`api.changelog_build_lookup`](https://tybug.github.io/ossapi/changelog.html#ossapi.ossapiv2.Ossapi.changelog_build_lookup)
* [`api.changelog_listing`](https://tybug.github.io/ossapi/changelog.html#ossapi.ossapiv2.Ossapi.changelog_listing)
* Chat<a name="endpoints-chat"></a>
* [`api.send_announcement`](https://tybug.github.io/ossapi/chat.html#ossapi.ossapiv2.Ossapi.send_announcement)
* [`api.send_pm`](https://tybug.github.io/ossapi/chat.html#ossapi.ossapiv2.Ossapi.send_pm)
* Comments<a name="endpoints-comments"></a>
* [`api.comment`](https://tybug.github.io/ossapi/comments.html#ossapi.ossapiv2.Ossapi.comment)
* [`api.comments`](https://tybug.github.io/ossapi/comments.html#ossapi.ossapiv2.Ossapi.comments)
* Events<a name="endpoints-events"></a>
* [`api.events`](https://tybug.github.io/ossapi/events.html#ossapi.ossapiv2.Ossapi.events)
* Forums<a name="endpoints-forums"></a>
* [`api.forum_create_topic`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_create_topic)
* [`api.forum_edit_post`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_edit_post)
* [`api.forum_edit_topic`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_edit_topic)
* [`api.forum_reply`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_reply)
* [`api.forum_topic`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_topic)
* Friends<a name="endpoints-friends"></a>
* [`api.friends`](https://tybug.github.io/ossapi/friends.html#ossapi.ossapiv2.Ossapi.friends)
* Home<a name="endpoints-home"></a>
* [`api.search`](https://tybug.github.io/ossapi/home.html#ossapi.ossapiv2.Ossapi.search)
* Matches<a name="endpoints-matches"></a>
* [`api.match`](https://tybug.github.io/ossapi/matches.html#ossapi.ossapiv2.Ossapi.match)
* [`api.matches`](https://tybug.github.io/ossapi/matches.html#ossapi.ossapiv2.Ossapi.matches)
* Me<a name="endpoints-me"></a>
* [`api.get_me`](https://tybug.github.io/ossapi/me.html#ossapi.ossapiv2.Ossapi.get_me)
* News<a name="endpoints-news"></a>
* [`api.news_listing`](https://tybug.github.io/ossapi/news.html#ossapi.ossapiv2.Ossapi.news_listing)
* [`api.news_post`](https://tybug.github.io/ossapi/news.html#ossapi.ossapiv2.Ossapi.news_post)
* OAuth<a name="endpoints-oauth"></a>
* [`api.revoke_token`](https://tybug.github.io/ossapi/oauth.html#ossapi.ossapiv2.Ossapi.revoke_token)
* Rankings<a name="endpoints-rankings"></a>
* [`api.ranking`](https://tybug.github.io/ossapi/rankings.html#ossapi.ossapiv2.Ossapi.ranking)
* Rooms<a name="endpoints-rooms"></a>
* [`api.multiplayer_scores`](https://tybug.github.io/ossapi/rooms.html#ossapi.ossapiv2.Ossapi.multiplayer_scores)
* [`api.room`](https://tybug.github.io/ossapi/rooms.html#ossapi.ossapiv2.Ossapi.room)
* [`api.room_leaderboard`](https://tybug.github.io/ossapi/rooms.html#ossapi.ossapiv2.Ossapi.room_leaderboard)
* [`api.rooms`](https://tybug.github.io/ossapi/rooms.html#ossapi.ossapiv2.Ossapi.rooms)
* Scores<a name="endpoints-scores"></a>
* [`api.download_score`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.download_score)
* [`api.download_score_mode`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.download_score_mode)
* [`api.score`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.score)
* [`api.score_mode`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.score_mode)
* Seasonal Backgrounds<a name="endpoints-seasonal-backgrounds"></a>
* [`api.seasonal_backgrounds`](https://tybug.github.io/ossapi/seasonal%20backgrounds.html#ossapi.ossapiv2.Ossapi.seasonal_backgrounds)
* Spotlights<a name="endpoints-spotlights"></a>
* [`api.spotlights`](https://tybug.github.io/ossapi/spotlights.html#ossapi.ossapiv2.Ossapi.spotlights)
* Users<a name="endpoints-users"></a>
* [`api.user`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user)
* [`api.user_beatmaps`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user_beatmaps)
* [`api.user_kudosu`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user_kudosu)
* [`api.user_recent_activity`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user_recent_activity)
* [`api.user_scores`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user_scores)
* [`api.users`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.users)
* [`api.users_lookup`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.users_lookup)
* Wiki<a name="endpoints-wiki"></a>
* [`api.wiki_page`](https://tybug.github.io/ossapi/wiki.html#ossapi.ossapiv2.Ossapi.wiki_page)
## API v1 Usage
You can get your api v1 key at <https://osu.ppy.sh/home/account/edit#legacy-api>.
Basic usage:
```python
from ossapi import OssapiV1
api = OssapiV1("key")
print(api.get_beatmaps(user=53378)[0].submit_date)
print(api.get_match(69063884).games[0].game_id)
print(api.get_scores(221777)[0].username)
print(len(api.get_replay(beatmap_id=221777, user=6974470)))
print(api.get_user(12092800).playcount)
print(api.get_user_best(12092800)[0].pp)
print(api.get_user_recent(12092800)[0].beatmap_id)
```
Raw data
{
"_id": null,
"home_page": null,
"name": "ossapi",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "osu!, wrapper, api, python",
"author": null,
"author_email": "Liam DeVoe <orionldevoe@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/bf/d8/42135e0bf8cd4d1568b87d77282196f17516efa621295543aaf2e5b9067b/ossapi-5.0.4.tar.gz",
"platform": null,
"description": "# ossapi ([documentation](https://tybug.github.io/ossapi/)) [![PyPI version](https://badge.fury.io/py/ossapi.svg)](https://pypi.org/project/ossapi/)\n\nossapi is the definitive python wrapper for the osu! api. ossapi has complete coverage of [api v2](https://osu.ppy.sh/docs/index.html) and [api v1](https://github.com/ppy/osu-api/wiki), and provides both sync (`Ossapi`) and async (`OssapiAsync`) versions for api v2.\n\nIf you need support or would like to contribute, feel free to ask in the `#ossapi` channel of the [circleguard discord](https://discord.gg/e84qxkQ).\n\n* [Installation](#installation)\n* [Quickstart](#quickstart)\n* [Async](#async)\n* [Endpoints](#endpoints)\n * [Beatmap Packs](#endpoints-beatmap-packs)\n * [Beatmaps](#endpoints-beatmaps)\n * [Beatmapsets](#endpoints-beatmapsets)\n * [Changelog](#endpoints-changelog)\n * [Chat](#endpoints-chat)\n * [Comments](#endpoints-comments)\n * [Events](#endpoints-events)\n * [Forums](#endpoints-forums)\n * [Friends](#endpoints-friends)\n * [Home](#endpoints-home)\n * [Matches](#endpoints-matches)\n * [Me](#endpoints-me)\n * [News](#endpoints-news)\n * [OAuth](#endpoints-oauth)\n * [Rankings](#endpoints-rankings)\n * [Rooms](#endpoints-rooms)\n * [Scores](#endpoints-scores)\n * [Seasonal Backgrounds](#endpoints-seasonal-backgrounds)\n * [Spotlights](#endpoints-spotlights)\n * [Users](#endpoints-users)\n * [Wiki](#endpoints-wiki)\n* [Other domains](#other-domains)\n* [API v1 Usage](#api-v1-usage)\n\n\n## Installation\n\nTo install:\n\n```bash\npip install ossapi\n# or, if you want to use OssapiAsync:\npip install ossapi[async]\n```\n\nTo upgrade:\n\n```bash\npip install -U ossapi\n```\n\nTo get started, read the docs: https://tybug.github.io/ossapi/.\n\n## Quickstart\n\n[The docs](https://tybug.github.io/ossapi/) have an [in depth quickstart](https://tybug.github.io/ossapi/creating-a-client.html), but here's a super short version for api v2:\n\n```python\nfrom ossapi import Ossapi\n\n# create a new client at https://osu.ppy.sh/home/account/edit#oauth\napi = Ossapi(client_id, client_secret)\n\n# see docs for full list of endpoints\nprint(api.user(\"tybug\").username)\nprint(api.user(12092800, mode=\"osu\").username)\nprint(api.beatmap(221777).id)\n```\n\n## Async\n\nossapi provides an async variant, `OssapiAsync`, which has an identical interface to `Ossapi`:\n\n```python\nimport asyncio\nfrom ossapi import OssapiAsync\n\napi = OssapiAsync(client_id, client_secret)\n\nasync def main():\n await api.user(\"tybug\")\n\nasyncio.run(main())\n```\n\n[Read more about OssapiAsync on the docs.](https://tybug.github.io/ossapi/async.html)\n\n## Other domains\n\nYou can use ossapi to interact with the api of other deployments of the osu website, such as https://dev.ppy.sh.\n\n```python\nfrom ossapi import Ossapi\n\napi = Ossapi(client_id, client_secret, domain=\"dev\")\n# get the dev server pp leaderboards\nranking = api.ranking(\"osu\", \"performance\").ranking\n# pearline06, as of 2023\nprint(ranking[0].user.username)\n```\n\n[Read more about domains on the docs.](https://tybug.github.io/ossapi/domains.html)\n\n## Endpoints\n\nAll endpoints for api v2.\n\n* Beatmap Packs<a name=\"endpoints-beatmap-packs\"></a>\n * [`api.beatmap_pack`](https://tybug.github.io/ossapi/beatmap%20packs.html#ossapi.ossapiv2.Ossapi.beatmap_pack)\n * [`api.beatmap_packs`](https://tybug.github.io/ossapi/beatmap%20packs.html#ossapi.ossapiv2.Ossapi.beatmap_packs)\n* Beatmaps<a name=\"endpoints-beatmaps\"></a>\n * [`api.beatmap`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap)\n * [`api.beatmap_attributes`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap_attributes)\n * [`api.beatmap_scores`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap_scores)\n * [`api.beatmap_user_score`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap_user_score)\n * [`api.beatmap_user_scores`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmap_user_scores)\n * [`api.beatmaps`](https://tybug.github.io/ossapi/beatmaps.html#ossapi.ossapiv2.Ossapi.beatmaps)\n* Beatmapsets<a name=\"endpoints-beatmapsets\"></a>\n * [`api.beatmapset`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset)\n * [`api.beatmapset_discussion_posts`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset_discussion_posts)\n * [`api.beatmapset_discussion_votes`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset_discussion_votes)\n * [`api.beatmapset_discussions`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset_discussions)\n * [`api.beatmapset_events`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.beatmapset_events)\n * [`api.search_beatmapsets`](https://tybug.github.io/ossapi/beatmapsets.html#ossapi.ossapiv2.Ossapi.search_beatmapsets)\n* Changelog<a name=\"endpoints-changelog\"></a>\n * [`api.changelog_build`](https://tybug.github.io/ossapi/changelog.html#ossapi.ossapiv2.Ossapi.changelog_build)\n * [`api.changelog_build_lookup`](https://tybug.github.io/ossapi/changelog.html#ossapi.ossapiv2.Ossapi.changelog_build_lookup)\n * [`api.changelog_listing`](https://tybug.github.io/ossapi/changelog.html#ossapi.ossapiv2.Ossapi.changelog_listing)\n* Chat<a name=\"endpoints-chat\"></a>\n * [`api.send_announcement`](https://tybug.github.io/ossapi/chat.html#ossapi.ossapiv2.Ossapi.send_announcement)\n * [`api.send_pm`](https://tybug.github.io/ossapi/chat.html#ossapi.ossapiv2.Ossapi.send_pm)\n* Comments<a name=\"endpoints-comments\"></a>\n * [`api.comment`](https://tybug.github.io/ossapi/comments.html#ossapi.ossapiv2.Ossapi.comment)\n * [`api.comments`](https://tybug.github.io/ossapi/comments.html#ossapi.ossapiv2.Ossapi.comments)\n* Events<a name=\"endpoints-events\"></a>\n * [`api.events`](https://tybug.github.io/ossapi/events.html#ossapi.ossapiv2.Ossapi.events)\n* Forums<a name=\"endpoints-forums\"></a>\n * [`api.forum_create_topic`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_create_topic)\n * [`api.forum_edit_post`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_edit_post)\n * [`api.forum_edit_topic`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_edit_topic)\n * [`api.forum_reply`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_reply)\n * [`api.forum_topic`](https://tybug.github.io/ossapi/forums.html#ossapi.ossapiv2.Ossapi.forum_topic)\n* Friends<a name=\"endpoints-friends\"></a>\n * [`api.friends`](https://tybug.github.io/ossapi/friends.html#ossapi.ossapiv2.Ossapi.friends)\n* Home<a name=\"endpoints-home\"></a>\n * [`api.search`](https://tybug.github.io/ossapi/home.html#ossapi.ossapiv2.Ossapi.search)\n* Matches<a name=\"endpoints-matches\"></a>\n * [`api.match`](https://tybug.github.io/ossapi/matches.html#ossapi.ossapiv2.Ossapi.match)\n * [`api.matches`](https://tybug.github.io/ossapi/matches.html#ossapi.ossapiv2.Ossapi.matches)\n* Me<a name=\"endpoints-me\"></a>\n * [`api.get_me`](https://tybug.github.io/ossapi/me.html#ossapi.ossapiv2.Ossapi.get_me)\n* News<a name=\"endpoints-news\"></a>\n * [`api.news_listing`](https://tybug.github.io/ossapi/news.html#ossapi.ossapiv2.Ossapi.news_listing)\n * [`api.news_post`](https://tybug.github.io/ossapi/news.html#ossapi.ossapiv2.Ossapi.news_post)\n* OAuth<a name=\"endpoints-oauth\"></a>\n * [`api.revoke_token`](https://tybug.github.io/ossapi/oauth.html#ossapi.ossapiv2.Ossapi.revoke_token)\n* Rankings<a name=\"endpoints-rankings\"></a>\n * [`api.ranking`](https://tybug.github.io/ossapi/rankings.html#ossapi.ossapiv2.Ossapi.ranking)\n* Rooms<a name=\"endpoints-rooms\"></a>\n * [`api.multiplayer_scores`](https://tybug.github.io/ossapi/rooms.html#ossapi.ossapiv2.Ossapi.multiplayer_scores)\n * [`api.room`](https://tybug.github.io/ossapi/rooms.html#ossapi.ossapiv2.Ossapi.room)\n * [`api.room_leaderboard`](https://tybug.github.io/ossapi/rooms.html#ossapi.ossapiv2.Ossapi.room_leaderboard)\n * [`api.rooms`](https://tybug.github.io/ossapi/rooms.html#ossapi.ossapiv2.Ossapi.rooms)\n* Scores<a name=\"endpoints-scores\"></a>\n * [`api.download_score`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.download_score)\n * [`api.download_score_mode`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.download_score_mode)\n * [`api.score`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.score)\n * [`api.score_mode`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.score_mode)\n* Seasonal Backgrounds<a name=\"endpoints-seasonal-backgrounds\"></a>\n * [`api.seasonal_backgrounds`](https://tybug.github.io/ossapi/seasonal%20backgrounds.html#ossapi.ossapiv2.Ossapi.seasonal_backgrounds)\n* Spotlights<a name=\"endpoints-spotlights\"></a>\n * [`api.spotlights`](https://tybug.github.io/ossapi/spotlights.html#ossapi.ossapiv2.Ossapi.spotlights)\n* Users<a name=\"endpoints-users\"></a>\n * [`api.user`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user)\n * [`api.user_beatmaps`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user_beatmaps)\n * [`api.user_kudosu`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user_kudosu)\n * [`api.user_recent_activity`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user_recent_activity)\n * [`api.user_scores`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.user_scores)\n * [`api.users`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.users)\n * [`api.users_lookup`](https://tybug.github.io/ossapi/users.html#ossapi.ossapiv2.Ossapi.users_lookup)\n* Wiki<a name=\"endpoints-wiki\"></a>\n * [`api.wiki_page`](https://tybug.github.io/ossapi/wiki.html#ossapi.ossapiv2.Ossapi.wiki_page)\n\n## API v1 Usage\n\nYou can get your api v1 key at <https://osu.ppy.sh/home/account/edit#legacy-api>.\n\nBasic usage:\n\n```python\nfrom ossapi import OssapiV1\n\napi = OssapiV1(\"key\")\nprint(api.get_beatmaps(user=53378)[0].submit_date)\nprint(api.get_match(69063884).games[0].game_id)\nprint(api.get_scores(221777)[0].username)\nprint(len(api.get_replay(beatmap_id=221777, user=6974470)))\nprint(api.get_user(12092800).playcount)\nprint(api.get_user_best(12092800)[0].pp)\nprint(api.get_user_recent(12092800)[0].beatmap_id)\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "Complete python wrapper for osu! api v2 and v1.",
"version": "5.0.4",
"project_urls": {
"Homepage": "https://github.com/tybug/ossapi"
},
"split_keywords": [
"osu!",
" wrapper",
" api",
" python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d06782e32b65d3aeb186fdd6a7beb7ac23f8ec9b8917ad1234d1d12116d7a2f9",
"md5": "ad30bd66b73ff0666e57c7d70e2d742d",
"sha256": "0d1e66867288a217eac4bdb8d1a1fac563ccb5f1f25bae94e20e2f0fcfcddeec"
},
"downloads": -1,
"filename": "ossapi-5.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ad30bd66b73ff0666e57c7d70e2d742d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 93584,
"upload_time": "2024-12-08T19:21:49",
"upload_time_iso_8601": "2024-12-08T19:21:49.670833Z",
"url": "https://files.pythonhosted.org/packages/d0/67/82e32b65d3aeb186fdd6a7beb7ac23f8ec9b8917ad1234d1d12116d7a2f9/ossapi-5.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bfd842135e0bf8cd4d1568b87d77282196f17516efa621295543aaf2e5b9067b",
"md5": "6a0af64ece856982d1111559dbbcfb2b",
"sha256": "c0d21e240ed3be4a7ab04fdb6c24664e7da8c06d2c8906c583808aec815ce58c"
},
"downloads": -1,
"filename": "ossapi-5.0.4.tar.gz",
"has_sig": false,
"md5_digest": "6a0af64ece856982d1111559dbbcfb2b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 121574,
"upload_time": "2024-12-08T19:21:51",
"upload_time_iso_8601": "2024-12-08T19:21:51.388826Z",
"url": "https://files.pythonhosted.org/packages/bf/d8/42135e0bf8cd4d1568b87d77282196f17516efa621295543aaf2e5b9067b/ossapi-5.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-08 19:21:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tybug",
"github_project": "ossapi",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "ossapi"
}