import gradio as gr from pipeline import run_pipeline import os import urllib3 from uuid import uuid4 def process_url(url): try: # Проверяем что это ranobelib.me if not url.startswith("https://ranobelib.me"): return None, "Ошибка: Принимаются только ссылки с ranobelib.me" random_folder = str(uuid4()) # create output folder output_dir = f'output/{random_folder}' os.makedirs(output_dir, exist_ok=True) output_path = run_pipeline(url, output_dir=output_dir,progress=gr.Progress()) # Если файл создан успешно, возвращаем его и сообщение в статус if os.path.exists(output_path): return output_path, f"EPUB создан успешно: {output_path}" else: return None, "Ошибка: Файл не был создан" except Exception as e: raise e return None, f"Ошибка: {str(e)}" # Создаем интерфейс with gr.Blocks() as demo: gr.Markdown(""" # Конвертер ранобэ с сайта ranobelib.me в EPUB Удобный инструмент для создания электронных книг из любимых ранобэ. Программа автоматически соберет все тома и главы в единый EPUB-файл. ### Инструкция: 1. Скопируйте ссылку на ранобэ с сайта **ranobelib.me** 2. Вставьте её в поле ввода ниже 3. Нажмите кнопку "Получить Epub" и дождитесь завершения конвертации ### Пример ссылки: ``` https://ranobelib.me/ru/book/88265--kurasu-no-daikiraina-joshi-to-kekkon-suru-koto-ni-natta ``` ### Особенности: - Работает только с сайтом **ranobelib.me** - Время конвертации зависит от размера произведения - В готовый файл включаются: - Структурированное оглавление - Все иллюстрации в высоком качестве - Текст в удобном для чтения формате - EPUB-файл совместим со всеми современными читалками """) status_bar = gr.Label(label="Статус") with gr.Row(): with gr.Column(): url_input = gr.Textbox( label="URL ранобэ", placeholder="Вставьте ссылку на ранобэ с Ranobelib.me" ) with gr.Column(): output_files = gr.Files(label="Выходные файлы") convert_btn = gr.Button("Получить Epub") convert_btn.click( fn=process_url, inputs=url_input, outputs=[output_files,status_bar] ) if __name__ == "__main__": demo.launch()