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') if main_content: text = main_content.get_text(strip=True) print("추출된 텍스트:", text) # 디버깅을 위한 로그 return text else: return '' def format_script(text): sentences = text.split('.') script = "" for i in range(0, min(len(sentences), 10), 2): line = sentences[i].strip() + '. ' if i+1 < len(sentences): line += sentences[i+1].strip() + '\n' script += line print("현재 스크립트:", script) # 디버깅을 위한 로그 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([iface_html, iface_script], ["HTML 보기", "스크립트 생성"]) iface_combined.launch()