Spaces:
Sleeping
Sleeping
| 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() |