move file logic to it's own class in handlers dir

This commit is contained in:
swrneko
2025-09-10 21:20:29 +03:00
parent fb7a03b16a
commit 26d2d19329
3 changed files with 33 additions and 21 deletions

31
app.py
View File

@@ -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:

0
handlers/__init__.py Normal file
View File

23
handlers/fileHandlers.py Normal file
View File

@@ -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')