#!/usr/bin/env python3 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 #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 #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): #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 else: global venta son_pesos = str(int(monto * venta / 100000000)) + " ARS" son_satoshis = "" #para que no se imprima a la salida return "{}{}".format(son_satoshis, son_pesos) ## UI with gr.Blocks(css="#cotizamonto_txt {color: #d43100}") as cotizabtc: 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:", minimum=100, maximum=50000, value=1000, step=100) cotizamonto_inp_2 = gr.Radio(["compra", "venta"], label="tipo") cotizamonto_out = gr.Textbox(label="Son:", elem_id="cotizamonto_txt") cotizamonto_btn = gr.Button("cotizar!") cotizamonto_btn.click(fn=cotiza_monto, inputs=[cotizamonto_inp_1, cotizamonto_inp_2], outputs=[cotizamonto_out]) #--------------- cotizabtc.launch()