fruitpicker01 commited on
Commit
6d4c1a4
·
verified ·
1 Parent(s): d0aa415

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -20
app.py CHANGED
@@ -61,7 +61,7 @@ current_request_index = -1 # Изначально указывает на по
61
 
62
 
63
  def download_current_message_database():
64
- # GitHub repositories and authors mapping
65
  repos = {
66
  'Storage_1': 'Редакторы',
67
  'Storage_Ira': 'Ира',
@@ -69,13 +69,13 @@ def download_current_message_database():
69
  'Storage_Sveta': 'Света'
70
  }
71
 
72
- # Base GitHub API URL
73
  base_url = 'https://api.github.com/repos/fruitpicker01/{repo}/contents'
74
 
75
  data_list = []
76
 
77
  headers = {
78
- "Authorization": f"token {token}", # 'token' is from your environment variables
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
- # Filter files starting with '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
- # Extract timestamp from filename
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 # or set to some default
99
 
100
- # Download and decode file content
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"Error downloading file {file_name} from repo {repo_name}: {file_response.status_code}")
110
  else:
111
- print(f"Error accessing repo {repo_name}: {response.status_code}")
112
 
113
  if data_list:
114
  df = pd.concat(data_list, ignore_index=True)
115
- # Convert 'Дата сохранения' to datetime
116
  df['Дата сохранения'] = pd.to_datetime(df['Дата сохранения'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
117
- # Drop duplicates
118
  df.drop_duplicates(inplace=True)
119
- # Sort by 'Дата сохранения' descending
120
  df.sort_values(by='Дата сохранения', ascending=False, inplace=True)
121
- # Create Excel file in memory
122
- output = io.BytesIO()
123
- df.to_excel(output, index=False)
124
- output.seek(0) # Reset pointer
125
- # Return bytes data and filename as a tuple
126
- return (output.read(), "messages.xlsx")
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
- download_component = gr.Download(label="Скачать базу сообщений")
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=download_component
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()