使用Python调用现货价格终端时返回错误的货币信息

时间:2017-11-03 13:24:21

标签: coinbase-api

我注意到使用Python时获取现货价格的数据端点返回了错误的货币信息。我使用 BTC-USD currency_pair ,但获取 GBP 的结果。

示例:

{
  "amount": "5578.85", 
  "base": "BTC", 
  "currency": "GBP"
}

响应:

{{1}}

关于什么导致这个问题的想法?

1 个答案:

答案 0 :(得分:1)

虽然不使用官方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]

在处理错误,例外或任何其他类型的断言(显然是官方客户应该拥有的)方面显然不是非常强大,以提供实际购买/出售/转让所需的信心。 / p>

编辑:更新

显然这是一个已知问题:

请阅读:

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')