Quiero hacer una aplicación simple que actualice cada minuto para decirme el tipo de cambio actual de Mtgox, pero tengo un problema al interpretar el JSON que devuelven algunas API:
El teletipo rápido de Mtgox devuelve este JSON . La pregunta es, ¿cuál es el valor que tengo que recuperar? Hay muchos y no los entiendo, y no encuentro los documentos adecuados.
La API de Bitcoincharts tiene el punto final de Markets Data , y devuelve el mercado que quiero bajo el símbolo "mtgoxUSD", sin embargo, me dice la fecha y hora de la última operación, la última compra/solicitud, pero no me dice el tipo de cambio de el último comercio .
¿Me estoy perdiendo de algo?
JSON puede ser un poco difícil de leer porque generalmente está destinado a ser servido sin caracteres como espacios y saltos de línea que lo harían legible por humanos.
Aquí está la salida del teletipo rápido:
{
"result":"success",
"data":{
"last_local":{
"value":"136.87303",
"value_int":"13687303",
"display":"$136.87",
"display_short":"$136.87",
"currency":"USD"
},
"last":{
"value":"136.87303",
"value_int":"13687303",
"display":"$136.87",
"display_short":"$136.87",
"currency":"USD"
},
"last_orig":{
"value":"136.87303",
"value_int":"13687303",
"display":"$136.87",
"display_short":"$136.87",
"currency":"USD"
},
"last_all":{
"value":"136.87303",
"value_int":"13687303",
"display":"$136.87",
"display_short":"$136.87",
"currency":"USD"
},
"buy":{
"value":"136.10500",
"value_int":"13610500",
"display":"$136.11",
"display_short":"$136.11",
"currency":"USD"
},
"sell":{
"value":"136.87250",
"value_int":"13687250",
"display":"$136.87",
"display_short":"$136.87",
"currency":"USD"
},
"now":"1381085718504609"
}
}
Siempre se garantiza que el elemento "resultado" estará allí, pero, por supuesto, tiene un contenido variable en función de si la llamada fue exitosa o no. El elemento "datos" contiene una serie de precios, y cada nombre indica su precio.
La mayoría de los analizadores JSON en lenguajes interpretados como Ruby, PHP y Python analizan JSON en un hash o diccionario. Desearía el valor de la clave "valor" de la clave "última" de la clave "datos".
Aquí hay una versión de una sola línea en Ruby para el ticker v2:
ruby -e '%w(open-uri json).each{|b| require b}; open("http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast") {|d| puts JSON.parse(d.read)["data"]["last"]["value"]}'
O algo un poco más legible:
require "open-uri"
require "json"
open("http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast") do |d|
json = JSON.parse(d.read)
puts json["data"]["last"]["value"]
end
Aquí hay una versión de una sola línea en Ruby para el teletipo antiguo:
ruby -e '%w(open-uri json).each{|b| require b}; open("https://mtgox.com/api/1/BTCUSD/ticker") {|d| puts JSON.parse(d.read)["return"]["last"]["value"]}'
O algo un poco más legible:
require "open-uri"
require "json"
open("https://mtgox.com/api/1/BTCUSD/ticker") do |d|
json = JSON.parse(d.read)
puts json["return"]["last"]["value"]
end
Ok, esto debería responder a tu pregunta,
import urllib2, json
x = float(json.loads(urllib2.urlopen('https://mtgox.com/api/1/BTCUSD/ticker').read())['return']['last']['value'])
print x
Esto devuelve el último valor del precio de MTGox USD para bitcoins
Esta es una aplicación de teletipo de bitcoin que muestra el precio de bitcoin de MTGox con un pequeño retraso y se actualiza automáticamente. También es compatible con GBP, EUR y Yen. Este es el enlace a la entrada del blog http://bitkapp.com/blog/bitcoin-price-ticker/
La forma más sencilla de recibir el tipo de cambio de bitcoin sin una función de actualización automática se realiza mediante el siguiente script de python.
import json
import urllib2
from Tkinter import *
url='http://api.bitcoincharts.com/v1/markets.json'
req=urllib2.Request(url)
response=urllib2.urlopen(req).read()
output=json.loads(response)
mtusd_price = output[-10]['avg']
mteur_price = output[31]['avg']
mtgbp_price = output[44]['avg']
MTUSD= 'USD' + ' ' + str(mtusd_price)
MTEUR= 'EUR' + ' ' + str(mteur_price)
MTGBP = 'GBP' + ' ' + str(mtgbp_price)
root= Tk()
root.title("Bitcoin Price")
root.geometry("250x100")
USD = Label(root, text=MTUSD)
EUR = Label(root, text=MTEUR)
GBP = Label(root, text=MTGBP)
USD.pack()
EUR.pack()
GBP.pack()
mainloop()
Cuando ejecute este script, se abrirá una ventana que muestra el precio en ese instante en USD, EUR y GBP.
Lo siento por la publicación anterior, ya que obviamente no fue lo suficientemente claro.
Jorge Pearce
tocar
Jorge Pearce
tocar
Jorge Pearce
vi.su.