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?
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.
Georg Pearce
knokte
Georg Pearce
knokte
Georg Pearce
vi.su.