solana subscription works!!!

This commit is contained in:
Dobromir Popov 2024-10-02 17:21:38 +03:00
parent 02c1ee7ed4
commit 96601194e0

View File

@ -18,8 +18,9 @@ import base64
import os import os
from dotenv import load_dotenv from dotenv import load_dotenv
load_dotenv()
load_dotenv()
app = Flask(__name__) app = Flask(__name__)
# Use the production Solana RPC endpoint # Use the production Solana RPC endpoint
@ -84,6 +85,7 @@ async def get_wallet_balances(wallet_address):
encoding="jsonParsed" # Ensure encoding is set to jsonParsed encoding="jsonParsed" # Ensure encoding is set to jsonParsed
) )
try:
# Get all token accounts for the wallet # Get all token accounts for the wallet
response = await solana_client.get_token_accounts_by_owner( response = await solana_client.get_token_accounts_by_owner(
Pubkey.from_string(wallet_address), Pubkey.from_string(wallet_address),
@ -93,17 +95,23 @@ async def get_wallet_balances(wallet_address):
if response.value: if response.value:
for account in response.value: for account in response.value:
if 'parsed' in account.account.data and 'info' in account.account.data.parsed:
mint = account.account.data.parsed.info.mint mint = account.account.data.parsed.info.mint
balance_response = await solana_client.get_token_account_balance(account.pubkey) balance_response = await solana_client.get_token_account_balance(account.pubkey)
if balance_response.value: if balance_response.value:
amount = float(balance_response.value.uiAmount) amount = float(balance_response.value.uiAmount)
balances[mint] = amount balances[mint] = amount
logging.debug(f"Balance for {mint}: {amount}") logging.debug(f"Balance for {mint}: {amount}")
else:
logging.warning(f"Unexpected data format for account: {account}")
sol_balance = await solana_client.get_balance(Pubkey.from_string(wallet_address)) sol_balance = await solana_client.get_balance(Pubkey.from_string(wallet_address))
if sol_balance.value: if sol_balance.value:
balances['SOL'] = sol_balance.value / 1e9 balances['SOL'] = sol_balance.value / 1e9
except Exception as e:
logging.error(f"Error getting wallet balances: {str(e)}")
return balances return balances