Неверная информация о валюте возвращается при вызове конечной точки спотовой цены с использованием Python

Я заметил, что конечная точка данных для получения спотовой цены возвращает неверную информацию о валюте при использовании Python. Я использую currency_pair из BTC-USD, но получаю результаты для GBP.

Пример:

price = client.get_spot_price(currency_pair = 'BTC-USD')

Ответ:

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

Любые идеи о том, что вызывает эту проблему?


person Alan Tucker    schedule 03.11.2017    source источник
comment
такая же проблема здесь, хотя у меня по умолчанию EUR (я в США). Конечно, можно было бы получить цену в обратном порядке, сначала вызвав метод .get_exchange_rates(), но я чувствую, что это не нужно — и что я упускаю что-то фундаментальное.   -  person alphazwest    schedule 09.12.2017


Ответы (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]

Очевидно, не очень надежный с точки зрения обработки ошибок, исключений или любых других типов утверждений, которые могут понадобиться (которые должны быть у официального клиента), которые необходимы для обеспечения уверенности, необходимой для реальных покупок/продаж/переводов.

РЕДАКТИРОВАТЬ: ОБНОВИТЬ

Судя по всему, это известная проблема:

Читайте здесь:

https://github.com/coinbase/coinbase-python/issues/32

Предположительно уже исправлено в гитхабе 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')
person alphazwest    schedule 08.12.2017