def get_historical_onchain(coin, metricID):
df = pd.DataFrame(columns=['timestamp'])
url = "https://data.messari.io/api/v1/assets/{assetKey}/metrics/{metricID}/time-series?start=2017-01-01&end=2022-03-28&interval=1d&format=json×tamp-format=rfc3339".format(assetKey=coin,metricID=metricID)
r = requests.get(url, headers={"x-messari-api-key":messari_api_key})
if r.status_code != 200:
print(r.json()['status']['error_message'])
else:
df = pd.DataFrame(r.json()['data']['values'], columns=r.json()['data']['parameters']['columns'])
return df
def get_historical_df(coin_list, metric_id_list):
for coin in coin_list:
df = pd.DataFrame(columns=['timestamp'])
print(coin)
for metric_id in tqdm.tqdm(metric_id_list):
new_df = get_historical_onchain(coin, metric_id)
time.sleep(2)
df = df.merge(new_df, how='outer',on='timestamp')
df = df.sort_values(by='timestamp')
# df.to_csv("E:/onchain/"+coin+'_onchain.csv', index=False)
df.to_csv(coin, index=False)
btc = get_historical_onchain('BTC','mcap.dom')
btc.to_csv('./btc_dominance.csv')
# If you want to aggregate multiple coins' data into one csv
coin_list = ['BTC','ETH','SOL']
get_historical_df(coin_list. ['mcap.dom'])