Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -12,7 +12,7 @@ def is_valid_url(url):
|
|
12 |
|
13 |
def convert_to_text(url):
|
14 |
if not is_valid_url(url):
|
15 |
-
return "Ошибка: Введите корректный URL.", "" # Возвращаем сообщение об
|
16 |
|
17 |
try:
|
18 |
# Устанавливаем заголовки, чтобы имитировать запрос от браузера
|
@@ -26,41 +26,40 @@ def convert_to_text(url):
|
|
26 |
status = f"Статус запроса: {response.status_code}"
|
27 |
content_length = f"Размер содержимого: {len(response.text)} символов"
|
28 |
results = f"{status}\n{content_length}"
|
29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
except requests.exceptions.RequestException as e:
|
31 |
-
return f"Ошибка: {e}", "" # Возвращаем сообщение об
|
32 |
|
33 |
-
#
|
34 |
-
|
35 |
-
<script>
|
36 |
-
function copyText() {
|
37 |
-
const text = document.querySelector("#output-text textarea").value;
|
38 |
-
navigator.clipboard.writeText(text).then(() => {
|
39 |
-
alert("Текст скопирован в буфер обмена!");
|
40 |
-
}).catch(() => {
|
41 |
-
alert("Не удалось скопировать текст.");
|
42 |
-
});
|
43 |
-
}
|
44 |
-
</script>
|
45 |
-
<button onclick="copyText()">Скопировать текст</button>
|
46 |
-
"""
|
47 |
|
48 |
# Создаем интерфейс Gradio
|
49 |
-
with gr.Blocks() as demo:
|
50 |
gr.Markdown("## Конвертер ссылки в текст")
|
51 |
-
gr.Markdown("Введите ссылку на любой сайт, чтобы получить его текстовое содержимое и
|
52 |
|
53 |
with gr.Row():
|
54 |
url_input = gr.Textbox(label="Введите URL", placeholder="https://example.com")
|
55 |
|
56 |
with gr.Row():
|
57 |
results_output = gr.Textbox(label="Результаты запроса", interactive=False)
|
58 |
-
text_output = gr.Textbox(label="Текстовое содержимое", interactive=True
|
59 |
|
60 |
-
gr.
|
|
|
|
|
61 |
|
62 |
submit_button = gr.Button("Загрузить")
|
63 |
-
submit_button.click(fn=convert_to_text, inputs=url_input, outputs=[results_output, text_output])
|
|
|
|
|
|
|
64 |
|
65 |
# Запускаем интерфейс
|
66 |
demo.launch()
|
|
|
12 |
|
13 |
def convert_to_text(url):
|
14 |
if not is_valid_url(url):
|
15 |
+
return "Ошибка: Введите корректный URL.", "", None # Возвращаем сообщение об ошибке, пустую строку и None для файла
|
16 |
|
17 |
try:
|
18 |
# Устанавливаем заголовки, чтобы имитировать запрос от браузера
|
|
|
26 |
status = f"Статус запроса: {response.status_code}"
|
27 |
content_length = f"Размер содержимого: {len(response.text)} символов"
|
28 |
results = f"{status}\n{content_length}"
|
29 |
+
|
30 |
+
# Сохраняем текстовое содержимое в файл
|
31 |
+
file_path = "downloaded_content.txt"
|
32 |
+
with open(file_path, "w", encoding="utf-8") as file:
|
33 |
+
file.write(response.text)
|
34 |
+
|
35 |
+
return results, response.text, file_path # Возвращаем результаты, содержимое и путь к файлу
|
36 |
except requests.exceptions.RequestException as e:
|
37 |
+
return f"Ошибка: {e}", "", None # Возвращаем сообщение об ошибке, пустую строку и None для файла
|
38 |
|
39 |
+
# Подключаем CSS-файл
|
40 |
+
css = "app.css"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
# Создаем интерфейс Gradio
|
43 |
+
with gr.Blocks(css=css) as demo:
|
44 |
gr.Markdown("## Конвертер ссылки в текст")
|
45 |
+
gr.Markdown("Введите ссылку на любой сайт, чтобы получить его текстовое содержимое и скачать его в виде .txt файла.")
|
46 |
|
47 |
with gr.Row():
|
48 |
url_input = gr.Textbox(label="Введите URL", placeholder="https://example.com")
|
49 |
|
50 |
with gr.Row():
|
51 |
results_output = gr.Textbox(label="Результаты запроса", interactive=False)
|
52 |
+
text_output = gr.Textbox(label="Текстовое содержимое", interactive=True)
|
53 |
|
54 |
+
with gr.Row():
|
55 |
+
download_button = gr.Button("Скачать в .txt", elem_classes="download-button")
|
56 |
+
file_output = gr.File(label="Скачать файл", visible=False) # Скрытый компонент для скачивания файла
|
57 |
|
58 |
submit_button = gr.Button("Загрузить")
|
59 |
+
submit_button.click(fn=convert_to_text, inputs=url_input, outputs=[results_output, text_output, file_output])
|
60 |
+
|
61 |
+
# Показываем кнопку "Скачать в .txt" только если есть файл для скачивания
|
62 |
+
download_button.click(fn=lambda: file_output.update(visible=True), outputs=file_output)
|
63 |
|
64 |
# Запускаем интерфейс
|
65 |
demo.launch()
|