import gradio as gr import requests from bs4 import BeautifulSoup from transformers import pipeline # Fungsi untuk mengambil dan mengekstrak teks dari URL def fetch_web_content(url): try: # Mengambil konten dari URL response = requests.get(url, timeout=10) response.raise_for_status() # Memeriksa apakah request berhasil # Parsing HTML dengan BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') # Mengambil teks dari elemen

(paragraf) sebagai contoh paragraphs = soup.find_all('p') text = ' '.join([para.get_text() for para in paragraphs]) if not text: return "Tidak ada teks yang ditemukan di halaman tersebut." return text[:2000] # Membatasi panjang teks untuk efisiensi except Exception as e: return f"Error saat mengambil konten: {str(e)}" # Memuat model ringkasan dari Hugging Face summarizer = pipeline('summarization', model='facebook/bart-large-cnn') # Fungsi untuk merangkum teks def summarize_text(text): if len(text) < 50: return "Teks terlalu pendek untuk dirangkum." try: summary = summarizer(text, max_length=150, min_length=30, do_sample=False) return summary[0]['summary_text'] except Exception as e: return f"Error saat merangkum: {str(e)}" # Fungsi utama untuk antarmuka Gradio def browse_and_process(url, summarize=False): content = fetch_web_content(url) if summarize: summary = summarize_text(content) return content, summary return content, "Ringkasan tidak diminta." # Membuat antarmuka Gradio iface = gr.Interface( fn=browse_and_process, inputs=[ gr.Textbox(label="Masukkan URL (contoh: https://example.com)"), gr.Checkbox(label="Ringkas konten menggunakan model Hugging Face") ], outputs=[ gr.Textbox(label="Konten dari Halaman Web"), gr.Textbox(label="Ringkasan (jika diminta)") ], title="Web Content Fetcher dengan Gradio", description="Masukkan URL untuk mengambil teks dari halaman web. Centang kotak untuk merangkum konten menggunakan model Hugging Face." ) # Menjalankan antarmuka iface.launch()