Der einfachste Weg, den MtGox-Wechselkurs über eine API zu erhalten?

Ich möchte eine einfache App erstellen, die jede Minute aktualisiert wird, um mir den aktuellen Wechselkurs von Mtgox mitzuteilen, aber ich habe ein Problem bei der Interpretation des JSON, das einige APIs zurückgeben:

  • Der schnelle Ticker von Mtgox gibt diesen JSON zurück . Die Frage ist, was ist der Wert, den ich abrufen muss? Es gibt viele und ich verstehe sie nicht, und ich finde keine richtigen Dokumente.

  • Die API von Bitcoincharts hat den Markets Data-Endpunkt und gibt den gewünschten Markt unter dem Symbol „mtgoxUSD“ zurück, sagt mir jedoch das Datum und die Uhrzeit des letzten Handels, des letzten Kaufs/Fragens, aber nicht den Wechselkurs von der neueste Handel .

Übersehe ich etwas?

Ich glaube, dass im JSON der „Jetzt“-Eintrag (letzte Zeile) der aktuelle Wechselkurs ist.
kann nicht sein, es hat diesen riesigen Wert: 1367714938558901
Entschuldigung, ich meinte die Zeile nach dem Bezeichner "last" - die erste Zeile ist last_local, die zweite ist last, etc etc.
Mmm, vielleicht haben Sie Recht, aber ich habe die Seite in Intervallen von etwa 10 Sekunden aktualisiert, und der Wert ändert sich nicht!!! Ich frage mich, ob es daran liegt, dass ich keinen registrierten Schlüssel verwende?
Ich habe die btcReport iOS-App, die diese API verwendet und nur einmal alle 60 Sekunden aktualisiert wird. Ich habe es gerade überprüft und es stimmt mit dem Wert überein, den ich für den Wechselkurs im Moment habe.
jetzt ist die aktuelle Zeit, auf die Nanosekunde. Präzision. (1367714938 - Sek. seit 1970; 558 - Mikrosek.; 901 - Nanosek.)

Antworten (3)

JSON kann etwas schwer zu lesen sein, da es im Allgemeinen ohne Zeichen wie Leerzeichen und Zeilenumbrüche bereitgestellt werden soll, die es für Menschen lesbar machen würden.

Hier ist die Ausgabe des schnellen Tickers:

{
  "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"
  }
}

Das Element „Ergebnis“ ist garantiert immer vorhanden, hat aber natürlich unterschiedliche Inhalte, je nachdem, ob der Anruf erfolgreich war oder nicht. Das "Daten"-Element enthält eine Reihe von Preisen, wobei jeder Name seinen Preis angibt.

Die meisten JSON-Parser in interpretierten Sprachen wie Ruby, PHP und Python parsen JSON in einen Hash oder ein Wörterbuch. Sie möchten den Wert des "Wert"-Schlüssels des "letzten" Schlüssels des "Daten"-Schlüssels.

Hier ist eine einzeilige Version in Ruby für den v2-Ticker:

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"]}'

Oder etwas lesbarer:

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

Hier ist eine Einzeiler-Version in Ruby für den alten Ticker:

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"]}'

Oder etwas lesbarer:

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, das sollte deine Frage beantworten,

import urllib2, json

x = float(json.loads(urllib2.urlopen('https://mtgox.com/api/1/BTCUSD/ticker').read())['return']['last']['value'])

print x

Dies gibt den letzten Wert für den MTGox-USD-Preis für Bitcoins zurück

Dies hier ist eine Bitcoin-Ticker-App, die den MTGox-Bitcoin-Preis mit einer kleinen Verzögerung anzeigt und sich selbst aktualisiert. Es unterstützt auch GBP, EUR und Yen. Dies ist der Link zum Blogbeitrag http://bitkapp.com/blog/bitcoin-price-ticker/

Der einfachste Weg, den Bitcoin-Wechselkurs ohne Selbstaktualisierungsfunktion zu erhalten, erfolgt durch das folgende Python-Skript.

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

Wenn Sie dieses Skript ausführen, öffnet es ein Fenster, das den aktuellen Preis in USD, EUR und GBP anzeigt.

Es tut mir leid für den vorherigen Post, da er offensichtlich nicht klar genug war.

WTF! Dies verwendet nicht nur den Durchschnittspreis (anstelle des letzten Handels), sondern verwendet auch Zahlen, um die Elemente im json zu lokalisieren!! Der schrecklichste Code, den ich je in einer sehr langen Zeit gesehen habe, Downvoting
Ich nehme an, Sie könnten eine Funktion definieren, die die JSON-Ausgabe durchsucht. Hasse es nicht, obwohl Mann, ich bin neu in all dieser Programmiersache. Hast du dir aber die Ticker-App angesehen?