カテゴリー【Node.js、JavaScript、仮想通貨】
【Node.js】ビットコイン(BTC)およびイーサリアム(ETH)の日本円(JPY)レートを取得する
				POSTED BY 
2024-01-13
			2024-01-13


 
			BitFlyerのAPIが公開されているのでRESTで取得する。以下サンプルソース
| JavaScript | get_coin_jpy_rate.js | GitHub 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仮想通貨あたりの日本円レートなので、小数点以下を切って表示している。
Android
 iPhone/iPad
 Flutter
 MacOS
 Windows
 Debian
 Ubuntu
 CentOS
 FreeBSD
 RaspberryPI
 HTML/CSS
 C/C++
 PHP
 Java
 JavaScript
 Node.js
 Swift
 Python
 MatLab
 Amazon/AWS
 CORESERVER
 Google
 仮想通貨
 LINE
 OpenAI/ChatGPT
 IBM Watson
 Microsoft Azure
 Xcode
 VMware
 MySQL
 PostgreSQL
 Redis
 Groonga
 Git/GitHub
 Apache
 nginx
 Postfix
 SendGrid
 Hackintosh
 Hardware
 Fate/Grand Order
 ウマ娘
 将棋
 ドラレコ
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
			自営業プログラマーです。お仕事ください!ご連絡は以下アドレスまでお願いします★
【キーワード検索】
			
		【最近の記事】【全部の記事】
			LetsEncrypt/certbotの証明書自動更新がエラーになる場合Wav2Lipのオープンソース版を改造して外部から呼べるAPI化する
Wav2Lipのオープンソース版で静止画の口元のみを動かして喋らせる
【iOS】アプリアイコン・ロゴ画像の作成・設定方法
オープンソースリップシンクエンジンSadTalkerをAPI化してアプリから呼ぶ【2】
オープンソースリップシンクエンジンSadTalkerをAPI化してアプリから呼ぶ【1】
【Xcode】iPhone is not available because it is unpairedの対処法
【Let's Encrypt】Failed authorization procedure 503の対処法
【Debian】古いバージョンでapt updateしたら404 not foundでエラーになる場合
ファイアウォール内部のWindows11 PCにmacOS Sequoiaからリモートデスクトップする
【人気の記事】【全部の記事】
			【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
進研ゼミチャレンジタッチをAndroid端末化する
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
Windows11のコマンドプロンプトでテキストをコピーする
Androidホームで左にスワイプすると出てくるニュース共を一切表示させない方法
Googleスプレッドシートを編集したら自動で更新日時を入れる
Node.jsからPostgreSQLサーバに接続・操作する
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C++】staticメンバ変数がundefined referenceとエラーになる場合
【カテゴリーリンク】
			Android
 iPhone/iPad
 Flutter
 MacOS
 Windows
 Debian
 Ubuntu
 CentOS
 FreeBSD
 RaspberryPI
 HTML/CSS
 C/C++
 PHP
 Java
 JavaScript
 Node.js
 Swift
 Python
 MatLab
 Amazon/AWS
 CORESERVER
 Google
 仮想通貨
 LINE
 OpenAI/ChatGPT
 IBM Watson
 Microsoft Azure
 Xcode
 VMware
 MySQL
 PostgreSQL
 Redis
 Groonga
 Git/GitHub
 Apache
 nginx
 Postfix
 SendGrid
 Hackintosh
 Hardware
 Fate/Grand Order
 ウマ娘
 将棋
 ドラレコ
		