Получайте актуальные цены на 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);

Вывод

Теперь мы можем использовать эту библиотеку для разработки различных проектов, от криптокошельков до сборщиков. В зависимости от решения, которое мы хотим получить, я бы рекомендовал использовать сокеты или опрос; в противном случае сообщите пользователям, когда в последний раз были получены цены, поскольку тем временем цены могут повышаться/снижаться.