カテゴリー【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】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法進研ゼミチャレンジタッチをAndroid端末化する
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【Debian】apt updateでCD-ROMがどうのこうの言われエラーになる場合
Node.jsからPostgreSQLサーバに接続・操作する
タスクスケジューラで変更を適用できません。ユーザーアカウントが不明であるか、パスワードが正しくないか、またはユーザーアカウントにタスクを変更する許可がありません。と出た
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
最新版のOpenSSH Serverにしたら公開鍵ログインできなくなった場合
【カテゴリーリンク】
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
ウマ娘
将棋
ドラレコ