Felguk commited on
Commit
66c6476
·
verified ·
1 Parent(s): 37ae21d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -22
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
- return results, response.text # Возвращаем результаты и содержимое
 
 
 
 
 
 
30
  except requests.exceptions.RequestException as e:
31
- return f"Ошибка: {e}", "" # Возвращаем сообщение об ошибке и пустую строку
32
 
33
- # HTML и JavaScript для кнопки "Скопировать текст"
34
- copy_button_html = """
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, elem_id="output-text")
59
 
60
- gr.HTML(copy_button_html) # Добавляем кнопку "Скопировать текст"
 
 
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()