dexguru-sdk.py
dexguru-sdk.py allows you to access dex.guru public methods from your async python scripts.
Installation
To install latest version, just run:
pip install dexguru-sdk
Getting Started
Take API key of your project from developers.dex.guru
import asyncio
from dexguru_sdk import DexGuru
YOUR_API_KEY = 'abc123'
sdk = DexGuru(api_key=YOUR_API_KEY)
async def main():
response = await sdk.get_chains()
return response
if __name__ == '__main__':
asyncio.run(main())
Response
SDK response is Pydantic's models, so you can do whatever Pydantic allows with them.
You can find all models at dexguru_sdk.models
:
class ChainModel(BaseModel):
chain_id: int
name: str
description: str
class ChainsListModel(BaseModel):
total: int
data: List[ChainModel]
from typing import List
from dexguru_sdk.models import ChainModel, ChainsListModel
response: ChainsListModel
total: int = response.total
data: List[ChainModel] = response.data
if you need a simple dict from response, Pydantic can convert it:
response = response.dict()
Usage Examples
Ok, we want to see how your favorite wallets are trading:
import asyncio
from dexguru_sdk import DexGuru
sdk = DexGuru(api_key='my_sweet_key_from_sweet_project')
wallets = ['bot_wallet_address1', 'mistake_wallet_address2', 'heavy_wallet_address3']
async def main():
wallets_info: WalletsListModel = await sdk.get_wallets_info(
chain_id=1,
wallet_addresses=wallets,
)
return wallets_info
if __name__ == '__main__':
asyncio.run(main())
wallets_info.total == 2
because we have mistake in address2 and it was skipped
Print wallets_info
object:
total=2 data=[
WalletModel(
wallet_address='bot_wallet_address1',
volume_1m_usd=5000.123456,
txns_1m=999999,
category='bot',
timestamp=1621635936 # last tx timestamp
),
WalletModel(
wallet_address='whale_wallet_address3',
volume_1m_usd=107382.62431031652,
txns_1m=8699,
category='heavy',
timestamp=1621635936 # last tx timestamp
)]
Wow, they are good traders! Let's see what transactions they made:
wallets = ['bot_wallet_address1', 'mistake_wallet_address2', 'heavy_wallet_address3']
async def get_txs_from_list_of_wallets(wallets: List[str]) -> List:
result = []
for wallet in wallets:
txs = await sdk.get_wallet_transactions(chain_id=1, wallet_address=wallet)
result.append(txs)
return result
if __name__ == '__main__':
result = asyncio.run(get_txs_from_list_of_wallets(wallets))