import streamlit as st import requests import time import validators import pandas as pd MAX_RETRIES = 3 def is_valid_youtube_url(url): # проверяем, является ли URL допустимым URL YouTube return validators.url(url) and ("youtube.com" in url or "youtu.be" in url) def make_request_put(url, query): retries = 0 while retries < MAX_RETRIES: try: response = requests.post(url, json={"url_video": query}) response.raise_for_status() # генерировать исключение, если ответ содержит ошибку return response.json() except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e: time.sleep(10) # подождать перед повторной попыткой retries += 1 st.error("error") return None def color_negative_red(val): color = 'red' if val == 'NEGATIVE' else 'grey' if val == 'NEUTRAL' else 'green' return f'color: {color}' url = st.text_input("YouTube url") clicked = st.button("Sentiment Analysis") if clicked and is_valid_youtube_url(url): data = make_request_put("https://macrdel-sentiment-summarize-youtube-comms.hf.space/comments", url) if data: data = pd.DataFrame(data) st.write(data.style.applymap(color_negative_red, subset=['sentiment'])) else: st.error("error url")