Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
from urllib.parse import urlparse | |
def is_valid_url(url): | |
"""Проверяет, является ли строка валидным URL.""" | |
try: | |
result = urlparse(url) | |
return all([result.scheme, result.netloc]) # Проверяем наличие схемы и домена | |
except: | |
return False | |
def convert_to_text(url): | |
if not is_valid_url(url): | |
return "Ошибка: Введите корректный URL.", "" # Возвращаем сообщение об ошибке и пустую строку | |
try: | |
# Устанавливаем заголовки, чтобы имитировать запрос от браузера | |
headers = { | |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" | |
} | |
response = requests.get(url, headers=headers) | |
response.raise_for_status() # Проверка на ошибки HTTP (например, 404, 500) | |
# Возвращаем результаты | |
status = f"Статус запроса: {response.status_code}" | |
content_length = f"Размер содержимого: {len(response.text)} символов" | |
results = f"{status}\n{content_length}" | |
return results, response.text # Возвращаем результаты и содержимое | |
except requests.exceptions.RequestException as e: | |
return f"Ошибка: {e}", "" # Возвращаем сообщение об ошибке и пустую строку | |
# HTML и JavaScript для кнопки "Скопировать" | |
copy_button_html = """ | |
<script> | |
function copyText() { | |
const text = document.querySelector("#output-text textarea").value; | |
navigator.clipboard.writeText(text).then(() => { | |
alert("Текст скопирован!"); | |
}); | |
} | |
</script> | |
<button onclick="copyText()">Скопировать текст</button> | |
""" | |
# Создаем интерфейс Gradio | |
with gr.Blocks() as demo: | |
gr.Markdown("## Конвертер ссылки в текст") | |
gr.Markdown("Введите ссылку на любой сайт, чтобы получить его текстовое содержимое и результаты запроса.") | |
with gr.Row(): | |
url_input = gr.Textbox(label="Введите URL", placeholder="https://example.com") | |
with gr.Row(): | |
results_output = gr.Textbox(label="Результаты запроса", interactive=False) | |
text_output = gr.Textbox(label="Текстовое содержимое", interactive=True) | |
gr.HTML(copy_button_html) # Добавляем кнопку "Скопировать" | |
submit_button = gr.Button("Загрузить") | |
submit_button.click(fn=convert_to_text, inputs=url_input, outputs=[results_output, text_output]) | |
# Запускаем интерфейс | |
demo.launch() |