import gradio as gr
import requests
from bs4 import BeautifulSoup
def get_url_content(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return "URL에서 콘텐츠를 가져오는 데 실패했습니다."
def parse_html(html_content):
soup = BeautifulSoup(html_content, 'html.parser')
# 원하는 HTML 요소를 파싱하여 반환
# 예: soup.find_all('p') 등
return soup.prettify()
# Gradio 인터페이스 함수
def gradio_fetch_and_parse(url):
html_content = get_url_content(url)
parsed_content = parse_html(html_content)
return parsed_content
def get_main_content(html_content):
soup = BeautifulSoup(html_content, 'html.parser')
# 예: 본문 내용이
안에 있다고 가정
main_content = soup.find('div', class_='main-content')
return main_content.get_text(strip=True) if main_content else ''
def format_script(text):
# 텍스트를 문장별로 분리
sentences = text.split('.')
# 2문장씩 묶어서 스크립트 형태로 작성
script = ""
for i in range(0, min(len(sentences), 10), 2):
script += sentences[i].strip() + '. '
if i+1 < len(sentences):
script += sentences[i+1].strip() + '\n'
return script
# Gradio 인터페이스 함수
def gradio_fetch_and_format_script(url):
html_content = get_url_content(url)
main_content = get_main_content(html_content)
return format_script(main_content)
# Gradio 인터페이스 구성
iface_html = gr.Interface(
fn=gradio_fetch_and_parse,
inputs=gr.Textbox(label="URL을 입력하세요"),
outputs=gr.Textbox(label="스크랩된 HTML 콘텐츠")
)
iface_script = gr.Interface(
fn=gradio_fetch_and_format_script,
inputs=gr.Textbox(label="URL을 입력하세요"),
outputs=gr.Textbox(label="영상용 스크립트")
)
# 두 인터페이스를 탭으로 구성하여 실행
iface_combined = gr.TabbedInterface(interfaces=[iface_html, iface_script],
tab_names=["HTML 보기", "스크립트 생성"])
iface_combined.launch()