QAway-to commited on
Commit
9aa2a23
·
1 Parent(s): 296469d

Base app.py interface v1.8

Browse files
Files changed (1) hide show
  1. app.py +23 -40
app.py CHANGED
@@ -2,54 +2,37 @@
2
  import gradio as gr
3
  import requests
4
  import pandas as pd
 
5
 
6
- # --------------------------------------------------------------
7
- # ⚙️ Функция: загрузка данных с открытого банковского API
8
- # --------------------------------------------------------------
9
  def fetch_bank_data():
10
- """Получаем список банков (пример: открытое API OpenBankProject)."""
11
- url = "https://api.openbankproject.com/obp/v4.0.0/banks"
12
  try:
13
- resp = requests.get(url, timeout=10)
14
- data = resp.json().get("banks", [])
15
- if not data:
16
- return "⚠️ Нет данных.", pd.DataFrame()
17
 
18
- # Преобразуем в таблицу
19
- df = pd.DataFrame([
20
- {
21
- "Название": b.get("full_name", ""),
22
- "ID": b.get("id", ""),
23
- "URL": b.get("website", ""),
24
- "Город": b.get("bank_code", "")
25
- }
26
- for b in data
27
- ])
28
- return "✅ Данные успешно загружены.", df.head(10)
29
  except Exception as e:
30
- return f"❌ Ошибка при загрузке данных: {e}", pd.DataFrame()
31
-
32
- # --------------------------------------------------------------
33
- # 🧱 Интерфейс Gradio
34
- # --------------------------------------------------------------
35
- with gr.Blocks(theme=gr.themes.Soft(), title="🏦 Bank API Viewer") as demo:
36
- gr.Markdown(
37
- "## 🏦 Open Banking Data Viewer\n"
38
- "Загружай данные с открытых банковских API и анализируй их прямо здесь."
39
- )
40
 
 
 
41
  with gr.Row():
42
  with gr.Column(scale=1):
43
- load_btn = gr.Button("🔄 Загрузить данные банков", variant="primary")
44
  with gr.Column(scale=3):
45
- status = gr.Textbox(label="Статус", value="Ожидание запроса...")
46
- table = gr.DataFrame(label="📋 Список банков", interactive=False)
47
-
48
- load_btn.click(
49
- fetch_bank_data,
50
- inputs=None,
51
- outputs=[status, table],
52
- show_progress=True,
53
- )
54
 
55
  demo.queue(max_size=32).launch(server_name="0.0.0.0", server_port=7860)
 
2
  import gradio as gr
3
  import requests
4
  import pandas as pd
5
+ from io import StringIO
6
 
 
 
 
7
  def fetch_bank_data():
8
+ """Загружаем курсы валют от Европейского Центробанка (пример открытых банковских данных)."""
 
9
  try:
10
+ url = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
11
+ r = requests.get(url, timeout=10)
12
+ r.raise_for_status()
 
13
 
14
+ # Простая XML-обработка через pandas
15
+ from xml.etree import ElementTree as ET
16
+ root = ET.fromstring(r.text)
17
+ data = []
18
+ for cube in root.findall(".//{*}Cube[@currency]"):
19
+ data.append({
20
+ "Валюта": cube.attrib["currency"],
21
+ "Курс к EUR": float(cube.attrib["rate"])
22
+ })
23
+ df = pd.DataFrame(data)
24
+ return "✅ Данные успешно загружены (ECB)", df
25
  except Exception as e:
26
+ return f"❌ Ошибка: {e}", pd.DataFrame()
 
 
 
 
 
 
 
 
 
27
 
28
+ with gr.Blocks(theme=gr.themes.Soft(), title="🏦 Banking Data Viewer") as demo:
29
+ gr.Markdown("## 🏦 Курсы валют от Европейского Центробанка (ECB)")
30
  with gr.Row():
31
  with gr.Column(scale=1):
32
+ btn = gr.Button("🔄 Загрузить данные", variant="primary")
33
  with gr.Column(scale=3):
34
+ status = gr.Textbox(label="Статус", value="Ожидание...")
35
+ table = gr.DataFrame(label="💶 Курсы валют", interactive=False)
36
+ btn.click(fetch_bank_data, None, [status, table], show_progress=True)
 
 
 
 
 
 
37
 
38
  demo.queue(max_size=32).launch(server_name="0.0.0.0", server_port=7860)