diff --git a/tools/coins_details.py b/tools/coins_details.py index e98974ef71..798f1c55a7 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -73,6 +73,19 @@ def coinmarketcap_init(api_key, refresh=None): api_key, params={"limit": 5000, "convert": "USD"}, ) + by_id = {str(coin["id"]): coin for coin in coinmarketcap_data["data"]} + all_ids = list(by_id.keys()) + while all_ids: + first_100 = all_ids[:100] + all_ids = all_ids[100:] + time.sleep(1) + print("Fetching metadata, {} coins remaining...".format(len(all_ids))) + metadata = coinmarketcap_call( + "cryptocurrency/info", api_key, params={"id": ",".join(first_100)} + ) + for coin_id, meta in metadata["data"].items(): + by_id[coin_id]["meta"] = meta + with open(COINMAKETCAP_CACHE, "w") as f: json.dump(coinmarketcap_data, f) except Exception as e: @@ -81,9 +94,13 @@ def coinmarketcap_init(api_key, refresh=None): coin_data = {} for coin in coinmarketcap_data["data"]: slug = coin["slug"] + platform = coin["meta"]["platform"] market_cap = coin["quote"]["USD"]["market_cap"] if market_cap is not None: coin_data[slug] = int(market_cap) + if platform is not None and platform["name"] == "Ethereum": + address = platform["token_address"].lower() + coin_data[address] = market_cap MARKET_CAPS = coin_data @@ -92,6 +109,10 @@ def coinmarketcap_init(api_key, refresh=None): def marketcap(coin): cap = None + if coin["type"] == "erc20": + address = coin["address"].lower() + return MARKET_CAPS.get(address) + if "coinmarketcap_alias" in coin: cap = MARKET_CAPS.get(coin["coinmarketcap_alias"]) if cap is None: