create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import requests
|
3 |
+
import time
|
4 |
+
import validators
|
5 |
+
import pandas as pd
|
6 |
+
|
7 |
+
MAX_RETRIES = 3
|
8 |
+
|
9 |
+
def is_valid_youtube_url(url):
|
10 |
+
# проверяем, является ли URL допустимым URL YouTube
|
11 |
+
return validators.url(url) and ("youtube.com" in url or "youtu.be" in url)
|
12 |
+
|
13 |
+
def make_request_put(url, query):
|
14 |
+
retries = 0
|
15 |
+
while retries < MAX_RETRIES:
|
16 |
+
try:
|
17 |
+
response = requests.post(url, data={"url_video": query})
|
18 |
+
response.raise_for_status() # генерировать исключение, если ответ содержит ошибку
|
19 |
+
return response.json()
|
20 |
+
except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e:
|
21 |
+
time.sleep(5) # подождать перед повторной попыткой
|
22 |
+
retries += 1
|
23 |
+
st.error("")
|
24 |
+
return None
|
25 |
+
|
26 |
+
def color_negative_red(val):
|
27 |
+
color = 'red' if val == 'NEGATIVE' else 'grey' if val == 'NEUTRAL' else 'green'
|
28 |
+
return f'color: {color}'
|
29 |
+
|
30 |
+
|
31 |
+
url = st.text_input("YouTube url...")
|
32 |
+
clicked = st.button("")
|
33 |
+
|
34 |
+
if clicked and is_valid_youtube_url(url):
|
35 |
+
|
36 |
+
data = make_request_put("https://macrdel-sentiment-summarize-youtube-comms.hf.space/comments", url)
|
37 |
+
if data:
|
38 |
+
data = pd.DataFrame(data)
|
39 |
+
st.write(data.style.applymap(color_negative_red, subset=['sentiment']))
|
40 |
+
|
41 |
+
else:
|
42 |
+
st.error("error url")
|