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;
}
5會員
67內容數
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
川普當選,對台股是利多還是利空?川普在槍擊事件中所表現出來的英勇形象,讓他贏得美國總統大選幾乎已成定局。沒想到他隨口的一句話「台灣搶走美國的晶片生意,所以要付保護費」,就讓台積電在短短三天跌掉超過100 元,台股也跌掉1100點以上。台積電、台股會就此一路下跌嗎?未來該如何因應?  
Thumbnail
2024-07-20
61
金融科技與生活美學的融合 CUBE App實踐自我理想最近開啟了研究工作,也開始斜槓著手團購、行銷、洽談業務,慢慢想打造一條屬於自己的道路,而工作忙碌之虞,總忘記自己刷卡消費明細、信用卡繳費,還會忽略了最應該的投資理財,也常常在忙碌奔波中忘記信用卡優惠,國泰世華CUBE App給足了這些功能和服務。 日常生活與數位、科技形影不離,同時也拉近彼此距
Thumbnail
2024-07-11
17
【Python 軍火庫 - Click👆】一「點」就通的CLI使用者互動介面 Python雖然是直譯式的腳本語言, 用起來非常方便, 但當我們的工具越發成熟時, 就會需要將使用方式、介面給設計好, 那通常都會用來處理後端伺服器的作業, 也比較面向IT端, 因此我們通常會以Command Line的形式與使用工具的人進行互動, 而內建模組雖然有「argparse」可以讓我們
Thumbnail
2023-11-14
10
Python學習筆記5-函式與模組我們將探索函式的定義和調用,這是程式設計中非常重要且強大的概念,它可以將大型程式切割成小的、可重複使用的函式。讓我們一起來了解吧!函式的定義、呼叫和返回值是學習函式的核心。
Thumbnail
2023-06-21
3
Python學習筆記3 - 列表的建立與存取以及常用方法探索Python學習筆記中列表的建立、存取和常用方法。從使用中括號定義列表到了解索引、新增、刪除、修改等操作,並介紹append、remove、count等常用方法。
Thumbnail
2023-06-20
0
Python學習筆記4-字典的使用方法在本篇Python學習筆記中,我們探討了字典的建立與存取,以及常用方法,字典是一種強大的資料型態,透過key和value的對應關係存儲和取得資料,我們學會了建立字典、存取資料、新增/修改/刪除項目,以及取得key和value的方法,字典是Python中不可或缺的工具!
Thumbnail
2023-06-20
0
Python學習筆記2.2-while 迴圈我們探討了while迴圈的使用,不同於for迴圈,while迴圈以條件式判斷為基礎,而非限定重複次數。我們介紹了使用break語句強制結束迴圈,以及使用continue語句跳過特定程式碼並返回迴圈開頭,同時,我們提及了無窮迴圈的概念,強調了在迴圈中必須更改迴圈變數的值,以避免無窮迴圈的發生。
Thumbnail
2023-06-20
0
Python學習筆記2.1-for迴圈迴圈對象可以是列表或範圍,透過定義重複動作的內容,我們可以在迴圈中執行指定次數的操作。利用range函數,我們可以自訂重複執行的次數。同時,我們也介紹了break和continue的使用,以及巢狀迴圈的特性。
Thumbnail
2023-06-20
0
Python學習筆記2-條件判斷和迴圈在這篇Python學習筆記中,我們研究了條件判斷和迴圈,透過if、else、elif條件語句,我們能根據條件執行程式碼。使用for迴圈和while迴圈,我們可以重複執行程式碼塊。同時,我們還介紹了break和continue等控制流程的使用方法。這些概念將幫助你寫出更靈活和有趣的程式!
Thumbnail
2023-06-20
0
[Python] 使用 OpenAI 的 ChatGPT API 實作聊天機器人這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
2023-05-03
5
Python新手學習0Python安裝、外部程式包安裝(pip install xxx)、Hello World 【安裝Python】 Visual Studio Code-Download 進入vscode(延伸模組) 安裝中文介面(輸入ch搜尋) 安裝 搜尋命令提示字元 命令提示字元打python 創建檔案
Thumbnail
2022-08-25
4
Python - 透過Yahoo Finance API抓取台股歷史資料無論是投資或是資料科學專案,經常需要股市資料作分析。證交所在政府資料開放平台中提供了個股日成交資訊,也可以透過API查詢歷史記錄,但很容易因為頻繁抓取資料而被暫時的鎖IP,之後會再寫另外一篇文章說明。
Thumbnail
2020-06-28
2
川普當選,對台股是利多還是利空?川普在槍擊事件中所表現出來的英勇形象,讓他贏得美國總統大選幾乎已成定局。沒想到他隨口的一句話「台灣搶走美國的晶片生意,所以要付保護費」,就讓台積電在短短三天跌掉超過100 元,台股也跌掉1100點以上。台積電、台股會就此一路下跌嗎?未來該如何因應?  
Thumbnail
2024-07-20
61
金融科技與生活美學的融合 CUBE App實踐自我理想最近開啟了研究工作,也開始斜槓著手團購、行銷、洽談業務,慢慢想打造一條屬於自己的道路,而工作忙碌之虞,總忘記自己刷卡消費明細、信用卡繳費,還會忽略了最應該的投資理財,也常常在忙碌奔波中忘記信用卡優惠,國泰世華CUBE App給足了這些功能和服務。 日常生活與數位、科技形影不離,同時也拉近彼此距
Thumbnail
2024-07-11
17
【Python 軍火庫 - Click👆】一「點」就通的CLI使用者互動介面 Python雖然是直譯式的腳本語言, 用起來非常方便, 但當我們的工具越發成熟時, 就會需要將使用方式、介面給設計好, 那通常都會用來處理後端伺服器的作業, 也比較面向IT端, 因此我們通常會以Command Line的形式與使用工具的人進行互動, 而內建模組雖然有「argparse」可以讓我們
Thumbnail
2023-11-14
10
Python學習筆記5-函式與模組我們將探索函式的定義和調用,這是程式設計中非常重要且強大的概念,它可以將大型程式切割成小的、可重複使用的函式。讓我們一起來了解吧!函式的定義、呼叫和返回值是學習函式的核心。
Thumbnail
2023-06-21
3
Python學習筆記3 - 列表的建立與存取以及常用方法探索Python學習筆記中列表的建立、存取和常用方法。從使用中括號定義列表到了解索引、新增、刪除、修改等操作,並介紹append、remove、count等常用方法。
Thumbnail
2023-06-20
0
Python學習筆記4-字典的使用方法在本篇Python學習筆記中,我們探討了字典的建立與存取,以及常用方法,字典是一種強大的資料型態,透過key和value的對應關係存儲和取得資料,我們學會了建立字典、存取資料、新增/修改/刪除項目,以及取得key和value的方法,字典是Python中不可或缺的工具!
Thumbnail
2023-06-20
0
Python學習筆記2.2-while 迴圈我們探討了while迴圈的使用,不同於for迴圈,while迴圈以條件式判斷為基礎,而非限定重複次數。我們介紹了使用break語句強制結束迴圈,以及使用continue語句跳過特定程式碼並返回迴圈開頭,同時,我們提及了無窮迴圈的概念,強調了在迴圈中必須更改迴圈變數的值,以避免無窮迴圈的發生。
Thumbnail
2023-06-20
0
Python學習筆記2.1-for迴圈迴圈對象可以是列表或範圍,透過定義重複動作的內容,我們可以在迴圈中執行指定次數的操作。利用range函數,我們可以自訂重複執行的次數。同時,我們也介紹了break和continue的使用,以及巢狀迴圈的特性。
Thumbnail
2023-06-20
0
Python學習筆記2-條件判斷和迴圈在這篇Python學習筆記中,我們研究了條件判斷和迴圈,透過if、else、elif條件語句,我們能根據條件執行程式碼。使用for迴圈和while迴圈,我們可以重複執行程式碼塊。同時,我們還介紹了break和continue等控制流程的使用方法。這些概念將幫助你寫出更靈活和有趣的程式!
Thumbnail
2023-06-20
0
[Python] 使用 OpenAI 的 ChatGPT API 實作聊天機器人這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
2023-05-03
5
Python新手學習0Python安裝、外部程式包安裝(pip install xxx)、Hello World 【安裝Python】 Visual Studio Code-Download 進入vscode(延伸模組) 安裝中文介面(輸入ch搜尋) 安裝 搜尋命令提示字元 命令提示字元打python 創建檔案
Thumbnail
2022-08-25
4
Python - 透過Yahoo Finance API抓取台股歷史資料無論是投資或是資料科學專案,經常需要股市資料作分析。證交所在政府資料開放平台中提供了個股日成交資訊,也可以透過API查詢歷史記錄,但很容易因為頻繁抓取資料而被暫時的鎖IP,之後會再寫另外一篇文章說明。
Thumbnail
2020-06-28
2