| from summarizer import INPUT_MIN_SIZE | |
| from summarizer.models import summarizer_fr, summarizer_en | |
| from summarizer.utils import detect_language, read_file | |
| def generate_summary(text=None, file=None, min_length=30, max_length=100, do_sample=False): | |
| content = text or "" | |
| if file: | |
| content = read_file(file) | |
| content = content.strip() | |
| if not content or len(content.split()) < INPUT_MIN_SIZE: | |
| return "β οΈ Input too short or empty." | |
| # Fallback defaults if somehow None is passed | |
| min_len = min_len or 30 | |
| max_len = max_len or 100 | |
| # Model selection based on language detection | |
| lang = detect_language(content) | |
| if lang == "fr": | |
| summarizer = summarizer_fr | |
| elif lang == "en": | |
| summarizer = summarizer_en | |
| else: | |
| return f"β Unsupported language: {lang}" | |
| try: | |
| summary = summarizer(content, min_length=min_length, max_length=max_length, do_sample=do_sample) | |
| return summary[0]["summary_text"] | |
| except Exception as e: | |
| return f"β Error: {str(e)}" | |