File size: 1,931 Bytes
af20c67
7be0742
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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)