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)