Python 新手就能搞定 Bitfinex API

更新 發佈閱讀 7 分鐘

做 Bitfinex 放貸已經 2、3年了,曾經想過用 Bitfinex API 來記錄每天融資錢包的餘額,配合 Line Notify,每天傳餘額數字給自己,但苦於程式底子不足,就放棄了


2 年後的今天,我對於簽名、Nonce 等技術術語仍然一知半解,但我將 Bitfinex API 的網址直接提供給 ChatGPT,請他幫我寫程式,沒想到還真的寫出來了,過程中難免還是會出錯,但我把錯誤訊息丟回給 ChatGPT,它就能迅速幫我進行修改,最後終於完成,分享給大家


import requests
import json
import time
import hmac
import hashlib

# 設置您的 API 金鑰和秘密
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'

# API 請求的資訊
api_path = 'v2/auth/r/wallets'
nonce = str(int(time.time() * 1000000))
body = {}

# 創建簽名
signature = '/api/' + api_path + nonce + json.dumps(body)
h = hmac.new(api_secret.encode(), signature.encode(), hashlib.sha384)
signature = h.hexdigest()

# 發送請求
url = 'https://api.bitfinex.com/' + api_path
headers = {
'bfx-nonce': nonce,
'bfx-apikey': api_key,
'bfx-signature': signature,
'content-type': 'application/json'
}

response = requests.post(url, headers=headers, data=json.dumps(body))

# 處理響應
if response.status_code == 200:
wallets = response.json()
# 查找 USD 餘額
usd_balance = next((wallet for wallet in wallets if wallet[0] == 'funding' and wallet[1] == 'USD'), None)
if usd_balance:
print("USD Balance:", usd_balance[2])
else:
print("USD wallet not found.")
else:
print("Error:", response.status_code, response.text)


加碼 Google Apps Script,因為我都用 Google Apps Script 串 Line 機器人,原以為有些東西只有 Python 套件才有,但反正最後還是成功寫出來了


function getUsdBalance() {
var api_key = 'YOUR_API_KEY';
var api_secret = 'YOUR_API_SECRET';

var api_path = 'v2/auth/r/wallets';
var nonce = new Date().getTime().toString() + '000'; // 增加三個零以提高精度
var body = JSON.stringify({});

var signature = '/api/' + api_path + nonce + body;
var hmac = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_384, signature, api_secret, Utilities.Charset.UTF_8);
var signatureHex = arrayToHex(hmac);

var url = 'https://api.bitfinex.com/' + api_path;
var headers = {
'bfx-nonce': nonce,
'bfx-apikey': api_key,
'bfx-signature': signatureHex,
'Content-Type': 'application/json'
};

var options = {
'method': 'post',
'headers': headers,
'payload': body,
'muteHttpExceptions': true
};

var response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() == 200) {
var wallets = JSON.parse(response.getContentText());
var usdBalance = wallets.find(function(wallet) {
return wallet[0] === 'funding' && wallet[1] === 'USD';
});
if (usdBalance) {
Logger.log("USD Balance: " + usdBalance[2]);
} else {
Logger.log("USD wallet not found.");
}
} else {
Logger.log("Error: " + response.getResponseCode() + " - " + response.getContentText());
}
}

function arrayToHex(byteArray) {
var hexString = '';
byteArray.forEach(function(byte) {
var byteHex = ('0' + (byte & 0xFF).toString(16)).slice(-2);
hexString += byteHex;
});
return hexString;
}
留言
avatar-img
Raymond Life的沙龍
7會員
134內容數
Raymond Life的沙龍的其他內容
2024/09/29
終於考完啦!但我覺得考試題目比我練習過的題目都還要難很多... 我自己練的題目是以金融研訓院出版的 AFP 模擬考題為主,但實際題目很多都不是這麼「單點式」,而是類似下圖這樣,有案例敘述然後問你各種情況的判斷 圖片取自 CFP全方位理財規劃-模擬試題解析(2023年版) 來回想一下昨天的考題
Thumbnail
2024/09/29
終於考完啦!但我覺得考試題目比我練習過的題目都還要難很多... 我自己練的題目是以金融研訓院出版的 AFP 模擬考題為主,但實際題目很多都不是這麼「單點式」,而是類似下圖這樣,有案例敘述然後問你各種情況的判斷 圖片取自 CFP全方位理財規劃-模擬試題解析(2023年版) 來回想一下昨天的考題
Thumbnail
2024/09/27
老李90年5月2日死亡,嗣於111年11月25日經法院判決確定,老李生前將一筆房地借名登記於老張名下,老李的繼承人小李未於判決確定之日起6個月內補申報該房地移轉登記請求權,被國稅局以被繼承人死亡日之遺產價值核定補徵遺產稅並裁處罰鍰。 小李不服,申請復查主張其已於90年間申報遺產稅,本次核定已逾5年
2024/09/27
老李90年5月2日死亡,嗣於111年11月25日經法院判決確定,老李生前將一筆房地借名登記於老張名下,老李的繼承人小李未於判決確定之日起6個月內補申報該房地移轉登記請求權,被國稅局以被繼承人死亡日之遺產價值核定補徵遺產稅並裁處罰鍰。 小李不服,申請復查主張其已於90年間申報遺產稅,本次核定已逾5年
2024/09/26
老年年金給付的請領人,如果有下列情形之一,不能選擇以A式計算給付金額,只能以B式計算後發給: 有欠繳保險費不能計入保險年資的情形。 正在領其他的社會福利津貼(指低收入老人生活津貼、中低收入老人生活津貼、身心障礙者生活補助、老年農民福利津貼或榮民就養給付)。 在97年12月31日以前領取公保養老
2024/09/26
老年年金給付的請領人,如果有下列情形之一,不能選擇以A式計算給付金額,只能以B式計算後發給: 有欠繳保險費不能計入保險年資的情形。 正在領其他的社會福利津貼(指低收入老人生活津貼、中低收入老人生活津貼、身心障礙者生活補助、老年農民福利津貼或榮民就養給付)。 在97年12月31日以前領取公保養老
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
兩年前,我想用 Bitfinex API 看看我的放貸錢包有多少錢,但因為不太懂寫程式,就沒弄成。最近,我試著讓 ChatGPT 幫忙,沒想到它不僅知道我要什麼,還真的幫我寫出了程式碼。
Thumbnail
兩年前,我想用 Bitfinex API 看看我的放貸錢包有多少錢,但因為不太懂寫程式,就沒弄成。最近,我試著讓 ChatGPT 幫忙,沒想到它不僅知道我要什麼,還真的幫我寫出了程式碼。
Thumbnail
ChatGPT的發展須審慎考慮者有三:教育、監理及道德。
Thumbnail
ChatGPT的發展須審慎考慮者有三:教育、監理及道德。
Thumbnail
使用加密貨幣交易會比您想像中的容易 本篇將介紹: (1) 如何用Pi Wallet(錢包)來進行點對點的交易支付 (2) 使用blockchain.pi查詢交易紀錄 (3) 以PitoGo為例子來示範應用的支付 Note:名詞解釋 也歡迎加入Line社群,大家一起討論Pi Network!
Thumbnail
使用加密貨幣交易會比您想像中的容易 本篇將介紹: (1) 如何用Pi Wallet(錢包)來進行點對點的交易支付 (2) 使用blockchain.pi查詢交易紀錄 (3) 以PitoGo為例子來示範應用的支付 Note:名詞解釋 也歡迎加入Line社群,大家一起討論Pi Network!
Thumbnail
大約花費五分鐘就能利用 Google Sheet 與 GAS 的結合,加上 Cryptofinance 的套件快速打造一套自己的加密幣價追蹤器,有了這些方法我們就可以再去思考能夠做哪些變化,例如打造一套個人加密資產統計表。
Thumbnail
大約花費五分鐘就能利用 Google Sheet 與 GAS 的結合,加上 Cryptofinance 的套件快速打造一套自己的加密幣價追蹤器,有了這些方法我們就可以再去思考能夠做哪些變化,例如打造一套個人加密資產統計表。
Thumbnail
簡單條列幣安交易所優勢,詳細圖解: 申辦帳號、KYC實名認證、 信用卡入金、出金至虛擬錢包
Thumbnail
簡單條列幣安交易所優勢,詳細圖解: 申辦帳號、KYC實名認證、 信用卡入金、出金至虛擬錢包
Thumbnail
最近NFT真的是熱到不行,阿財上週也有分享自己的NFT體驗,總結一下阿財這幾個月來的體驗,給大家當故事看,歡迎分享或留言說說你的經歷。 這篇是阿財這幾個月以來作為超級新人的一些體驗記錄,文章中提到的交易所都不是業配。
Thumbnail
最近NFT真的是熱到不行,阿財上週也有分享自己的NFT體驗,總結一下阿財這幾個月來的體驗,給大家當故事看,歡迎分享或留言說說你的經歷。 這篇是阿財這幾個月以來作為超級新人的一些體驗記錄,文章中提到的交易所都不是業配。
Thumbnail
投資加密貨幣對很多人來說都是未知領域,同時也不知道該怎麼開始,所以我就寫了這個 Step by Step 的步驟,希望可以幫助到想要進入加密貨幣的人,至少依著流程做不會有什麼太大問題
Thumbnail
投資加密貨幣對很多人來說都是未知領域,同時也不知道該怎麼開始,所以我就寫了這個 Step by Step 的步驟,希望可以幫助到想要進入加密貨幣的人,至少依著流程做不會有什麼太大問題
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News