An API wrapper for Geometry Dash written in Python.
Python 3.8 or above is required.
Installing the library with pip
is quite simple:
$ pip install gd.py
Alternatively, the library can be installed from source:
$ git clone https://github.com/nekitdev/gd.py.git
$ cd gd.py
$ python -m pip install .
You can add gd.py
as a dependency with the following command:
$ poetry add gd.py
Or by directly specifying it in the configuration like so:
[tool.poetry.dependencies]
"gd.py" = "^2.0.0-dev.0"
Alternatively, you can add it directly from the source:
[tool.poetry.dependencies."gd.py"]
git = "https://github.com/nekitdev/gd.py.git"
# file.py
from entrypoint import entrypoint
import gd
SONG_ID = 1081309
SONG_INFO = "`{song.name}` by `{song.artist.name}` (ID: `{song.id}`, size: `{song.size} MB`)"
song_info = SONG_INFO.format
async def async_main() -> None:
song = await client.get_song(SONG_ID)
print(song_info(song=song))
@entrypoint(__name__)
def main() -> None:
client.run(async_main())
$ python file.py
`PANDA EYES - BROKEN` by `PandaEyesOfficial` (ID: `1081309`, size: `9.71 MB`)
gd.py
is now using hashed passwords for safety reasons.
gd.hash_password
is provided for convenience.
Moreover, client.login
returns an awaitable asynchronous context
manager, which can be utilized to factor out the blocks that require logging in.
In the snippet below we define the credentials and hash the password.
import gd
client = gd.Client()
name = "name"
password = "********"
hashed_password = gd.hash_password(password)
Regular login:
await client.login(name, hashed_password)
... # the client is now logged in
Advanced version:
async with client.login(name, hashed_password):
... # the client is logged in here
... # but not outside of the `async with` block!
from entrypoint import entrypoint
import gd
client = gd.Client()
DAILY_INFO = "new daily! `{daily.name}` by `{daily.creator.name}` (ID: `{daily.id}`)"
daily_info = DAILY_INFO.format
@client.event
async def on_daily(daily: gd.Level) -> None:
print(daily_info(daily=daily))
client.listen_for_daily()
@entrypoint(__name__)
def main() -> None:
client.create_controller().run()
You can find the documentation here.
If you need support with the library, you can send an email or refer to the official Discord server.
You can find the changelog here.
You can find the Security Policy of gd.py
here.
If you are interested in contributing to gd.py
, make sure to take a look at the
Contributing Guide, as well as the Code of Conduct.
gd.py
is licensed under the MIT License terms. See License for details.