使用 Python 调用现货价格端点时返回错误的货币信息
Wrong currency info being returned when calling spot price endpoint using Python
我注意到在使用 Python 时获取现货价格的数据端点返回错误的货币信息。我正在使用 currency_pair 的 BTC-USD 但得到的结果是 GBP.
示例:
price = client.get_spot_price(currency_pair = 'BTC-USD')
回复:
{
"amount": "5578.85",
"base": "BTC",
"currency": "GBP"
}
对导致此问题的原因有任何想法吗?
虽然不使用官方 Coinbase 客户端,但解决方法如下:
import requests
import json
# Do This to Avoid Warning
headers = {
'CB-VERSION': '2017-12-08'
}
# Make Request
data = requests.get('https://api.coinbase.com/v2/prices/BTC-USD/sell/', headers=headers).text
# Parse Response, Get Amount
price = json.loads(data)['data']['amount]
显然在处理错误、异常或任何其他类型的断言方面不是很稳健,这些断言是提供实际 buys/sells/transfers 所需的信心所需要的(官方客户端应该有的) .
编辑:更新
显然这是一个已知问题:
阅读此处:
https://github.com/coinbase/coinbase-python/issues/32
据称已在 github master
中修复,但显然尚未反映在 pip
版本中。
引用用户 kflecki:
我通过进入 client.py 文件并将代码修改为如下所示来修复此问题。现在工作得很好,但是对于这样的文件来说会很好。但这是一个您可以自己完成的简单修复。
def get_spot_price(self, **params):
"""https://developers.coinbase.com/api/v2#get-spot-price"""
if 'currency_pair' in params:
currency_pair = params['currency_pair']
else:
currency_pair = 'BTC-USD'
response = self._get('v2', 'prices', currency_pair, 'spot', data=params)
return self._make_api_object(response, APIObject)
现在命令是这样工作的:
eth_price = client.get_spot_price(currency_pair = 'ETH-USD')
我注意到在使用 Python 时获取现货价格的数据端点返回错误的货币信息。我正在使用 currency_pair 的 BTC-USD 但得到的结果是 GBP.
示例:
price = client.get_spot_price(currency_pair = 'BTC-USD')
回复:
{
"amount": "5578.85",
"base": "BTC",
"currency": "GBP"
}
对导致此问题的原因有任何想法吗?
虽然不使用官方 Coinbase 客户端,但解决方法如下:
import requests
import json
# Do This to Avoid Warning
headers = {
'CB-VERSION': '2017-12-08'
}
# Make Request
data = requests.get('https://api.coinbase.com/v2/prices/BTC-USD/sell/', headers=headers).text
# Parse Response, Get Amount
price = json.loads(data)['data']['amount]
显然在处理错误、异常或任何其他类型的断言方面不是很稳健,这些断言是提供实际 buys/sells/transfers 所需的信心所需要的(官方客户端应该有的) .
编辑:更新
显然这是一个已知问题:
阅读此处:
https://github.com/coinbase/coinbase-python/issues/32
据称已在 github master
中修复,但显然尚未反映在 pip
版本中。
引用用户 kflecki:
我通过进入 client.py 文件并将代码修改为如下所示来修复此问题。现在工作得很好,但是对于这样的文件来说会很好。但这是一个您可以自己完成的简单修复。
def get_spot_price(self, **params):
"""https://developers.coinbase.com/api/v2#get-spot-price"""
if 'currency_pair' in params:
currency_pair = params['currency_pair']
else:
currency_pair = 'BTC-USD'
response = self._get('v2', 'prices', currency_pair, 'spot', data=params)
return self._make_api_object(response, APIObject)
现在命令是这样工作的:
eth_price = client.get_spot_price(currency_pair = 'ETH-USD')