Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -61,7 +61,7 @@ current_request_index = -1 # Изначально указывает на по
|
|
61 |
|
62 |
|
63 |
def download_current_message_database():
|
64 |
-
#
|
65 |
repos = {
|
66 |
'Storage_1': 'Редакторы',
|
67 |
'Storage_Ira': 'Ира',
|
@@ -69,13 +69,13 @@ def download_current_message_database():
|
|
69 |
'Storage_Sveta': 'Света'
|
70 |
}
|
71 |
|
72 |
-
#
|
73 |
base_url = 'https://api.github.com/repos/fruitpicker01/{repo}/contents'
|
74 |
|
75 |
data_list = []
|
76 |
|
77 |
headers = {
|
78 |
-
"Authorization": f"token {token}", # 'token'
|
79 |
"Content-Type": "application/json"
|
80 |
}
|
81 |
|
@@ -84,20 +84,20 @@ def download_current_message_database():
|
|
84 |
response = requests.get(url, headers=headers)
|
85 |
if response.status_code == 200:
|
86 |
files = response.json()
|
87 |
-
#
|
88 |
json_files = [file for file in files if file['name'].startswith("file") and file['name'].endswith('.json')]
|
89 |
for file_info in json_files:
|
90 |
file_name = file_info['name']
|
91 |
file_url = file_info['download_url']
|
92 |
|
93 |
-
#
|
94 |
try:
|
95 |
timestamp = file_name.split('_')[1].split('.')[0]
|
96 |
save_date = datetime.utcfromtimestamp(int(timestamp)).strftime('%Y-%m-%d %H:%M:%S')
|
97 |
except:
|
98 |
-
save_date = None #
|
99 |
|
100 |
-
#
|
101 |
file_response = requests.get(file_url)
|
102 |
if file_response.status_code == 200:
|
103 |
data = json.loads(file_response.text)
|
@@ -106,24 +106,24 @@ def download_current_message_database():
|
|
106 |
normalized_data['Автор'] = author
|
107 |
data_list.append(normalized_data)
|
108 |
else:
|
109 |
-
print(f"
|
110 |
else:
|
111 |
-
print(f"
|
112 |
|
113 |
if data_list:
|
114 |
df = pd.concat(data_list, ignore_index=True)
|
115 |
-
#
|
116 |
df['Дата сохранения'] = pd.to_datetime(df['Дата сохранения'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
|
117 |
-
#
|
118 |
df.drop_duplicates(inplace=True)
|
119 |
-
#
|
120 |
df.sort_values(by='Дата сохранения', ascending=False, inplace=True)
|
121 |
-
#
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
#
|
126 |
-
return
|
127 |
else:
|
128 |
return None
|
129 |
|
@@ -1852,7 +1852,7 @@ with gr.Blocks() as demo:
|
|
1852 |
|
1853 |
with gr.Row():
|
1854 |
download_btn = gr.Button("Выгрузить актуальную базу сообщений")
|
1855 |
-
|
1856 |
|
1857 |
# Очистка всех полей кроме prompt_display
|
1858 |
description_input.change(
|
@@ -2518,7 +2518,7 @@ with gr.Blocks() as demo:
|
|
2518 |
download_btn.click(
|
2519 |
fn=download_current_message_database,
|
2520 |
inputs=[],
|
2521 |
-
outputs=
|
2522 |
)
|
2523 |
|
2524 |
demo.launch()
|
|
|
61 |
|
62 |
|
63 |
def download_current_message_database():
|
64 |
+
# Сопоставление репозиториев GitHub и авторов
|
65 |
repos = {
|
66 |
'Storage_1': 'Редакторы',
|
67 |
'Storage_Ira': 'Ира',
|
|
|
69 |
'Storage_Sveta': 'Света'
|
70 |
}
|
71 |
|
72 |
+
# Базовый URL GitHub API
|
73 |
base_url = 'https://api.github.com/repos/fruitpicker01/{repo}/contents'
|
74 |
|
75 |
data_list = []
|
76 |
|
77 |
headers = {
|
78 |
+
"Authorization": f"token {token}", # 'token' из ваших переменных окружения
|
79 |
"Content-Type": "application/json"
|
80 |
}
|
81 |
|
|
|
84 |
response = requests.get(url, headers=headers)
|
85 |
if response.status_code == 200:
|
86 |
files = response.json()
|
87 |
+
# Фильтруем файлы, начинающиеся с 'file'
|
88 |
json_files = [file for file in files if file['name'].startswith("file") and file['name'].endswith('.json')]
|
89 |
for file_info in json_files:
|
90 |
file_name = file_info['name']
|
91 |
file_url = file_info['download_url']
|
92 |
|
93 |
+
# Извлекаем timestamp из имени файла
|
94 |
try:
|
95 |
timestamp = file_name.split('_')[1].split('.')[0]
|
96 |
save_date = datetime.utcfromtimestamp(int(timestamp)).strftime('%Y-%m-%d %H:%M:%S')
|
97 |
except:
|
98 |
+
save_date = None # или установить значение по умолчанию
|
99 |
|
100 |
+
# Загружаем и декодируем содержимое файла
|
101 |
file_response = requests.get(file_url)
|
102 |
if file_response.status_code == 200:
|
103 |
data = json.loads(file_response.text)
|
|
|
106 |
normalized_data['Автор'] = author
|
107 |
data_list.append(normalized_data)
|
108 |
else:
|
109 |
+
print(f"Ошибка при загрузке файла {file_name} из репозитория {repo_name}: {file_response.status_code}")
|
110 |
else:
|
111 |
+
print(f"Ошибка при доступе к репозиторию {repo_name}: {response.status_code}")
|
112 |
|
113 |
if data_list:
|
114 |
df = pd.concat(data_list, ignore_index=True)
|
115 |
+
# Преобразуем 'Дата сохранения' в datetime
|
116 |
df['Дата сохранения'] = pd.to_datetime(df['Дата сохранения'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
|
117 |
+
# Удаляем дубликаты
|
118 |
df.drop_duplicates(inplace=True)
|
119 |
+
# Сортируем по 'Дата сохранения' по убыванию
|
120 |
df.sort_values(by='Дата сохранения', ascending=False, inplace=True)
|
121 |
+
# Сохраняем Excel-файл во временное местоположение
|
122 |
+
temp_dir = tempfile.gettempdir()
|
123 |
+
output_file_path = os.path.join(temp_dir, 'messages.xlsx')
|
124 |
+
df.to_excel(output_file_path, index=False)
|
125 |
+
# Возвращаем путь к файлу
|
126 |
+
return output_file_path
|
127 |
else:
|
128 |
return None
|
129 |
|
|
|
1852 |
|
1853 |
with gr.Row():
|
1854 |
download_btn = gr.Button("Выгрузить актуальную базу сообщений")
|
1855 |
+
download_file = gr.File(label="Скачать базу сообщений")
|
1856 |
|
1857 |
# Очистка всех полей кроме prompt_display
|
1858 |
description_input.change(
|
|
|
2518 |
download_btn.click(
|
2519 |
fn=download_current_message_database,
|
2520 |
inputs=[],
|
2521 |
+
outputs=download_file
|
2522 |
)
|
2523 |
|
2524 |
demo.launch()
|