Spaces:
Sleeping
Sleeping
File size: 4,182 Bytes
f80a609 5fccf53 f80a609 5fccf53 f80a609 5fccf53 f80a609 5fccf53 f80a609 5fccf53 f80a609 5fccf53 f80a609 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | import requests
import json
import pandas as pd
import gradio as gr
def return_df():
response1 = requests.post(
"https://api.g.alchemy.com/data/v1/yhe6L3PXmiENzS1sP9Fu4_T5E3l0QyeB/assets/tokens/by-address",
headers={},
json={
"addresses": [
{
"address": "0x7743960B4305f9eAF4d412322B5fAb736DB51D4C",
"networks": [
"base-mainnet"
]
},
{
"address": "0x3a6Cf81996b208f3167335f7075aB46e895382b1",
"networks": [
"base-mainnet"
]
},
{
"address": "0xE040654071DC563a864Bb9EB56d592118CfCD468",
"networks": [
"base-mainnet"
]
}
],
"withMetadata": True,
"withPrices": True,
"includeNativeTokens": True
},
)
response2 = requests.post(
"https://api.g.alchemy.com/data/v1/yhe6L3PXmiENzS1sP9Fu4_T5E3l0QyeB/assets/tokens/by-address",
headers={},
json={
"addresses": [
{
"address": "0x6f648Cd40Abe3aCc21a9141Fb9C7074bcf939285",
"networks": [
"base-mainnet"
]
},
{
"address": "0xd58Fc0D2a4Fe66FE9be63BeDDC8866fDdE50ce0e",
"networks": [
"base-mainnet"
]
},
{
"address": "0x7D8A95508caedF57E853F81F49FB1714d75dE750",
"networks": [
"base-mainnet"
]
}
],
"withMetadata": True,
"withPrices": True,
"includeNativeTokens": True
},
)
response3 = requests.post(
"https://api.g.alchemy.com/data/v1/yhe6L3PXmiENzS1sP9Fu4_T5E3l0QyeB/assets/tokens/by-address",
headers={},
json={
"addresses": [
{
"address": "0x422473C72F19b0bdCA74d360CEDB72594C1b4Efa",
"networks": [
"base-mainnet"
]
},
{
"address": "0x7743960B4305f9eAF4d412322B5fAb736DB51D4C",
"networks": [
"base-mainnet"
]
}
],
"withMetadata": True,
"withPrices": True,
"includeNativeTokens": True
},
)
response1 = response1.json()['data']['tokens']
response2 = response2.json()['data']['tokens']
response3 = response3.json()['data']['tokens']
# Extract the prioritized items
priority_items = response2[:3] + response3[:2]
# Remove those items from their original lists to avoid duplication
remaining_items = response2[3:] + response3[2:] + response1
# Combine priority items with the rest
response = priority_items + remaining_items
df = pd.DataFrame(response)
for i in range(8):
df.at[i,'tokenMetadata'] = {}
df['tokenBalance'] = df['tokenBalance'].apply(lambda x : int(x,16))
df['decimals'] = df['tokenMetadata'].apply(lambda x : x.get('decimals',0))
df['tokenBalance'] = df['tokenBalance']/(10**df['decimals'])
for i in range(8):
df.at[i, 'tokenBalance'] = df.at[i, 'tokenBalance'] / (10**18)
df['symbol'] = df['tokenMetadata'].apply(lambda x : x.get('symbol',''))
for i in range(8):
df.at[i,'symbol'] = 'ETH'
df['currentPrice'] = df['tokenPrices'].apply(lambda x : x[0].get('value',None) if len(x) > 0 else None)
df.drop(columns=['tokenPrices','tokenMetadata','network','tokenAddress'], inplace=True)
df = df.dropna()
df['tokenBalance'] = pd.to_numeric(df['tokenBalance'], errors='coerce')
df = df[df['tokenBalance'] != 0]
df['tokenBalance'] = pd.to_numeric(df['tokenBalance'], errors='coerce')
df['currentPrice'] = pd.to_numeric(df['currentPrice'], errors='coerce')
df['value'] = df['tokenBalance'] * df['currentPrice']
df.drop(columns=['address','decimals'],inplace=True)
df = df[df['symbol'].isin(['AGNT', 'ETH', 'USDT'])]
df= df[['symbol','tokenBalance','value']]
df = df.groupby("symbol", as_index=False).sum()
return df, df['value'].sum()
with gr.Blocks() as demo:
gr.Markdown("## AGNT Balances and PnL")
df0_out = gr.Dataframe(label="Current Balances")
txt0_out = gr.Textbox(label="Total Value")
# Load from MongoDB on app load (sync function)
demo.load(
fn=return_df,
inputs=[],
outputs=[
df0_out,txt0_out
]
)
demo.launch(debug=True, share=True) |