Encode files into Geometry Dash levels
Project description
GD Storage
What is this?
GD Storage lets you hide any file inside a Geometry Dash level by encoding the file's binary data into level object properties. The encoded level can be:
- Saved to your local GD save file
- Uploaded to GD servers and shared via level ID
- Downloaded and decoded back to the original file
Features
- Upload to GD Servers - Store files on RobTop's servers, get a level ID to share
- Fetch from GD Servers - Download and decode files using just a level ID
- Local Save Support - Inject encoded levels directly into your GD save file
- Cross-Platform - Works on Windows, macOS, and Linux (via Proton)
- Configurable - Custom GD save paths for non-standard installations
- Secure - Path traversal protection, input validation, overwrite confirmation
Installation
Requires Python 3.10+
pip install .
Or install in development mode:
pip install -e .
Usage
# Upload a file to GD servers
gd-storage --upload photo.png
# Download and decode from GD servers
gd-storage --fetch 123456789
# Encode and inject into local GD save
gd-storage --encode document.pdf
# Decode from local GD save
gd-storage --decode "LevelName"
# Configure GD save path (for non-standard installations)
gd-storage --config
How It Works
Files are encoded using a base-9999 group encoding method:
- Compression - The file is gzip compressed with the filename prepended
- Chunking - Binary data is split into 8-byte chunks
- Base Conversion - Each chunk is converted to 5 base-9999 numbers (1-9999)
- Object Encoding - Numbers are stored in GD object group properties (property 57)
- Level String - Objects are serialized into a valid GD level string
Why Base-9999?
GD supports up to 9999 groups per object. By treating group numbers as digits in a base-9999 number system, we can efficiently pack 8 bytes into just 5 group values, achieving ~62.5% space efficiency.
Configuration
On first run, GD Storage auto-detects your save path:
- Windows:
%LOCALAPPDATA%\GeometryDash - macOS:
~/Library/Application Support/GeometryDash
For custom paths (Linux/Proton, custom installs), run:
gd-storage --config
Config is saved to ~/.config/gd-storage/config.json
Platform Support
| Platform | Local Save | Upload/Fetch |
|---|---|---|
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes* | Yes |
*Linux requires configuring the Proton GD save path manually
Dependencies
- dashlib - GD server API
- pycryptodomex - AES encryption for macOS saves
License
GD Storage is licensed under the MIT License
Disclaimer
This project is for educational purposes. Use responsibly and don't abuse GD's servers.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gd_storage-1.0.0.tar.gz.
File metadata
- Download URL: gd_storage-1.0.0.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
582460edb941555ef8b65ccabeee87b2c6b5d27bcbbc5b0f50904f369cdeacc7
|
|
| MD5 |
9884c6e66101b5b7a8681fe9df01b494
|
|
| BLAKE2b-256 |
ab6bab419baeba012a5bc413d99cfcebb1793b871e8acb7806a61df9522cf65c
|
File details
Details for the file gd_storage-1.0.0-py3-none-any.whl.
File metadata
- Download URL: gd_storage-1.0.0-py3-none-any.whl
- Upload date:
- Size: 20.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e2b535c4a702576e1360f975651a4ce55dc7240b9645787630920d8e833c9ee
|
|
| MD5 |
8400c50c0aa226e95c461e8c9cb51a25
|
|
| BLAKE2b-256 |
f0cd441d6949aebd1e7763fd08511dfb5d0327dd1c06b7473d8e897680ffc6f1
|