Получайте актуальные цены на BTC, ETH, TRX и другие криптовалюты с помощью NodeJS.
CoinGecko — это бесплатный инструмент API для получения цен на криптовалюту, общедоступный и без ограничений. На момент написания этого поста они отслеживают более 6285 монет, и данные достоверны относительно времени и задержек.
В этом руководстве представлено базовое руководство по использованию CoinGecko на NodeJS с использованием библиотеки CoinGecko-API (https://github.com/miscavage/CoinGecko-API), которая представляет собой оболочку для взаимодействия с API.
Для его установки воспользуемся командой npm install:
npm install coingecko-api const CoinGecko = require('coingecko-api');
И новый может начать получать цены вместе с клиентом. В этом случае я выбираю использовать рынок битфинекс для получения цен и запрашиваю только биткойны:
const CoinGeckoClient = new CoinGecko(); let data = await CoinGeckoClient.exchanges.fetchTickers('bitfinex', { coin_ids: ['bitcoin'] }); var _coinList = {}; var _datacc = data.data.tickers.filter(t => t.target == 'USD'); [ 'BTC' ].forEach((i) => { var _temp = _datacc.filter(t => t.base == i); var _res = _temp.length == 0 ? [] : _temp[0]; _coinList[i] = _res.last; }) console.log(_coinList);
Если мы хотим получить больше монет, нам нужно запросить их как coin_id и обнаружить их позже, как в этом примере:
const CoinGeckoClient = new CoinGecko(); let data = await CoinGeckoClient.exchanges.fetchTickers('bitfinex', { coin_ids: ['bitcoin', 'ethereum', 'ripple', 'litecoin', 'stellar'] }); var _coinList = {}; var _datacc = data.data.tickers.filter(t => t.target == 'USD'); [ 'BTC', 'ETH', 'XRP', 'LTC', 'XLM' ].forEach((i) => { var _temp = _datacc.filter(t => t.base == i); var _res = _temp.length == 0 ? [] : _temp[0]; _coinList[i] = _res.last; }) console.log(_coinList);
Вывод
Теперь мы можем использовать эту библиотеку для разработки различных проектов, от криптокошельков до сборщиков. В зависимости от решения, которое мы хотим получить, я бы рекомендовал использовать сокеты или опрос; в противном случае сообщите пользователям, когда в последний раз были получены цены, поскольку тем временем цены могут повышаться/снижаться.