Python和Bitfinex Web套接字。

时间:2017-05-26 02:09:33

标签: python json sockets bitcoin

我知道这可能是一个愚蠢的问题,但我仍然在学习使用python的网络套接字。

以下是我测试api的代码。

import json

from websocket import create_connection
ws = create_connection("wss://api2.bitfinex.com:3000/ws")
ws.send(json.dumps({
    "event": "subscribe",
    "channel": "book",
    "pair": "BTCUSD",
}))


while True:
    result = ws.recv()
    result = json.loads(result)
    print ("Received '%s'" % result)

ws.close()

现在这是我的问题。我知道使用REST API,您可以定义变量并为其分配JSON请求。

bitFinexTick = requests.get("https://api.bitfinex.com/v1/ticker/btcusd")
return bitFinexTick.json()['last_price']

这将返回以下内容

{"mid":"2276.85","bid":"2274.6","ask":"2279.1","last_price":"2275.0","timestamp":"1495763263.217562408"}

然后输出

"2275.0"

但是,使用websocket API时,响应不会标记,例如下面。

[5, 2306.9, 0.0989, 2307.2, 0.07409371, -176.49194056, -0.0711, 2307.2, 55446.734771, 2690, 2141.1]

bitfinex文档后面的数据格式如下。

[
   "<CHANNEL_ID>",
   "<BID>",
   "<BID_SIZE>",
   "<ASK>",
   "<ASK_SIZE>",
   "<DAILY_CHANGE>",
   "<DAILY_CHANGE_PERC>",
   "<LAST_PRICE>",
   "<VOLUME>",
   "<HIGH>",
   "<LOW>"
]

现在我的问题是,如何仅从json数组中专门提取LAST_PRICE并将其分配给结果?

感谢一百万人的帮助!

1 个答案:

答案 0 :(得分:0)

所以你在python中有什么是正确的列表吗?

所以你只是这样做:

return bitFinexTick.json()[7]

而不是

return bitFinexTick.json()['last_price']

这是因为他们没有返回'字典' - 他们很好地命名键和值,只是一个值列表。

所以你知道你想要的值(last_price)总是列表中的第8个值。因此,当我们开始在Python中将索引计数为0时,该值的索引为7。