SnowFlash383935 commited on
Commit
a17fa67
·
verified ·
1 Parent(s): 023b796

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -15
app.py CHANGED
@@ -4,25 +4,41 @@ import zlib
4
 
5
  def load_and_display_info(gameFilePath: str):
6
  """Загружает файл и возвращает game.title + game объект для дальнейшей обработки"""
7
- with open(gameFilePath, "rb") as f:
8
- compressed_data = f.read()
9
- data = zlib.decompress(compressed_data)
10
- game = fanl_yp.decode.decode(data)
11
- title = getattr(game, 'title', 'Название не найдено')
12
- return title, game # Возвращаем game для последующего использования
 
 
 
 
 
 
13
 
14
  def process_save_file(game_obj, original_path: str):
15
  """Обрабатывает сохранение и возвращает путь к новому файлу"""
16
- output_path = original_path + "_fixed"
17
- output = fanl_yp.encode.encode(game_obj, output_path)
18
- output.flush()
19
- return output_path
 
 
 
 
 
 
 
 
 
 
20
 
21
  with gr.Blocks() as demo:
22
  gr.Markdown("## Обработка сохранений игры")
23
 
24
  with gr.Row():
25
- file_input = gr.File(label="Загрузите файл сохранения")
26
 
27
  title_output = gr.Textbox(label="Информация о сохранении", interactive=False)
28
 
@@ -37,12 +53,15 @@ with gr.Blocks() as demo:
37
  file_input.upload(
38
  fn=load_and_display_info,
39
  inputs=file_input,
40
- outputs=[title_output, game_state],
41
  queue=False
42
- ).then(
43
- fn=lambda: gr.update(interactive=True),
 
 
 
44
  inputs=None,
45
- outputs=process_button,
46
  queue=False
47
  )
48
 
 
4
 
5
  def load_and_display_info(gameFilePath: str):
6
  """Загружает файл и возвращает game.title + game объект для дальнейшей обработки"""
7
+ if gameFilePath is None:
8
+ return "", None, gr.update(interactive=False)
9
+
10
+ try:
11
+ with open(gameFilePath, "rb") as f:
12
+ compressed_data = f.read()
13
+ data = zlib.decompress(compressed_data)
14
+ game = fanl_yp.decode.decode(data)
15
+ title = getattr(game, 'title', 'Название не найдено')
16
+ return title, game, gr.update(interactive=True)
17
+ except Exception as e:
18
+ return f"Ошибка загрузки файла: {str(e)}", None, gr.update(interactive=False)
19
 
20
  def process_save_file(game_obj, original_path: str):
21
  """Обрабатывает сохранение и возвращает путь к новому файлу"""
22
+ if game_obj is None or original_path is None:
23
+ return None
24
+
25
+ try:
26
+ output_path = original_path + "_fixed"
27
+ output = fanl_yp.encode.encode(game_obj, output_path)
28
+ output.flush()
29
+ return output_path
30
+ except Exception as e:
31
+ raise gr.Error(f"Ошибка обработки файла: {str(e)}")
32
+
33
+ def clear_handler():
34
+ """Обработчик очистки файла"""
35
+ return "", None, gr.update(interactive=False)
36
 
37
  with gr.Blocks() as demo:
38
  gr.Markdown("## Обработка сохранений игры")
39
 
40
  with gr.Row():
41
+ file_input = gr.File(label="Загрузите файл сохранения", file_types=None)
42
 
43
  title_output = gr.Textbox(label="Информация о сохранении", interactive=False)
44
 
 
53
  file_input.upload(
54
  fn=load_and_display_info,
55
  inputs=file_input,
56
+ outputs=[title_output, game_state, process_button],
57
  queue=False
58
+ )
59
+
60
+ # Когда файл удален — очищаем все поля и блокируем кнопку
61
+ file_input.clear(
62
+ fn=clear_handler,
63
  inputs=None,
64
+ outputs=[title_output, game_state, process_button],
65
  queue=False
66
  )
67