# `gd.py`
[![License][License Badge]][License]
[![Version][Version Badge]][Package]
[![Downloads][Downloads Badge]][Package]
[![Discord][Discord Badge]][Discord]
[![Documentation][Documentation Badge]][Documentation]
[![Check][Check Badge]][Actions]
[![Test][Test Badge]][Actions]
[![Coverage][Coverage Badge]][Coverage]
> *An API wrapper for Geometry Dash written in Python.*
## Installing
**Python 3.7 or above is required.**
### pip
Installing the library with `pip` is quite simple:
```console
$ pip install gd.py
```
Alternatively, the library can be installed from source:
```console
$ git clone https://github.com/nekitdev/gd.py.git
$ cd gd.py
$ python -m pip install .
```
### poetry
You can add `gd.py` as a dependency with the following command:
```console
$ poetry add gd.py
```
Or by directly specifying it in the configuration like so:
```toml
[tool.poetry.dependencies]
"gd.py" = "^1.0.1"
```
Alternatively, you can add it directly from the source:
```toml
[tool.poetry.dependencies."gd.py"]
git = "https://github.com/nekitdev/gd.py.git"
```
## Examples
### Fetching
```python
# file.py
import asyncio
import gd
SONG_ID = 1081309
SONG = "{} by {} (ID: {}, size: {} MB)"
async def main() -> None:
client = gd.Client()
song = await client.get_song(SONG_ID)
print(SONG.format(song.name, song.artist.name, song.id, song.size))
asyncio.run(main())
```
```console
$ python file.py
PANDA EYES - BROKEN by PandaEyesOfficial (ID: 1081309, size: 9.71 MB)
```
### Listening
```python
import gd
client = gd.Client()
DAILY = "new daily! {daily.name} by {daily.creator.name} (ID: {daily.id})"
@client.event
async def on_daily(daily: gd.Level) -> None:
print(DAILY.format(daily=daily))
client.listen_for_daily()
client.create_controller().run()
```
## Documentation
You can find the documentation [here][Documentation].
## Support
If you need support with the library, you can send an [email][Email]
or refer to the official [Discord server][Discord].
## Changelog
You can find the changelog [here][Changelog].
## Security Policy
You can find the Security Policy of `gd.py` [here][Security].
## Contributing
If you are interested in contributing to `gd.py`, make sure to take a look at the
[Contributing Guide][Contributing Guide], as well as the [Code of Conduct][Code of Conduct].
## License
`gd.py` is licensed under the MIT License terms. See [License][License] for details.
[Email]: mailto:support@nekit.dev
[Discord]: https://nekit.dev/discord
[Actions]: https://github.com/nekitdev/gd.py/actions
[Changelog]: https://github.com/nekitdev/gd.py/blob/main/CHANGELOG.md
[Code of Conduct]: https://github.com/nekitdev/gd.py/blob/main/CODE_OF_CONDUCT.md
[Contributing Guide]: https://github.com/nekitdev/gd.py/blob/main/CONTRIBUTING.md
[Security]: https://github.com/nekitdev/gd.py/blob/main/SECURITY.md
[License]: https://github.com/nekitdev/gd.py/blob/main/LICENSE
[Package]: https://pypi.org/project/gd.py
[Coverage]: https://codecov.io/gh/nekitdev/gd.py
[Documentation]: https://nekitdev.github.io/gd.py
[Discord Badge]: https://img.shields.io/badge/chat-discord-5865f2
[License Badge]: https://img.shields.io/pypi/l/gd.py
[Version Badge]: https://img.shields.io/pypi/v/gd.py
[Downloads Badge]: https://img.shields.io/pypi/dm/gd.py
[Documentation Badge]: https://github.com/nekitdev/gd.py/workflows/docs/badge.svg
[Check Badge]: https://github.com/nekitdev/gd.py/workflows/check/badge.svg
[Test Badge]: https://github.com/nekitdev/gd.py/workflows/test/badge.svg
[Coverage Badge]: https://codecov.io/gh/nekitdev/gd.py/branch/main/graph/badge.svg
Raw data
{
"_id": null,
"home_page": "https://github.com/nekitdev/gd.py",
"name": "gd.py",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "python,gd",
"author": "nekitdev",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/fa/34/c2050a8517973670b080e7fee10880c01d670c81cc4e3be16c0d817a2118/gd_py-1.0.1.tar.gz",
"platform": null,
"description": "# `gd.py`\n\n[![License][License Badge]][License]\n[![Version][Version Badge]][Package]\n[![Downloads][Downloads Badge]][Package]\n[![Discord][Discord Badge]][Discord]\n\n[![Documentation][Documentation Badge]][Documentation]\n[![Check][Check Badge]][Actions]\n[![Test][Test Badge]][Actions]\n[![Coverage][Coverage Badge]][Coverage]\n\n> *An API wrapper for Geometry Dash written in Python.*\n\n## Installing\n\n**Python 3.7 or above is required.**\n\n### pip\n\nInstalling the library with `pip` is quite simple:\n\n```console\n$ pip install gd.py\n```\n\nAlternatively, the library can be installed from source:\n\n```console\n$ git clone https://github.com/nekitdev/gd.py.git\n$ cd gd.py\n$ python -m pip install .\n```\n\n### poetry\n\nYou can add `gd.py` as a dependency with the following command:\n\n```console\n$ poetry add gd.py\n```\n\nOr by directly specifying it in the configuration like so:\n\n```toml\n[tool.poetry.dependencies]\n\"gd.py\" = \"^1.0.1\"\n```\n\nAlternatively, you can add it directly from the source:\n\n```toml\n[tool.poetry.dependencies.\"gd.py\"]\ngit = \"https://github.com/nekitdev/gd.py.git\"\n```\n\n## Examples\n\n### Fetching\n\n```python\n# file.py\n\nimport asyncio\n\nimport gd\n\nSONG_ID = 1081309\nSONG = \"{} by {} (ID: {}, size: {} MB)\"\n\n\nasync def main() -> None:\n client = gd.Client()\n\n song = await client.get_song(SONG_ID)\n\n print(SONG.format(song.name, song.artist.name, song.id, song.size))\n\n\nasyncio.run(main())\n```\n\n```console\n$ python file.py\nPANDA EYES - BROKEN by PandaEyesOfficial (ID: 1081309, size: 9.71 MB)\n```\n\n### Listening\n\n```python\nimport gd\n\nclient = gd.Client()\n\nDAILY = \"new daily! {daily.name} by {daily.creator.name} (ID: {daily.id})\"\n\n\n@client.event\nasync def on_daily(daily: gd.Level) -> None:\n print(DAILY.format(daily=daily))\n\n\nclient.listen_for_daily()\n\nclient.create_controller().run()\n```\n\n## Documentation\n\nYou can find the documentation [here][Documentation].\n\n## Support\n\nIf you need support with the library, you can send an [email][Email]\nor refer to the official [Discord server][Discord].\n\n## Changelog\n\nYou can find the changelog [here][Changelog].\n\n## Security Policy\n\nYou can find the Security Policy of `gd.py` [here][Security].\n\n## Contributing\n\nIf you are interested in contributing to `gd.py`, make sure to take a look at the\n[Contributing Guide][Contributing Guide], as well as the [Code of Conduct][Code of Conduct].\n\n## License\n\n`gd.py` is licensed under the MIT License terms. See [License][License] for details.\n\n[Email]: mailto:support@nekit.dev\n\n[Discord]: https://nekit.dev/discord\n\n[Actions]: https://github.com/nekitdev/gd.py/actions\n\n[Changelog]: https://github.com/nekitdev/gd.py/blob/main/CHANGELOG.md\n[Code of Conduct]: https://github.com/nekitdev/gd.py/blob/main/CODE_OF_CONDUCT.md\n[Contributing Guide]: https://github.com/nekitdev/gd.py/blob/main/CONTRIBUTING.md\n[Security]: https://github.com/nekitdev/gd.py/blob/main/SECURITY.md\n\n[License]: https://github.com/nekitdev/gd.py/blob/main/LICENSE\n\n[Package]: https://pypi.org/project/gd.py\n[Coverage]: https://codecov.io/gh/nekitdev/gd.py\n[Documentation]: https://nekitdev.github.io/gd.py\n\n[Discord Badge]: https://img.shields.io/badge/chat-discord-5865f2\n[License Badge]: https://img.shields.io/pypi/l/gd.py\n[Version Badge]: https://img.shields.io/pypi/v/gd.py\n[Downloads Badge]: https://img.shields.io/pypi/dm/gd.py\n\n[Documentation Badge]: https://github.com/nekitdev/gd.py/workflows/docs/badge.svg\n[Check Badge]: https://github.com/nekitdev/gd.py/workflows/check/badge.svg\n[Test Badge]: https://github.com/nekitdev/gd.py/workflows/test/badge.svg\n[Coverage Badge]: https://codecov.io/gh/nekitdev/gd.py/branch/main/graph/badge.svg\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "An API wrapper for Geometry Dash written in Python.",
"version": "1.0.1",
"project_urls": {
"Discord": "https://nekit.dev/discord",
"Documentation": "https://nekitdev.github.io/gd.py",
"Funding": "https://patreon.com/nekitdev",
"Homepage": "https://github.com/nekitdev/gd.py",
"Issues": "https://github.com/nekitdev/gd.py/issues",
"Repository": "https://github.com/nekitdev/gd.py"
},
"split_keywords": [
"python",
"gd"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "54ba078fd65b94dd4333294625a4381c56c99b66ade34cc4f59496149ac43474",
"md5": "3ea084b69563194027afb912117dc781",
"sha256": "f59503006c1c4381847d0da94a87eebd82fa2447680d00fe79d537bae2a32da8"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp310-cp310-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "3ea084b69563194027afb912117dc781",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 5696556,
"upload_time": "2023-08-29T17:47:02",
"upload_time_iso_8601": "2023-08-29T17:47:02.605643Z",
"url": "https://files.pythonhosted.org/packages/54/ba/078fd65b94dd4333294625a4381c56c99b66ade34cc4f59496149ac43474/gd_py-1.0.1-cp310-cp310-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b4777efeed476135befbce804d1066ebba45936de22080e98172effe7f998af5",
"md5": "0feb29c10416b09664b0d80b2b955cf2",
"sha256": "7483bc7b9104f46e0c72c2ee6d3bf8a6a13a870364809c053d359f01c0b4eabf"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp310-cp310-manylinux_2_35_x86_64.whl",
"has_sig": false,
"md5_digest": "0feb29c10416b09664b0d80b2b955cf2",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 6540882,
"upload_time": "2023-08-29T17:46:36",
"upload_time_iso_8601": "2023-08-29T17:46:36.364079Z",
"url": "https://files.pythonhosted.org/packages/b4/77/7efeed476135befbce804d1066ebba45936de22080e98172effe7f998af5/gd_py-1.0.1-cp310-cp310-manylinux_2_35_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7b478a1015297fd9a4d2368a25d4987742faab4e41fedc8d2f9df3d2a421ea7e",
"md5": "045d87bfcf174391720d846a1b7158ee",
"sha256": "a707c0c62ba9f95a0205ad01c3763110bc2170f46813e2bb6ea1579860d2e871"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "045d87bfcf174391720d846a1b7158ee",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 5571337,
"upload_time": "2023-08-29T17:50:06",
"upload_time_iso_8601": "2023-08-29T17:50:06.496145Z",
"url": "https://files.pythonhosted.org/packages/7b/47/8a1015297fd9a4d2368a25d4987742faab4e41fedc8d2f9df3d2a421ea7e/gd_py-1.0.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "733f8142b0090cc03aed3cb73b1a8e84cf99664c2aec2fc875ce73a31a2cb825",
"md5": "fca6fbee111d1e06d26d60249721a585",
"sha256": "93def586de2ad0d637265a7e868c72e1efb07626d7d328e25638c6449cec4d3e"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp311-cp311-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "fca6fbee111d1e06d26d60249721a585",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 5696558,
"upload_time": "2023-08-29T17:47:03",
"upload_time_iso_8601": "2023-08-29T17:47:03.749926Z",
"url": "https://files.pythonhosted.org/packages/73/3f/8142b0090cc03aed3cb73b1a8e84cf99664c2aec2fc875ce73a31a2cb825/gd_py-1.0.1-cp311-cp311-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7e78b5aa836d214e20fbea74c5c155e349a8d4d47d5e29c506a8c68ed0273195",
"md5": "0245031cfa353c2cd6ba4c9a7d38c444",
"sha256": "73614cb6a841398d80f73821ea0cf666ea33668e2233b3dbe8afe0c8bd161a2d"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp311-cp311-manylinux_2_35_x86_64.whl",
"has_sig": false,
"md5_digest": "0245031cfa353c2cd6ba4c9a7d38c444",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 6540928,
"upload_time": "2023-08-29T17:46:29",
"upload_time_iso_8601": "2023-08-29T17:46:29.843464Z",
"url": "https://files.pythonhosted.org/packages/7e/78/b5aa836d214e20fbea74c5c155e349a8d4d47d5e29c506a8c68ed0273195/gd_py-1.0.1-cp311-cp311-manylinux_2_35_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e014db8080ef5cc1d07c0e245762a464ba67220a6a971d6ce4f1677978363753",
"md5": "6278748768346290e9a1d1190bb31a18",
"sha256": "df7791679efa02c242fc3814ab844bcf309a7cee82db5eef2e00b1a2e296f8d3"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "6278748768346290e9a1d1190bb31a18",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 5571340,
"upload_time": "2023-08-29T17:49:01",
"upload_time_iso_8601": "2023-08-29T17:49:01.563175Z",
"url": "https://files.pythonhosted.org/packages/e0/14/db8080ef5cc1d07c0e245762a464ba67220a6a971d6ce4f1677978363753/gd_py-1.0.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ee6380ba2934be27044bd101d7dcc4030a31dc56e7d5c438e0ff801f13f9fb99",
"md5": "44a7d242fbc8a1a119027624a563e42e",
"sha256": "4b882cbb1aa5b428bdf0309c19f9247bf77a3bee9ca4bd58f4b6c966c2f1fdf0"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp38-cp38-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "44a7d242fbc8a1a119027624a563e42e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 5696894,
"upload_time": "2023-08-29T17:47:58",
"upload_time_iso_8601": "2023-08-29T17:47:58.794862Z",
"url": "https://files.pythonhosted.org/packages/ee/63/80ba2934be27044bd101d7dcc4030a31dc56e7d5c438e0ff801f13f9fb99/gd_py-1.0.1-cp38-cp38-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d476138c7a831d532746bbf9a52fd4762a6a7e4c45437b72cde033c78b212ba7",
"md5": "6cfd11ae777f699e965c8a941bd5980e",
"sha256": "e782dd4596434f185c6b97043d85d2c2f1de4f28790de78a39ffc68fc80cdb1a"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp38-cp38-manylinux_2_35_x86_64.whl",
"has_sig": false,
"md5_digest": "6cfd11ae777f699e965c8a941bd5980e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 6541282,
"upload_time": "2023-08-29T17:46:10",
"upload_time_iso_8601": "2023-08-29T17:46:10.774344Z",
"url": "https://files.pythonhosted.org/packages/d4/76/138c7a831d532746bbf9a52fd4762a6a7e4c45437b72cde033c78b212ba7/gd_py-1.0.1-cp38-cp38-manylinux_2_35_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "038a1081c8d5820315c1fba1de9fedc42e9a2b3e5d26da237c2520f941903b1f",
"md5": "67c7ba74546e7bba672b41fe1f0ebfdb",
"sha256": "500e4747f1262eb61d4545728bddd857b1561fcb83f668de8c2318a4cde38bcc"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "67c7ba74546e7bba672b41fe1f0ebfdb",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 5571048,
"upload_time": "2023-08-29T17:48:46",
"upload_time_iso_8601": "2023-08-29T17:48:46.929571Z",
"url": "https://files.pythonhosted.org/packages/03/8a/1081c8d5820315c1fba1de9fedc42e9a2b3e5d26da237c2520f941903b1f/gd_py-1.0.1-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6b786b3fb8b6d938105ac9c9e45cbbe0967b73fc2fd769f0b65d8f7f247e1b1a",
"md5": "435f2f16a68bf9e1b06f956bd3e8555f",
"sha256": "4f4a39716816bb3c58cf57dfb76950d3367a08f483cecaeb9c6c5c3f581b9b89"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp39-cp39-macosx_12_0_x86_64.whl",
"has_sig": false,
"md5_digest": "435f2f16a68bf9e1b06f956bd3e8555f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 5697128,
"upload_time": "2023-08-29T17:49:20",
"upload_time_iso_8601": "2023-08-29T17:49:20.990770Z",
"url": "https://files.pythonhosted.org/packages/6b/78/6b3fb8b6d938105ac9c9e45cbbe0967b73fc2fd769f0b65d8f7f247e1b1a/gd_py-1.0.1-cp39-cp39-macosx_12_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "38ff1af4fece86c17bc7d5051791222864845645e3f5fa1abc840ac461b275a6",
"md5": "4fa2b3181dc64f468b84b22532d7d309",
"sha256": "89fd54962fe3e05927ca74fa7bc80d5fca3b5bc3f3b38506fa2155e7135ffca8"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp39-cp39-manylinux_2_35_x86_64.whl",
"has_sig": false,
"md5_digest": "4fa2b3181dc64f468b84b22532d7d309",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 6541691,
"upload_time": "2023-08-29T17:46:11",
"upload_time_iso_8601": "2023-08-29T17:46:11.433558Z",
"url": "https://files.pythonhosted.org/packages/38/ff/1af4fece86c17bc7d5051791222864845645e3f5fa1abc840ac461b275a6/gd_py-1.0.1-cp39-cp39-manylinux_2_35_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2813e7f84c9fee07b390f393d7c077fb2e425dc0d22f83a028503e8d80ec542e",
"md5": "3dfa138f9755aaf64ab208709d2b0d0e",
"sha256": "1b723c99dc28d64171f0023b288f249868bfadc455af797f910174ec46c42ca7"
},
"downloads": -1,
"filename": "gd_py-1.0.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "3dfa138f9755aaf64ab208709d2b0d0e",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 5571538,
"upload_time": "2023-08-29T17:49:09",
"upload_time_iso_8601": "2023-08-29T17:49:09.634076Z",
"url": "https://files.pythonhosted.org/packages/28/13/e7f84c9fee07b390f393d7c077fb2e425dc0d22f83a028503e8d80ec542e/gd_py-1.0.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fa34c2050a8517973670b080e7fee10880c01d670c81cc4e3be16c0d817a2118",
"md5": "a0ad0404ebf7f45d92f5582b99f535d5",
"sha256": "a317b06e945458770afe470b8a1f9ff6c636aebbbbb5755b9c4f9d4ec22ef2e2"
},
"downloads": -1,
"filename": "gd_py-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "a0ad0404ebf7f45d92f5582b99f535d5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 5392526,
"upload_time": "2023-08-29T17:46:13",
"upload_time_iso_8601": "2023-08-29T17:46:13.526962Z",
"url": "https://files.pythonhosted.org/packages/fa/34/c2050a8517973670b080e7fee10880c01d670c81cc4e3be16c0d817a2118/gd_py-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-29 17:46:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nekitdev",
"github_project": "gd.py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "gd.py"
}