Untitled

 avatar
unknown
python
2 years ago
2.0 kB
6
Indexable
import requests
import pandas as pd
from time import sleep

headers = headers = {
  'Accepts': 'application/json',
  'X-CMC_PRO_API_KEY': 'a9930aaa-1755-443b-a9a5-ef6476e3e8fe',
}

def normalize(price: int) -> str:
    return '{0:,}'.format(price)



def main():
    names = []
    tickers = []
    market_caps = []
    websites = []
    for i in range(0, 3100, 100):
        start = i + 1
        url = f'https://api.coinmarketcap.com/data-api/v3/cryptocurrency/listing?start={start}&limit=100&sortBy=market_cap&sortType=desc&cryptoType=all&tagType=all&audited=false&aux=market_cap'
        page = requests.get(url, timeout=10).json()['data']['cryptoCurrencyList']
        print(f'AAAA {i} AAAAA')
        for currency in page:
            idc = currency['id']
            name = currency['name']
            api_url = f'https://pro-api.coinmarketcap.com/v2/cryptocurrency/info?id={idc}'
            api_response = requests.get(api_url, headers=headers, timeout=10).json()
            try:
                website = api_response['data'][f"{idc}"]['urls']['website'][0]
            except:
                sleep(20)
                print(f'Website not found: {name}')
                try:
                    website = website = api_response['data'][f"{idc}"]['urls']['website'][0]
                except:
                    website = 'None'
                    print(f'2222 Website not found: {name} 2222')

            
            ticker = currency['symbol']
            market_cap = normalize(int(currency['quotes'][0]['marketCap']))
            names.append(name)
            tickers.append(ticker)
            market_caps.append(market_cap)
            websites.append(website)

            print(name, ticker, market_cap, website)

        df = pd.DataFrame({'Name': names, 'Ticker': tickers, 'Cap': market_caps, 'Website': websites})
        df.to_excel('./crypto_demo.xlsx')
    

if __name__ == '__main__':
    main()
    pass
Editor is loading...