Created
December 4, 2025 06:21
-
-
Save EvercyanRBX/299dfce5c772b4b2b2dccfc399b9e4cd to your computer and use it in GitHub Desktop.
Used to clean up many of my old DataStores from INFINITY RPG that saved each player's data under a unique DataStore years ago
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Deletes all number-only (including negative) data store names for clean-up, but can be adapted for general mass data store deletion. | |
| # Even though it should work OK, you should still double check your important data stores (e.g. active user data) before data stores are deleted in 30 days to make sure it didn't queue them for deletion. | |
| import requests, os, pprint, re, time | |
| universe_id = 142847746 | |
| next_page_token = "" | |
| cookie = os.environ["EVCYROBLOSECURITY"] | |
| session = requests.session() | |
| session.cookies.set(".ROBLOSECURITY", cookie) | |
| # Criteria for whether or not it should delete the data store (based off of its name). | |
| def should_delete_yn(data_store: str): | |
| match = re.search("-?(.+)", data_store) | |
| isRedundantKey = match.group(1).isdigit() | |
| print(isRedundantKey, data_store) | |
| return isRedundantKey | |
| def list_data_stores(page_token: str): | |
| response = session.get( | |
| f"https://apis.roblox.com/user/cloud/v2/universes/{universe_id}/data-stores?maxPageSize=100&pageToken={page_token}&filter=&showDeleted=false" | |
| ) | |
| print(f"list_data_stores: {response.status_code} ({response.reason})") | |
| time.sleep(0.8) | |
| return response | |
| def delete_data_store(data_store: str): | |
| response = session.delete( | |
| f"https://apis.roblox.com/user/cloud/v2/universes/{universe_id}/data-stores/{data_store}" | |
| ) | |
| print(f"delete_data_store: {response.status_code} ({response.reason})") | |
| time.sleep(0.2) | |
| if response.status_code == 403: | |
| print('delete_data_store: Token invalid. Retrying.') | |
| session.headers["x-csrf-token"] = response.headers["x-csrf-token"] | |
| delete_data_store(data_store) | |
| while True: | |
| response = list_data_stores(next_page_token) | |
| json = response.json() | |
| if "dataStores" in json: | |
| for value in json["dataStores"]: | |
| data_store = value["id"] | |
| if should_delete_yn(data_store): | |
| delete_data_store(data_store) | |
| if "nextPageToken" in json: | |
| next_page_token = json["nextPageToken"] | |
| continue | |
| break |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment