Esta es una pregunta de programación bastante clásica, pero creo que es muy común para la comunidad de Bitcoin y sería útil tener el código disponible públicamente.
Mi preferencia es por un script php.
Bitpay publica sus tipos de cambio aquí: https://bitpay.com/api/rates
Si un artículo cuesta $ 10 USD, ¿cómo haría lo siguiente?
1) extraiga el tipo de cambio BTC/USD de la matriz en esta URL
2) Defina el precio, luego divida por el tipo de cambio
3) ¿Mostrar el precio BTC en una página HTML?
Guarde el código en un archivo PHP en el directorio web:
<?php
$url = "https://bitpay.com/api/rates";
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
$rate = $data[2]["rate"]; //$data[1] is outdated now, they have updated their json order. This new number 2 now fetches USD price.
$usd_price = 10; # Let cost of elephant be 10$
$bitcoin_price = round( $usd_price / $rate , 8 );
?>
<ul>
<li>Price: <?=$usd_price ?> $ / <?=$bitcoin_price ?> BTC
</ul>
Puede ser un ejemplo útil de psp (python):
<%psp
import urllib2;
import simplejson as json;
j = json.loads(urllib2.urlopen("https://data.mtgox.com/api/2/BTCUSD/money/ticker").read());
%>
<%=str(j["data"]["last"]["value"]) %>
O una línea de comando:
# /usr/bin/python -c 'import urllib2; import simplejson as json; j = json.loads(urllib2.urlopen("https://data.mtgox.com/api/2/BTCUSD/money/ticker").read()); print str(j["data"]["last"]["value"]);'
Aquí hay un ejemplo que recupera los valores actuales actuales de la secuencia json en mtgox (actual, bajo, promedio, último y ahora). Está escrito en python, pero debería ser muy fácil trasladarlo al idioma de su elección.
#https://github.com/spudstud/alfred-bitcoin-workflow
#json is the standard python json parser
#urllib2 is a webpage fetching library
import json
import urllib2
#The url that provides the raw json stream
url="http://data.mtgox.com/api/2/BTCUSD/money/ticker"
#Open the url and turn it into an string containing the json
jsonURL=urllib2.urlopen(url)
#Convert the json text into a json object
jsonObject=json.load(jsonURL)
#Parse the desired values out of the json object
currentValue = jsonObject['data']['high']['display']
lowValue = jsonObject['data']['low']['display']
avgValue = jsonObject['data']['avg']['display']
lastValue = jsonObject['data']['last']['display']
nowValue = jsonObject['data']['now']
#Sometimes your json is not a string,you will need to use json.load, not json.loads:
print jsonObject
print currentValue
print lowValue
print avgValue
print lastValue
print nowValue
Dado que Mt. Gox está caído y el mercado está dividido, sugeriría usar la API de blockchain.info . Creo que combinan diferentes precios de mercado actuales para hacer un precio promedio. Esto es mucho más confiable que confiar en un solo mercado (vea lo que pasó con Mt. Gox). Además , blockchain.info es un sitio generalmente confiable.
Para cargar la información en PHP usa las funciones file_get_contents()
y json_decode()
. La mayoría de estas funciones están disponibles en otros lenguajes de programación de alta gama.
Un yo mayor, tal vez algo más sabio, respondiendo a mi propia pregunta:
Aquí hay algunos PHP para obtener el tipo de cambio.
<?php
$page = file_get_contents('https://bitpay.com/api/rates');
$my_array = json_decode($page, true);
$exchange_rate = $my_array[0]["rate"];
?>
Eventualmente encontré que era más fácil hacerlo en javascript, ya que también querrás mostrar el precio.
En cualquier lugar donde tenga un elemento con `class="price", esto agregará el equivalente de mBTC junto a él. Ajusta a tu gusto.
$(document).ready(function(){
$.getJSON('https://bitpay.com/api/rates', function(data){
var rate = data[0].rate;
$(".price").each(function(i){
var tex = $(this).text();
var usdPrice = Number(tex.replace(/[^0-9.-]+/g,""));
var mbtcPrice = 1000*usdPrice/rate;
$(this).append("( ~" + String(mbtcPrice.toFixed(0))+ " mBTC)");
});
});
});
Aquí hay un bash
comando que obtiene el precio al contado de Coinbase API (TM). Canaliza la respuesta a jq
, que la analiza y genera los valores especificados en el filtro que se le pasó. -r
elimina las comillas de su salida, que se pasa a sed
. sed
procesa los primeros 4 dígitos de esta salida, insertando una coma de miles y un signo de dólar. Tenga en cuenta que solo funciona para números de 4 dígitos (por lo que deberá modificarse en breve, reemplazando el '1' con un '2' ;-) La redirección de salida 2>/dev/null
oculta la curl
curses
interfaz:
curl --insecure https://coinbase.com/api/v1/prices/spot_rate 2>/dev/null | jq -r '.["amount"]' | sed 's/\([[:digit:]]\{1\}\)\([[:digit:]]\{3\}\)/\$\1,\2/g'
Oye, sé que este hilo tiene 3 años, pero de todos modos usé parte del código en esta página para hacer mi script porque no pude hacer que el código funcionara aquí...
import json
import urllib2
url="http://api.coindesk.com/v1/bpi/currentprice/EUR.json"
jsonURL=urllib2.urlopen(url)
jsonObject=json.load(jsonURL)
print jsonObject['bpi']['USD']['code']
print jsonObject['bpi']['USD']['rate']
Espero que esto ayude a los futuros visitantes.
Como bitpay realiza alguna actualización, este código le permite estar ya configurado
<?php $url = "https://bitpay.com/api/rates";
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
for ($i=1; $i <20 ; $i++) {
if($data[$i]["code"]=="USD")
$rate = $data[$i]["rate"];
}
$usd_price = 10; # Let cost of elephant be 10$
$bitcoin_price = round( $usd_price / $rate , 8 );?>
<ul> <li>Price: <?=$usd_price ?> $ / <?=$bitcoin_price ?> BTC</ul>
<?php
$url = "https://bitpay.com/api/rates";
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
$rate = $data[0]["rate"];
$rate1 = $data[1]["rate"];
$rate2 = $data[2]["rate"];
$rate145 = $data[145]["rate"];
?>
BTC/USD: <?=$rate?>
<br>
BTC/EURO: <?=$rate1?>
<br>
BTC/GBP: <?=$rate2?>
<br>
BTC/VND : <?=$rate145?>
Edité el código de la primera respuesta y este funciona bien
Marlin
usuario6203