from transformers import pipeline import gradio as gr import requests # Initialize the summarization pipeline summarizer = pipeline("summarization", model="facebook/bart-large-cnn", device=-1) # Function to fetch content from Wikipedia with a length cap def fetch_wikipedia_content(search_term, max_chars=10000): url = "https://en.wikipedia.org/w/api.php" params = { "action": "query", "format": "json", "prop": "extracts", "explaintext": True, "titles": search_term, "redirects": 1 # Follow redirects } try: response = requests.get(url, params=params) response.raise_for_status() data = response.json() page = next(iter(data["query"]["pages"].values())) content = page.get("extract", "") return content[:max_chars] if content else "⚠️ No content found for this topic." except requests.RequestException as e: return f"⚠️ Error fetching article: {e}" # Function to split text into manageable chunks def split_text_into_chunks(text, max_words=500): words = text.split() return [" ".join(words[i:i + max_words]) for i in range(0, len(words), max_words)] # Function to summarize text in chunks def summarize_text(text): chunks = split_text_into_chunks(text) summaries = [] for i, chunk in enumerate(chunks): try: chunk_word_count = len(chunk.split()) max_summary_length = min(120, max(50, chunk_word_count // 2)) # Adjust summary length summary = summarizer(chunk, max_length=max_summary_length, min_length=30, do_sample=False)[0]['summary_text'] summaries.append(summary) except Exception as e: summaries.append(f"⚠️ Error summarizing chunk {i + 1}: {str(e)}") return "\n\n".join(summaries) # Main function for Gradio def fetch_and_summarize(search_term): content = fetch_wikipedia_content(search_term) if content.startswith("⚠️"): return content return summarize_text(content) # Gradio Interface iface = gr.Interface( fn=fetch_and_summarize, inputs=gr.Textbox(lines=1, placeholder="Enter a Wikipedia topic", label="Wikipedia Topic"), outputs=gr.Textbox(label="Summarized Content"), title="Wikipedia Article Summarizer", description="Fetch and summarize Wikipedia articles efficiently. Just enter a topic to get started!", ) # Launch Gradio if __name__ == "__main__": iface.launch(debug=True)