Bitcoin Forum

Local => Español (Spanish) => Topic started by: xcbtrader on January 22, 2016, 06:57:33 PM



Title: Programa en Python3 para guardar estadisticas de cada bloque
Post by: xcbtrader on January 22, 2016, 06:57:33 PM
Buenas a todos.

Para los que les pueda interesar he hecho un programa en Python 3.5 para ir guardando en un fichero que después podemos exportar a excel, algunos datos de cada bloque generado en la blockchain:

Datos:
Numero del bloque; Fecha; Hora; Total bitcoins del bloque, Valor Bitcoin Btce, Valor Bitcoin Coinbase, Dificultad.

Creo que puede ser interesante para futuros análisis, por ejemplo de la oscilación del precio del bitcoin en función del volumen.
El programa, permite modificando pocas cosas, guardar más información.
Se tiene que dejar ejecutando para que vaya recuperando la información.
Consume muy pocos recursos, ya sea del PC o de la red. Conecta sólo una vez cada 2 minutos para comprobar si hay un bloque nuevo.

Evidentemente se puede sofisticar mucho más, pero como elemento de partida lo encuentro muy válido.

Un saludo

PROGRAMA:

Code:
__author__ = 'XcbTrader'
import urllib
import json
import requests
import time

blockLast = 0

while True:

try:
request = 'http://btc.blockr.io/api/v1/coin/info'
response = requests.get(request)
content = response.json()
block = content['data'] ['last_block'] ['nb']
if block > blockLast:
blockLast = block
request2 = 'http://btc.blockr.io/api/v1/block/info/' + str(block)
response2 = requests.get(request2)
content2 = response2.json()

valorB = str(content['data'] ['last_block'] ['time_utc'])
fechaB = valorB[8:10] + '/' + valorB[5:7] + '/' + valorB[0:4]
horaB = valorB[11:19]
dificultad = content['data'] ['last_block'] ['difficulty']
totalBitcoins = str(content2['data'] ['vout_sum'])
btce = str(content['data'] ['markets'] ['btce']['value'])
coinbase = str(content['data'] ['markets'] ['coinbase']['value'])
print()
print ('--------------------------------------------------------')
print ('Bloque: ' + str(block) + ' --- ' + fechaB + ' - ' + horaB)
print ('Total Bicoins en el Bloque: ' + totalBitcoins + ' btc')
print ('Precio Btce: ' + btce + ' $')
print ('Precio Coinbase: ' + coinbase + ' $')
print ('Dificultad: ' + str(dificultad))
print ('--------------------------------------------------------')
fichEstadist = 'EstadistBitcoin.txt'
fEstadist = open(fichEstadist, "a")
fEstadist.write(str(block) + ';' + fechaB + ';' + horaB + ';'+ totalBitcoins + ';' + btce + ';' + coinbase + ';' + str(dificultad))
fEstadist.write('\n')
fEstadist.close()
except:
print ('######## ERROR #########')
print('#',end="",flush=True)
time.sleep(120)

El programa es de libre uso/modificación, y se agradecen las mejoras...


Title: Re: Programa en Python3 para guardar estadisticas de cada bloque
Post by: Anillos2 on January 22, 2016, 07:06:46 PM
Gracias.

Un par de sugerencias, una es que si quieres que sea libre, tienes que poner una licencia libre (y si no es mejor poner Copyright o la licencia empleada de forma que la gente lo sepa). También te sugiero usar las etiquetas de código para separar el programa del resto de texto, algo tal que así:
Code:
__author__ = 'XcbTrader'
import urllib
import json
import requests
import time

blockLast = 0

while True:
   
   try:
      request = 'http://btc.blockr.io/api/v1/coin/info'
      response = requests.get(request)
      content = response.json()
      block = content['data'] ['last_block'] ['nb']
      if block > blockLast:
         blockLast = block
         request2 = 'http://btc.blockr.io/api/v1/block/info/' + str(block)
         response2 = requests.get(request2)
         content2 = response2.json()   
   
         valorB = str(content['data'] ['last_block'] ['time_utc'])
         fechaB = valorB[8:10] + '/' + valorB[5:7] + '/' + valorB[0:4]
         horaB = valorB[11:19]
         dificultad = content['data'] ['last_block'] ['difficulty']
         totalBitcoins = str(content2['data'] ['vout_sum'])
         btce = str(content['data'] ['markets'] ['btce']['value'])
         coinbase = str(content['data'] ['markets'] ['coinbase']['value'])
         print()
         print ('--------------------------------------------------------')
         print ('Bloque: ' + str(block) + ' --- ' + fechaB + ' - ' + horaB)
         print ('Total Bicoins en el Bloque: ' + totalBitcoins + ' btc')
         print ('Precio Btce: ' + btce + ' $')
         print ('Precio Coinbase: ' + coinbase + ' $')
         print ('Dificultad: ' + str(dificultad))
         print ('--------------------------------------------------------')
         fichEstadist = 'EstadistBitcoin.txt'
         fEstadist = open(fichEstadist, "a")
         fEstadist.write(str(block) + ';' + fechaB + ';' + horaB + ';'+ totalBitcoins + ';' + btce + ';' + coinbase + ';' + str(dificultad))
         fEstadist.write('\n')
         fEstadist.close()
   except:
      print ('######## ERROR #########')
   print('#',end="",flush=True)
   time.sleep(120)

Tengo que mirar si existe algún lenguaje tipo JavaScript para ejecutar fuera de la web, sería un gran invento para los que no nos gusta programar en Python.  :P


Title: Re: Programa en Python3 para guardar estadisticas de cada bloque
Post by: xcbtrader on January 23, 2016, 09:00:28 AM
Gracias.

Un par de sugerencias, una es que si quieres que sea libre, tienes que poner una licencia libre (y si no es mejor poner Copyright o la licencia empleada de forma que la gente lo sepa). También te sugiero usar las etiquetas de código para separar el programa del resto de texto, algo tal que así:
Code:
__author__ = 'XcbTrader'
import urllib
import json
import requests
import time

blockLast = 0

while True:
   
   try:
      request = 'http://btc.blockr.io/api/v1/coin/info'
      response = requests.get(request)
      content = response.json()
      block = content['data'] ['last_block'] ['nb']
      if block > blockLast:
         blockLast = block
         request2 = 'http://btc.blockr.io/api/v1/block/info/' + str(block)
         response2 = requests.get(request2)
         content2 = response2.json()   
   
         valorB = str(content['data'] ['last_block'] ['time_utc'])
         fechaB = valorB[8:10] + '/' + valorB[5:7] + '/' + valorB[0:4]
         horaB = valorB[11:19]
         dificultad = content['data'] ['last_block'] ['difficulty']
         totalBitcoins = str(content2['data'] ['vout_sum'])
         btce = str(content['data'] ['markets'] ['btce']['value'])
         coinbase = str(content['data'] ['markets'] ['coinbase']['value'])
         print()
         print ('--------------------------------------------------------')
         print ('Bloque: ' + str(block) + ' --- ' + fechaB + ' - ' + horaB)
         print ('Total Bicoins en el Bloque: ' + totalBitcoins + ' btc')
         print ('Precio Btce: ' + btce + ' $')
         print ('Precio Coinbase: ' + coinbase + ' $')
         print ('Dificultad: ' + str(dificultad))
         print ('--------------------------------------------------------')
         fichEstadist = 'EstadistBitcoin.txt'
         fEstadist = open(fichEstadist, "a")
         fEstadist.write(str(block) + ';' + fechaB + ';' + horaB + ';'+ totalBitcoins + ';' + btce + ';' + coinbase + ';' + str(dificultad))
         fEstadist.write('\n')
         fEstadist.close()
   except:
      print ('######## ERROR #########')
   print('#',end="",flush=True)
   time.sleep(120)

Tengo que mirar si existe algún lenguaje tipo JavaScript para ejecutar fuera de la web, sería un gran invento para los que no nos gusta programar en Python.  :P

Muchas gracias por las sugerencias.
Esto de la etiqueta CODE lo desconocía.
Ya lo he modificado.
Me sabe mal pero no conozco Java...

Saludos


Title: Re: Programa en Python3 para guardar estadisticas de cada bloque
Post by: vgo on January 23, 2016, 09:37:52 AM
Creo que estamos mejor en el general y no en Mercado y Economía, a falta de una sección técnica. Si no estáis de acuerdo, nos volvemos.


Title: Re: Programa en Python3 para guardar estadisticas de cada bloque
Post by: franckuestein on February 06, 2016, 03:37:31 PM
Gracias por compartirlo @xcbtrader, tienes pensado subirlo a Github o cualquier otra plataforma con toda la información del programa y licencias?
Creo que estaría genial y allí la gente podría incluso colaborar aportando nuevas funcionalidades y tú si quieres puedes incorporarlas al original.

Ya nos comentas!


Title: Re: Programa en Python3 para guardar estadisticas de cada bloque
Post by: xcbtrader on February 06, 2016, 07:20:44 PM
Gracias por compartirlo @xcbtrader, tienes pensado subirlo a Github o cualquier otra plataforma con toda la información del programa y licencias?
Creo que estaría genial y allí la gente podría incluso colaborar aportando nuevas funcionalidades y tú si quieres puedes incorporarlas al original.

Ya nos comentas!

Cuando tenga un ratito lo subiré...

ya tengo una cuenta en Github, donde actualmente he puesto el programa para crear direcciones bitcoin personalizadas..
https://github.com/xcbtrader/VanityBTC (https://github.com/xcbtrader/VanityBTC)

Saludos