Image / app.py
Dmtlant's picture
Update app.py
7be0742 verified
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)