Name | ossapi JSON |
Version | 3.4.4 JSON |
download | |
home_page | |
Summary | Complete python wrapper for osu! api v2 and v1. |
upload_time | 2024-02-09 23:17:12 |
maintainer | |
docs_url | None |
author | |
requires_python | |
license | |
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) * [Lazer](#lazer) * [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) * [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) ## Lazer You can retrieve lazer-specific data (scores, leaderboards, etc) with ossapi: ```python from ossapi import Ossapi api_lazer = Ossapi(client_id, client_secret, domain="lazer") # best score on the lazer server (lazer + osu scores combined) scores = api_lazer.user_scores(12092800, "best") print(scores[0].pp) ``` [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.score`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.score) * 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) * 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) ```
{ "_id": null, "home_page": "", "name": "ossapi", "maintainer": "", "docs_url": null, "requires_python": "", "maintainer_email": "", "keywords": "osu!,wrapper,api,python", "author": "", "author_email": "Liam DeVoe <orionldevoe@gmail.com>", "download_url": "https://files.pythonhosted.org/packages/31/00/ec4f8cf975dbce07d95dd1ceec2d40b2833740044daab103b2d163798b70/ossapi-3.4.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* [Lazer](#lazer)\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* [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## Lazer\n\nYou can retrieve lazer-specific data (scores, leaderboards, etc) with ossapi:\n\n```python\nfrom ossapi import Ossapi\n\napi_lazer = Ossapi(client_id, client_secret, domain=\"lazer\")\n\n# best score on the lazer server (lazer + osu scores combined)\nscores = api_lazer.user_scores(12092800, \"best\")\nprint(scores[0].pp)\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.score`](https://tybug.github.io/ossapi/scores.html#ossapi.ossapiv2.Ossapi.score)\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* 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": "", "summary": "Complete python wrapper for osu! api v2 and v1.", "version": "3.4.4", "project_urls": { "Homepage": "https://github.com/tybug/ossapi" }, "split_keywords": [ "osu!", "wrapper", "api", "python" ], "urls": [ { "comment_text": "", "digests": { "blake2b_256": "b1e7f5dec08719d75307860cdab45facc150e8b0cd55e5be82841365dba0fdc7", "md5": "bc9dcfc3d5a42043c0bb6491007e2eae", "sha256": "1f7dede97264dcba71f2763faf9e7a8a6263f2293d53a9b568aecb6e26726f71" }, "downloads": -1, "filename": "ossapi-3.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "bc9dcfc3d5a42043c0bb6491007e2eae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 92099, "upload_time": "2024-02-09T23:17:10", "upload_time_iso_8601": "2024-02-09T23:17:10.807588Z", "url": "https://files.pythonhosted.org/packages/b1/e7/f5dec08719d75307860cdab45facc150e8b0cd55e5be82841365dba0fdc7/ossapi-3.4.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "3100ec4f8cf975dbce07d95dd1ceec2d40b2833740044daab103b2d163798b70", "md5": "52112853fe3a319f7ffef24f2bf4c92e", "sha256": "7b54997154b2e8483e7ee265b10e556a9265809956c491b744d6a6b3503fc89e" }, "downloads": -1, "filename": "ossapi-3.4.4.tar.gz", "has_sig": false, "md5_digest": "52112853fe3a319f7ffef24f2bf4c92e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 96267, "upload_time": "2024-02-09T23:17:12", "upload_time_iso_8601": "2024-02-09T23:17:12.830911Z", "url": "https://files.pythonhosted.org/packages/31/00/ec4f8cf975dbce07d95dd1ceec2d40b2833740044daab103b2d163798b70/ossapi-3.4.4.tar.gz", "yanked": false, "yanked_reason": null } ], "upload_time": "2024-02-09 23:17:12", "github": true, "gitlab": false, "bitbucket": false, "codeberg": false, "github_user": "tybug", "github_project": "ossapi", "travis_ci": false, "coveralls": false, "github_actions": false, "lcname": "ossapi" }