Emil25 commited on
Commit
ebd9035
·
verified ·
1 Parent(s): 7047167

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -106
app.py DELETED
@@ -1,106 +0,0 @@
1
- import os
2
- import re
3
- import torch
4
- import streamlit as st
5
- import googleapiclient.discovery
6
- import pandas as pd
7
- from transformers import pipeline
8
- import matplotlib.pyplot as plt
9
- import seaborn as sns
10
-
11
-
12
- st.title('Анализатор комментариев :red[YouTube] :sunglasses:')
13
-
14
- # Получаем YouTube API KEY из secrets
15
- DEVELOPER_KEY = os.getenv("api_key_youtube")
16
-
17
- #if not DEVELOPER_KEY:
18
- # raise RuntimeError('Key is not set. Check your environment variables.')
19
-
20
-
21
- # Инициализируем модель Hugging Face для анализа тональности текста
22
- cls_sent = pipeline("sentiment-analysis", "blanchefort/rubert-base-cased-sentiment")
23
-
24
- st.markdown('***')
25
- st.sidebar.markdown('# Меню')
26
- st.sidebar.markdown('***')
27
-
28
- # Получаем id видеоролика из URL для отправки запроса
29
- pattern = r"(?<=v=)[\w-]+(?=&|\b)"
30
- url = st.sidebar.text_input('URL YouTube')
31
- match = re.search(pattern, url)
32
- if match:
33
- vidID = match.group()
34
- st.success('URL', icon="✅")
35
- else:
36
- st.warning('URL', icon="⚠️")
37
- vidID = 'iA6TZESpg3o'
38
-
39
- st.sidebar.markdown('***')
40
-
41
- btn_start = st.sidebar.button('Загрузить')
42
- if btn_start:
43
- # Запрос к YouTube API для получения комментариев к видео
44
- api_service_name = "youtube"
45
- api_version = "v3"
46
- youtube = googleapiclient.discovery.build(
47
- api_service_name, api_version, developerKey=DEVELOPER_KEY)
48
- request = youtube.commentThreads().list(
49
- part="snippet",
50
- videoId=vidID,
51
- maxResults=100
52
- )
53
- response = request.execute()
54
-
55
- comments = []
56
- # Преобразуем полученные комментарии в DataFrame
57
- for item in response['items']:
58
- comment = item['snippet']['topLevelComment']['snippet']
59
- comments.append([
60
- comment['authorDisplayName'],
61
- comment['publishedAt'],
62
- comment['updatedAt'],
63
- comment['likeCount'],
64
- comment['textDisplay']
65
- ])
66
- comments_df = pd.DataFrame(comments, columns=['author', 'published_at', 'updated_at', 'like_count', 'text'])
67
-
68
- # Получаем таблицу с комментариями на странице
69
- st.header('Комментарии из YouTube')
70
- selected_columns = ['text', 'author', 'published_at']
71
- comments_df = comments_df[selected_columns]
72
-
73
- res_list = []
74
- # Анализируем тональность комментария с помощью модели Hugging Face
75
- with st.spinner('Идет процесс обработки данных...'):
76
- res_list = cls_sent(comments_df['text'].to_list())
77
- s_label = f'Готово! Обработано {len(res_list)} комментариев.'
78
- st.success(s_label)
79
-
80
- # Выводим таблицу с результатами на странице
81
- full_df = pd.concat([pd.DataFrame(res_list), comments_df], axis=1)
82
- st.write(full_df)
83
- st.markdown('***')
84
-
85
- # Выводим heatmap комментариев по часам и датам
86
- st.header('Комментарии по часам и датам')
87
- full_df['published_at'] = pd.to_datetime(full_df['published_at'])
88
- full_df['Date'] = full_df['published_at'].dt.date
89
- full_df['Hour'] = full_df['published_at'].dt.hour
90
- pivot_table = full_df.pivot_table(index='Hour', columns='Date', values='text', aggfunc='count')
91
- plt.figure(figsize=(10, 6))
92
- sns.heatmap(pivot_table, cmap='YlGnBu')
93
- plt.title('Количество комментариев по часам и датам')
94
- plt.xlabel('Дата')
95
- plt.ylabel('Час')
96
- st.pyplot(plt)
97
- st.markdown('***')
98
-
99
- # Создаем круговую диаграмму
100
- #st.header('Эмоциональная окраска комментариев на YouTube')
101
- data = full_df['label'].value_counts()
102
- fig, ax = plt.subplots()
103
- plt.title("Эмоциональная окраска комментариев на YouTube")
104
- label = full_df['label'].unique()
105
- ax.pie(data, labels=label, autopct='%1.1f%%')
106
- st.pyplot(fig)