Spaces:
Sleeping
Sleeping
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) | |