Bitcoin Forum
June 22, 2024, 02:13:05 AM *
News: Voting for pizza day contest
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Programa en Python3 para guardar estadisticas de cada bloque  (Read 1011 times)
xcbtrader (OP)
Hero Member
*****
Offline Offline

Activity: 865
Merit: 1006


View Profile
January 22, 2016, 06:57:33 PM
Last edit: January 23, 2016, 08:52:38 AM by xcbtrader
 #1

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...

Anillos2
Legendary
*
Offline Offline

Activity: 1260
Merit: 1003


View Profile
January 22, 2016, 07:06:46 PM
 #2

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.  Tongue

xcbtrader (OP)
Hero Member
*****
Offline Offline

Activity: 865
Merit: 1006


View Profile
January 23, 2016, 09:00:28 AM
 #3

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.  Tongue

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

vgo
Legendary
*
Offline Offline

Activity: 2072
Merit: 1019



View Profile
January 23, 2016, 09:37:52 AM
 #4

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.
franckuestein
Legendary
*
Offline Offline

Activity: 1960
Merit: 1130


Truth will out!


View Profile WWW
February 06, 2016, 03:37:31 PM
 #5

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!

[ AVAILABLE SIGNATURE SPACE ]
xcbtrader (OP)
Hero Member
*****
Offline Offline

Activity: 865
Merit: 1006


View Profile
February 06, 2016, 07:20:44 PM
 #6

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

Saludos

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!