import streamlit as st import requests import plotly.graph_objects as go from datetime import datetime import time # Заголовок приложения st.title("График криптовалют в реальном времени") # Выбор криптовалюты crypto_options = ["bitcoin", "ethereum", "litecoin", "dogecoin"] selected_crypto = st.selectbox("Выберите криптовалюту", crypto_options) # Функция для получения данных о цене криптовалюты def get_crypto_price(crypto): url = f"https://api.coingecko.com/api/v3/simple/price?ids={crypto}&vs_currencies=usd" response = requests.get(url) data = response.json() return data[crypto]['usd'] # Инициализация данных для графика prices = [] times = [] # Создание графика fig = go.Figure() # Обновление графика в реальном времени placeholder = st.empty() while True: # Получение текущей цены price = get_crypto_price(selected_crypto) current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # Добавление данных в списки prices.append(price) times.append(current_time) # Обновление графика fig.add_trace(go.Scatter(x=times, y=prices, mode='lines', name=selected_crypto)) fig.update_layout(title=f"Цена {selected_crypto.capitalize()} в USD", xaxis_title="Время", yaxis_title="Цена в USD") # Отображение графика placeholder.plotly_chart(fig, use_container_width=True) # Очистка трейсов, чтобы не накапливать старые данные fig.data = [] # Пауза на 10 секунд перед следующим обновлением time.sleep(10)