From 26d2d193294014175761e743a0d88d63df6c8c2e Mon Sep 17 00:00:00 2001 From: swrneko Date: Wed, 10 Sep 2025 21:20:29 +0300 Subject: [PATCH] move file logic to it's own class in handlers dir --- app.py | 31 ++++++++++--------------------- handlers/__init__.py | 0 handlers/fileHandlers.py | 23 +++++++++++++++++++++++ 3 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 handlers/__init__.py create mode 100644 handlers/fileHandlers.py diff --git a/app.py b/app.py index 00e7c0f..55d6ac4 100644 --- a/app.py +++ b/app.py @@ -1,14 +1,19 @@ import gradio as gr -from pathlib import Path # Подгрузка сервисов from services.llm import Llm from services.fasterWhisper import FasterWhisper from services.convertMdToPdf import ConvertMdToPdf +# Загрузка доп. модулей +from handlers.fileHandlers import FileHandlers + # Загрузка параметров конфигурации from config import * +# Объект для работы с файлами +fh = FileHandlers() + # Функция транскрибации def generateByCondition(api_key, llm_model, system_prompt, recognized_text, llm_temperature, is_pipeline_enabled, trigger, isSaveFile, filename, filenamePdf): llm = Llm(api_key) @@ -21,8 +26,8 @@ def generateByCondition(api_key, llm_model, system_prompt, recognized_text, llm_ pdf, unicodeText = ConvertMdToPdf().convertLatexToText(md) if isSaveFile: - savePdf(filenamePdf, pdf) - saveFile(filename, result) + fh.saveFile(filenamePdf, pdf, OUTPUT_PATH) + fh.saveFile(filename, result, OUTPUT_PATH) return result, unicodeText @@ -34,30 +39,14 @@ def generateByCondition(api_key, llm_model, system_prompt, recognized_text, llm_ pdf, unicodeText = ConvertMdToPdf().convertLatexToText(md) if isSaveFile: - savePdf(filenamePdf, pdf) - saveFile(filename, result) + fh.saveFile(filenamePdf, pdf, OUTPUT_PATH) + fh.saveFile(filename, result, OUTPUT_PATH) return result, unicodeText # если нет чекбокса и было событие change return gr.skip(), gr.skip() - -def savePdf(filename, pdf): - directory = Path(OUTPUT_PATH) - filePath = directory / filename - filePath.parent.mkdir(parents=True, exist_ok=True) - pdf.save(filePath) - -# Функция сохранеhния файла -def saveFile(filename, text): - directory = Path(OUTPUT_PATH) - filePath = directory / filename - filePath.parent.mkdir(parents=True, exist_ok=True) - filePath.write_text(text, encoding='utf-8') - -# ConvertMdToPdf().convert(text) - # Функция для динамического обновления кнопки в зависимости от состояния checkbox def updateButton(isChecked): if not isChecked: diff --git a/handlers/__init__.py b/handlers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/handlers/fileHandlers.py b/handlers/fileHandlers.py new file mode 100644 index 0000000..3fa15a0 --- /dev/null +++ b/handlers/fileHandlers.py @@ -0,0 +1,23 @@ +from pathlib import Path +from markdown_pdf import MarkdownPdf # Для аннотации типов + +class FileHandlers: + # Функция сохранения файла + def saveFile(self, filename, content, output_path): + ''' + Сохраняет текст или pdf из markdown_pdf в файл с указанным названием и директорией. + + Args: + :param filename: название файла; + :param content: содержание файла; + :param output_path: выходная диретория файла. + ''' + # Создание объекта директории + directory = Path(output_path) + filePath = directory / filename # Добавление пути директории + filePath.parent.mkdir(parents=True, exist_ok=True) # Создание директории если не существует + # Сохранение для разных типов + if type(content) == MarkdownPdf: + content.save(filePath) + elif type(content) == str: + filePath.write_text(content, encoding='utf-8')