Hola queridos amigos, hoy les traigo parte del código que necesitamos para llevar nuestra base de datos en un archivo txt y poder leerla y administrarla con PYTHON.
Recordemos el post anterior de esta serie donde pudimos ver como leer un archivo, crear un diccionario y usarlo como base de datos sobre un txt, esto para mi es muy interesante ya que un diccionario es muy veloz debido a que se ejecuta sobre la RAM de la maquina, si podemos extrapolar imagina Crackear una Wifi con WPA esto ahora mismo es posible con tablas Rainbows y bueno no me quiero adentrar en este tema pero las tablas rainbows usan este tipo de diccionarios para romper esas claves casi indescifrables, lo nombro solo por darles una idea de la velocidad de los diccionarios.
Bueno les comentaba del post anterior vimos como:
Lo que hacia el script era abrir el archivo de texto o txt, leerlo si no había nada creaba una nueva estructura que ya había pensado de antemano, luego llenaba los datos en esa estructura, si había algo en el archivo lo revisaba se esperaba un diccionario lo revisaba y iba revisando cada moneda que tuviera alguna cantidad en el Balance de Bittrex, si ya existía agregaba una nueva linea a esa moneda con el balance y la hora si no existía lo agregaba al diccionario original, ya mas adelante iremos viendo ejemplo en este post solo estamos repasando para ir mas adentro con este programa.
Ya luego de terminar debemos cerrar el archivo, y cada ves que se abra y se le ingresen datos sera como si de una Base de datos se tratara, muy sencilla de ver y mas adelante graficaremos las ganancias y perdidas y algunas proyecciones.
Aquí el script nuevo, ya que en el anterior era solo de ejemplo y no entraba a bittrex:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from bittrex import Bittrex
import urllib2
from bs4 import BeautifulSoup
import re, datetime
from prettytable import PrettyTable
bittrex = Bittrex("Tus Tokens de Bitrex aqui", "Tus Tokens de Bitrex aqui")
url = "http://www.eleconomista.es/cruce/BTCUSD"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page, "lxml")
valor_btc = soup.find_all('span',class_="accion1 Dif_23138 estado_23138" )
value_BTC_dolares = valor_btc[0].get_text()
value_BTC_dolares = float(value_BTC_dolares.replace(',','.'))
ahora = datetime.datetime.now()
print "Valor del Bitcoin: ", value_BTC_dolares, "$ , a las", ahora
get_balances = bittrex.get_balances
list_important = get_balances()[u'result']
list_balance = []
total_dolares_ask = []
total_dolares_bid = []
total_BTC_ask = []
total_BTC_bid = []
table_ask = PrettyTable([u'Moneda', u'Selling in BTC', u'Selling in USD', "Queantity"])
list_currency = []
fichero = open("fichero.txt")
dato = fichero.readline()
dato = dato.strip()
fichero.close()
for currency_currency in list_important:
balance = currency_currency[u'Balance']
currency = currency_currency[u'Currency']
list_currency.append(currency)
balance = float(balance)
if balance>0.00000:
market_search = "BTC-"+currency
valor_balance = float(balance)
if dato == "":
fecha_ahora = datetime.datetime.now()
dato = {currency: [{'balance': valor_balance, 'fecha_hora': fecha_ahora}]}
print dato, "EN IF"
elif currency not in dato:
fecha_ahora = datetime.datetime.now()
print currency, balance, balance, dato
dato_2 = { currency: [{'balance': valor_balance, 'fecha_hora': fecha_ahora}] }
print dato_2, type(dato_2)
dato = eval(dato)
dato.update(dato_2)
print dato, "EN elif"
else:
print dato, "EN ELSE"
dato = eval(dato)
if currency in dato:
diccionario_nuevo_currency = {}
fecha_ahora = datetime.datetime.now()
print dato[currency]
diccionario_nuevo_currency = {"balance": valor_balance,'fecha_hora' : fecha_ahora }
lista_dict_currency = dato[currency]
lista_dict_currency.append(diccionario_nuevo_currency)
text_archivo = open("fichero.txt" ,"w")
text_archivo.write(str(dato))
text_archivo.close()
fichero = open("fichero.txt")
dato = fichero.readline()
dato = dato.strip()
print dato, "IMPRIMIENDO EL DATO"
fichero.close()
print datetime.datetime.now()
Existe mucho por hacer mi meta es llegar a una proyección de si vendo esto y sube esto o aquello que pasaría, la grafica la sacare en Javascript espero les guste.
Aquí la salida con 2 ejecuciones:
{u'FC2': [{'balance': 1649.20421452, 'fecha_hora': datetime.datetime(2018, 1, 11, 13, 50, 16, 617061)}, {'balance': 1649.20421452, 'fecha_hora': datetime.datetime(2018, 1, 11, 15, 1, 49, 489088)}], u'SLING': [{'balance': 100.0, 'fecha_hora': datetime.datetime(2018, 1, 11, 13, 50, 34, 159460)}, {'balance': 100.0, 'fecha_hora': datetime.datetime(2018, 1, 11, 15, 1, 49, 490763)}], u'RDD': [{'balance': 3e-08, 'fecha_hora': datetime.datetime(2018, 1, 11, 13, 50, 31, 541970)}, {'balance': 3e-08, 'fecha_hora': datetime.datetime(2018, 1, 11, 15, 1, 49, 490199)}], u'BTC': [{'balance': 0.01257995, 'fecha_hora': datetime.datetime(2018, 1, 11, 13, 50, 15, 248246)}, {'balance': 0.01257995, 'fecha_hora': datetime.datetime(2018, 1, 11, 15, 1, 49, 47358)}], u'MZC': [{'balance': 1791.7287752, 'fecha_hora': datetime.datetime(2018, 1, 11, 13, 50, 30, 286909)}, {'balance': 1791.7287752, 'fecha_hora': datetime.datetime(2018, 1, 11, 15, 1, 49, 489620)}], u'XRP': [{'balance': 66.10136585, 'fecha_hora': datetime.datetime(2018, 1, 11, 13, 50, 37, 112639)}, {'balance': 66.10136585, 'fecha_hora': datetime.datetime(2018, 1, 11, 15, 1, 49, 491362)}]}
Tranquilos no tendrán que leer ese diccionario se los voy a servir en tablas y en Gráficas, según vayamos ganando o perdiendo en la moneda.
Bueno estoy muy contento ya que he hecho la mitad del trabajo solo queda: pasar los balances a dolares, pasar el tiempo a cada x minutos para leerlo mejor, visualizar todo en tablas y gráficas con python y luego en html con javascript.
Hasta la próxima feliz día, ejecuta el archivo y me cuentas :D
Dios te bendiga