dash-whales-spaces / utils /extract_wallet_interactions.py
mohcineelharras's picture
graph done
5901908
raw
history blame
1.74 kB
import requests
import pandas as pd
import json
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
API_KEY = os.getenv('API_KEY_ETHERSCAN')
URL_ETHERSCAN = os.getenv('URL_ETHERSCAN')
def get_token_transactions(address, action):
params = {
'module': 'account',
'action': action, # tokentx for ERC20, tokennfttx for ERC721, token1155tx for ERC1155
'address': address,
'startblock': 0,
'endblock': 99999999,
'sort': 'asc',
'apikey': API_KEY
}
response = requests.get(URL_ETHERSCAN, params=params)
if response.status_code == 200:
data = response.json()
return data['result']
else:
print(f"Error fetching transactions for address {address} with action {action}")
return []
def combine_token_transactions(address):
erc20_transactions = get_token_transactions(address, 'tokentx')
erc721_transactions = get_token_transactions(address, 'tokennfttx')
erc1155_transactions = get_token_transactions(address, 'token1155tx')
combined_transactions = erc20_transactions + erc721_transactions + erc1155_transactions
return combined_transactions
def save_transactions_to_csv(transactions, influencer_name):
df = pd.DataFrame(transactions)
df.to_csv(f"output/interactions_{influencer_name}.csv", index=False)
if __name__ == "__main__":
# Load influencers
with open("ressources/dict_influencers_addr.json", "r") as file:
influencers = json.load(file)
# Extract and save interactions for all influencers
for name, address in influencers.items():
transactions = combine_token_transactions(address)
save_transactions_to_csv(transactions, name)