アプリケーション開発ポータルサイト
ServerNote.NET
ServerNote.NET厳選キャンペーン・クーポンはこちら!
カテゴリー【Node.jsJavaScript仮想通貨
【Node.js】ビットコイン(BTC)およびイーサリアム(ETH)の日本円(JPY)レートを取得する
POSTED BY
2023-01-13
BitFlyerのAPIが公開されているのでRESTで取得する。以下サンプルソース

JavaScriptget_coin_jpy_rate.jsGitHub Source
async function main() {

const HTTPS = require('https');

function promiseRequest(url, options, postData) {
return new Promise(function (resolve, reject) {

  var req = HTTPS.request(url, options, (res) => {
    //console.log('statusCode:', res.statusCode);
    //console.log('headers:', res.headers);

    //200台以外はエラーとする場合
    //if(res.statusCode >= 300) {
    //  reject(new Error('res.statusCode >= 300'));
    //}

    var chunks = []; //チャンクレスポンスストック配列

    res.on('data', chunk => chunks.push(Buffer.from(chunk)))
    .on('end', () => { //チャンクレスポンスストリーム終了
      var buffer = Buffer.concat(chunks);
      resolve(buffer);
    });
  });

  req.on('error', (err) => {
    reject(err);
  });

  req.on('timeout', () => {
    req.abort();
    reject(new Error('request timed out'));
  });

  if(postData != null) {
    req.write(postData);
  }

  req.end();

});
}

async function get_coin_jpy_rate(code) {

  var url = 'https://api.bitflyer.jp/v1/ticker?product_code=' + code;
  console.log(url);
  var json = null;
  var options = {
    method: 'GET',
    timeout: 5000,
    //headers: {
      //'Content-Type': 'application/json',
    //},
  };

  //var postData = JSON.stringify({
  //  'limit' : 50
  //});
  var postData = null;

  try {
    json = await promiseRequest(url, options, postData);
    json = JSON.parse(json);
  }
  catch(err) {
    console.log(err.stack);
    json = null;
  }

  console.log(json);
  //console.log(json.ltp);

  return json != null ? json.ltp:0;
}

var coins = 1;

var coins_jpy = Math.floor(await get_coin_jpy_rate('BTC_JPY')) * coins;
console.log(coins + ' BTC は ' + coins_jpy + ' 円 です。');

coins_jpy = Math.floor(await get_coin_jpy_rate('ETH_JPY')) * coins;
console.log(coins + ' ETH は ' + coins_jpy + ' 円 です。');

} //async function main()

main();

実行結果

node get_coin_jpy_rate.js

https://api.bitflyer.jp/v1/ticker?product_code=BTC_JPY
{
  product_code: 'BTC_JPY',
  state: 'RUNNING',
  timestamp: '2023-01-13T13:49:21.82',
  tick_id: 1739827,
  best_bid: 2425040,
  best_ask: 2425081,
  best_bid_size: 0.0208,
  best_ask_size: 0.196,
  total_bid_depth: 494.19401556,
  total_ask_depth: 203.58607963,
  market_bid_size: 0,
  market_ask_size: 0,
  ltp: 2425389,
  volume: 10285.41380451,
  volume_by_product: 1590.62180054
}
1 BTC は 2425389 円 です。
https://api.bitflyer.jp/v1/ticker?product_code=ETH_JPY
{
  product_code: 'ETH_JPY',
  state: 'RUNNING',
  timestamp: '2023-01-13T13:49:22.09',
  tick_id: 2130483,
  best_bid: 180542,
  best_ask: 180675,
  best_bid_size: 0.0853071,
  best_ask_size: 0.2,
  total_bid_depth: 4040.6103645,
  total_ask_depth: 1699.8850064,
  market_bid_size: 0,
  market_ask_size: 0,
  ltp: 180542,
  volume: 7073.1963903,
  volume_by_product: 7073.1963903
}
1 ETH は 180542 円 です。

Promiseを使ってhttpsリクエスト&レスポンスのチャンクデータを同期的に(待って)取得している。
返却JSONのltpが1仮想通貨あたりの日本円レートなので、小数点以下を切って表示している。

モデル用美痩せdiet【ファイブデイズプレミアムダイエット】
進化した酵素ダイエット。ただ食事制限をするだけのダイエットではありません。 たった5日間で美しくスリム...READ MORE
草刈り・芝刈り・草むしりするなら【草刈り110番】どんな場所でも対応します
東証上場企業が運営する草刈りサービス「草刈り110番」をアピールするプログラムです。 全国どのエリアから...READ MORE
医師が開発した臨床試験済みの発毛プログラム【SHEE+発毛プログラム】
この発毛プログラムは医師により開発され、24週間にわたる臨床試験が行われました。 ■発毛プログラムの内...READ MORE
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

☆ServerNote.NETショッピング↓
ShoppingNote
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】