Created
April 4, 2018 20:45
-
-
Save rgoncalves-95/192d0da1ce53b5306565873e62c5a03e to your computer and use it in GitHub Desktop.
Script que descarga las transacciones realizadas en Bolívares en Localbitcoins
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
import urllib.request | |
import datetime | |
import time | |
import pandas as pd | |
comienzo = time.time() | |
def hacer_request(tid): | |
url = "https://localbitcoins.com/bitcoincharts/VEF/trades.json?since=" | |
file = urllib.request.urlopen(url+tid) | |
data = file.read().decode() | |
parsed_file = json.loads(data) | |
return parsed_file | |
# Localbitcoins tiene un máximo de 500 transacciones por request. El tid es la referencia única de cada transacción | |
# Para recolectar los datos del API con mayor libertad, opté por colocar los límites iniciales y finales del | |
# conjunto de transacciones que quería obtener. limite_inferior es el número de transacción por la cual | |
# el script empezará a buscar. Más abajo hay una condición en la que defino el límite final. | |
limite_inferior = "12500000" | |
limite_superior = 13000000 | |
hoy = time.time() | |
tid = [] | |
price = [] | |
date = [] | |
amount = [] | |
while hacer_request(limite_inferior)[-1]["date"] < hoy: | |
nuevo_tid = str(hacer_request(limite_inferior)[-1]["tid"]) | |
for x in hacer_request(limite_inferior): | |
fecha_larga = datetime.datetime.fromtimestamp(x['date']) | |
fecha_sin_horas = fecha_larga.strftime('%Y-%m-%d') | |
tid.append(x['tid']) | |
price.append(float(x['price'])) | |
date.append(datetime.datetime.strptime(fecha_sin_horas, '%Y-%m-%d')) | |
amount.append(float(x['amount'])) | |
limite_inferior = nuevo_tid | |
if int(limite_inferior) > limite_superior: | |
break | |
# El script me falla en mi pc si el rango de transacciones que coloco es muy amplio. No sé si es un problema | |
# de conexión. Recomiendo bandas pequeñas, como de 1 millón entre el tid inicial y el final | |
# Como referencia, las transacciones más recientes van por el tid 12 millones. | |
d = {'tid': tid, 'date': date, 'Amount (BTC)': amount, 'Price': price} | |
df = pd.DataFrame(data= d) | |
df = df.sort_values(by='date') | |
df = df.set_index('date') | |
final = time.time() | |
df.to_csv('transacciones.csv', sep= '\t') | |
print(df) | |
print("Tardé %s minutos en llegar a este resultado" % round((final - comienzo) / 60, 2)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment