Spaces:
Sleeping
Sleeping
crea la app
Browse files
app.py
ADDED
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env python3
|
2 |
+
|
3 |
+
import gradio as gr #interface gráfica
|
4 |
+
import requests
|
5 |
+
import re
|
6 |
+
|
7 |
+
def cotiza_btc(compra_prima, venta_prima):
|
8 |
+
|
9 |
+
#compra_prima = 6 #porcentaje
|
10 |
+
#venta_prima = 6 #porcentaje
|
11 |
+
url_yadio_BTC_ARS = 'https://api.yadio.io/convert/1/BTC/ARS'
|
12 |
+
url_p2p_buy = 'https://api.yadio.io/market/ads?currency=ARS&side=buy&limit=10' #10 resultados
|
13 |
+
url_p2p_sell = 'https://api.yadio.io/market/ads?currency=ARS&side=sell&limit=25' #25 resultados
|
14 |
+
|
15 |
+
#YADIO
|
16 |
+
|
17 |
+
global yadio_BTC_ARS
|
18 |
+
yadio_BTC_ARS = requests.get(url_yadio_BTC_ARS).text
|
19 |
+
yadio_BTC_ARS = re.search(r'"result":(\d+).\d*,', yadio_BTC_ARS) #captura precio
|
20 |
+
yadio_BTC_ARS = int(yadio_BTC_ARS[1])
|
21 |
+
|
22 |
+
#COMPRA
|
23 |
+
|
24 |
+
global compra
|
25 |
+
compra = yadio_BTC_ARS + (yadio_BTC_ARS * compra_prima / 100)
|
26 |
+
|
27 |
+
#VENTA
|
28 |
+
|
29 |
+
global venta
|
30 |
+
venta = yadio_BTC_ARS - (yadio_BTC_ARS * venta_prima / 100)
|
31 |
+
|
32 |
+
#BINANCE COMPRA
|
33 |
+
|
34 |
+
binancep2p_ARS_BUY = requests.get(url_p2p_buy).text
|
35 |
+
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
|
36 |
+
binancep2p_ARS_BUY_promedio = 0 #para sumar y promediar precios
|
37 |
+
for x in binancep2p_ARS_BUY:
|
38 |
+
binancep2p_ARS_BUY_promedio += int(x)
|
39 |
+
if not binancep2p_ARS_BUY_promedio == 0:
|
40 |
+
binancep2p_ARS_BUY_promedio = binancep2p_ARS_BUY_promedio/len(binancep2p_ARS_BUY) #promedio
|
41 |
+
|
42 |
+
#BINANCE VENTA
|
43 |
+
|
44 |
+
binancep2p_ARS_SELL = requests.get(url_p2p_sell).text
|
45 |
+
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
|
46 |
+
binancep2p_ARS_SELL_promedio = 0 #para sumar y promediar precios
|
47 |
+
for x in binancep2p_ARS_SELL:
|
48 |
+
binancep2p_ARS_SELL_promedio += int(x)
|
49 |
+
if not binancep2p_ARS_SELL_promedio == 0:
|
50 |
+
binancep2p_ARS_SELL_promedio = binancep2p_ARS_SELL_promedio/len(binancep2p_ARS_SELL) #promedio
|
51 |
+
|
52 |
+
#SALIDA
|
53 |
+
|
54 |
+
#return compra, compra_prima, venta, venta_prima, yadio_BTC_ARS, binancep2p_ARS_BUY_promedio, binancep2p_ARS_SELL_promedio
|
55 |
+
|
56 |
+
#SALIDA huggingface
|
57 |
+
|
58 |
+
micotizacion = f"Compra: {compra} ARS; Venta: {venta} ARS"
|
59 |
+
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"
|
60 |
+
|
61 |
+
return micotizacion, cotizacionexchanges
|
62 |
+
|
63 |
+
def cotiza_monto(monto, tipo): #tipo es compra o venta
|
64 |
+
|
65 |
+
if tipo == "compra":
|
66 |
+
global compra
|
67 |
+
son_satoshis = str(int(monto / compra * 100000000)) + " SATS"
|
68 |
+
son_pesos = "" #para que no se imprima a la salida
|
69 |
+
else:
|
70 |
+
global venta
|
71 |
+
son_pesos = str(int(monto * venta / 100000000)) + " ARS"
|
72 |
+
son_satoshis = "" #para que no se imprima a la salida
|
73 |
+
|
74 |
+
return "{}{}".format(son_satoshis, son_pesos)
|
75 |
+
|
76 |
+
## UI
|
77 |
+
|
78 |
+
with gr.Blocks(css="#cotizamonto_txt {color: #d43100}") as cotizabtc:
|
79 |
+
cotizabtc_inp_1 = gr.Slider(label="Compra prima", minimum=0, maximum=12, value=6, step=1)
|
80 |
+
cotizabtc_inp_2 = gr.Slider(label="Venta prima", minimum=0, maximum=12, value=6, step=1)
|
81 |
+
cotizabtc_out_1 = gr.Textbox(label="Mi cotización:")
|
82 |
+
cotizabtc_out_2 = gr.Textbox(label="Cotizaciones exchanges:")
|
83 |
+
|
84 |
+
cotizabtc_btn = gr.Button("cotizaciones")
|
85 |
+
cotizabtc_btn.click(fn=cotiza_btc, inputs=[cotizabtc_inp_1, cotizabtc_inp_2], outputs=[cotizabtc_out_1, cotizabtc_out_2])
|
86 |
+
|
87 |
+
#--- cotizamonto:
|
88 |
+
cotizamonto_inp_1 = gr.Slider(label="Monto:", minimum=100, maximum=50000, value=1000, step=100)
|
89 |
+
cotizamonto_inp_2 = gr.Radio(["compra", "venta"], label="tipo")
|
90 |
+
cotizamonto_out = gr.Textbox(label="Son:", elem_id="cotizamonto_txt")
|
91 |
+
|
92 |
+
cotizamonto_btn = gr.Button("cotizar!")
|
93 |
+
cotizamonto_btn.click(fn=cotiza_monto, inputs=[cotizamonto_inp_1, cotizamonto_inp_2], outputs=[cotizamonto_out])
|
94 |
+
|
95 |
+
#---------------
|
96 |
+
|
97 |
+
cotizabtc.launch()
|