Spaces:
Sleeping
Sleeping
File size: 6,322 Bytes
1399ead 240402d 9876ba9 240402d 9876ba9 240402d 1399ead 240402d ca742f0 1399ead 240402d ca742f0 1399ead ca742f0 1399ead ca742f0 240402d 1399ead 240402d ca742f0 1399ead 240402d 1399ead 240402d 1399ead 240402d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
import gradio as gr #interface gráfica
import requests
import re
def cotiza_btc(compra_prima, venta_prima):
#compra_prima = 6 #porcentaje
#venta_prima = 6 #porcentaje
url_yadio_BTC_ARS = 'https://api.yadio.io/convert/1/BTC/ARS'
url_p2p_buy = 'https://api.yadio.io/market/ads?currency=ARS&side=buy&limit=10' #10 resultados
url_p2p_sell = 'https://api.yadio.io/market/ads?currency=ARS&side=sell&limit=25' #25 resultados
#YADIO
global yadio_BTC_ARS
yadio_BTC_ARS = requests.get(url_yadio_BTC_ARS).text
yadio_BTC_ARS = re.search(r'"result":(\d+).\d*,', yadio_BTC_ARS) #captura precio
yadio_BTC_ARS = int(yadio_BTC_ARS[1])
#COMPRA
global compra
compra = yadio_BTC_ARS + (yadio_BTC_ARS * compra_prima / 100)
#VENTA
global venta
venta = yadio_BTC_ARS - (yadio_BTC_ARS * venta_prima / 100)
#BINANCE COMPRA
binancep2p_ARS_BUY = requests.get(url_p2p_buy).text
binancep2p_ARS_BUY = re.findall(r'"price":([0-9]+)[0-9.]*,"ad_id":"[0-9]+","ad_url":"https:\/\/p2p\.binance\.com', binancep2p_ARS_BUY) #extraigo varios precios
binancep2p_ARS_BUY_promedio = 0 #para sumar y promediar precios
for x in binancep2p_ARS_BUY:
binancep2p_ARS_BUY_promedio += int(x)
if not binancep2p_ARS_BUY_promedio == 0:
binancep2p_ARS_BUY_promedio = binancep2p_ARS_BUY_promedio/len(binancep2p_ARS_BUY) #promedio
binancep2p_ARS_BUY_promedio = round(binancep2p_ARS_BUY_promedio, 2)
#BINANCE VENTA
binancep2p_ARS_SELL = requests.get(url_p2p_sell).text
binancep2p_ARS_SELL = re.findall(r'"price":([0-9]+)[0-9.]*,"ad_id":"[0-9]+","ad_url":"https:\/\/p2p\.binance\.com', binancep2p_ARS_SELL) #extraigo varios precios
binancep2p_ARS_SELL_promedio = 0 #para sumar y promediar precios
for x in binancep2p_ARS_SELL:
binancep2p_ARS_SELL_promedio += int(x)
if not binancep2p_ARS_SELL_promedio == 0:
binancep2p_ARS_SELL_promedio = binancep2p_ARS_SELL_promedio/len(binancep2p_ARS_SELL) #promedio
binancep2p_ARS_SELL_promedio = round(binancep2p_ARS_SELL_promedio, 2)
#SALIDA
#return compra, compra_prima, venta, venta_prima, yadio_BTC_ARS, binancep2p_ARS_BUY_promedio, binancep2p_ARS_SELL_promedio
#SALIDA huggingface
micotizacion = f"Compra: {compra} ARS; Venta: {venta} ARS"
cotizacionexchanges = f"Yadio: {yadio_BTC_ARS} ARS; Binance P2P compra (promedio): {binancep2p_ARS_BUY_promedio} ARS; Binance P2P venta (promedio): {binancep2p_ARS_SELL_promedio} ARS"
return micotizacion, cotizacionexchanges
def cotiza_monto(monto, tipo, compra_prima, venta_prima): #tipo es compra o venta
if tipo == "compra":
global compra
son_satoshis = str(int(monto / compra * 100000000)) + " SATS"
son_pesos = "" #para que no se imprima a la salida
monto_en = "ARS"
son_satoshis_noprima = round(int(monto / yadio_BTC_ARS * 100000000)) #cambio sin prima
ganancia_compraSATS = round((monto / yadio_BTC_ARS * 100000000) -int(son_satoshis[:-5])) #ganancia en satoshis
ganancia_compraARS = round(ganancia_compraSATS / 100000000 * yadio_BTC_ARS, 0) #ganancia en ARS
ganancia_compraARS = str(ganancia_compraARS) + " ARS"
ganancia_ARS = ganancia_compraARS
detalles = f"Gano en sats: {ganancia_compraSATS} SATS; (+{compra_prima}%). Cambio sin prima: {son_satoshis_noprima} SATS"
else:
global venta
son_pesos = str(int(monto * venta / 100000000)) + " ARS"
son_satoshis = "" #para que no se imprima a la salida
monto_en = "SATS"
#son_pesos_noprima = int(monto * venta / 100000000) #cambio sin prima
son_pesos_noprima = round(monto / 100000000 * yadio_BTC_ARS) #cambio sin prima
ganancia_venta_ARS = round(son_pesos_noprima - int(son_pesos[:-4]), 0) #ganancia en ARS
ganancia_ventaSATS = round(monto * venta_prima /100)
ganancia_ARS = str(ganancia_venta_ARS) + " ARS"
detalles = f"Gano en sats: {ganancia_ventaSATS} SATS; (+{venta_prima}%). Cambio sin prima: {son_pesos_noprima} ARS"
#estilos y html para las salidas:
clases_css = "text-gray-500 text-[0.855rem] mb-2 block dark:text-gray-200 relative z-40 scroll-hide block gr-box gr-input w-full gr-text-input"
cotizamonto_out_style = "style='font-size: larger; background-color: #ffa500; color: #461000; text-align: center'"
salida_html = f"<div class='cotizamonto_out {clases_css}' {cotizamonto_out_style}>{monto} {monto_en} -> {son_satoshis}{son_pesos}</div>"
salida = salida_html
cotizamonto_ganancia_style = "style='font-size: larger; background-color: #c8ff00; color: #334600; text-align: center'"
ganancia_ARS_HTML = f"<div class='{clases_css}'{cotizamonto_ganancia_style}>gano:<br>{ganancia_ARS}</div>"
ganancia_ARS = ganancia_ARS_HTML
detalles_HTML = f"<div class='{clases_css}'>{detalles}</div>"
detalles = detalles_HTML
return salida, ganancia_ARS, detalles
## UI
with gr.Blocks() as cotizabtc:
with gr.Row():
cotizabtc_inp_1 = gr.Slider(label="Compra prima", minimum=0, maximum=12, value=6, step=1)
cotizabtc_inp_2 = gr.Slider(label="Venta prima", minimum=0, maximum=12, value=6, step=1)
cotizabtc_out_1 = gr.Textbox(label="Mi cotización:")
cotizabtc_out_2 = gr.Textbox(label="Cotizaciones exchanges:")
cotizabtc_btn = gr.Button("cotizaciones")
cotizabtc_btn.click(fn=cotiza_btc, inputs=[cotizabtc_inp_1, cotizabtc_inp_2], outputs=[cotizabtc_out_1, cotizabtc_out_2])
#--- cotizamonto:
cotizamonto_inp_1 = gr.Slider(label="Monto (ars/sats):", minimum=500, maximum=100000, value=1000, step=500)
cotizamonto_inp_2 = gr.Radio(["compra", "venta"], label="tipo")
with gr.Row():
with gr.Column():
with gr.Row():
cotizamonto_out = gr.HTML()
cotizamonto_ganancia_out = gr.HTML()
cotizamonto_detalle_out = gr.HTML()
cotizamonto_btn = gr.Button("cotizar!")
cotizamonto_btn.click(fn=cotiza_monto, inputs=[cotizamonto_inp_1, cotizamonto_inp_2, cotizabtc_inp_1, cotizabtc_inp_2], outputs=[cotizamonto_out, cotizamonto_ganancia_out, cotizamonto_detalle_out])
#---------------
cotizabtc.launch() |