Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from mailparser import parse_from_string | |
| from bs4 import BeautifulSoup | |
| def accept_mail(name): | |
| email = parse_from_string(name) | |
| return email | |
| def clean_email(email): | |
| soup = BeautifulSoup(email.body, 'html.parser') | |
| for tag in soup.find_all(['style', 'link']): | |
| tag.decompose() | |
| cleaned_text = ' '.join(soup.get_text(separator=' ').split()) | |
| return cleaned_text | |
| def present(email_content): | |
| email = accept_mail(email_content) | |
| cleaned_text = clean_email(email) # Call clean_email to get cleaned text | |
| email_info = { | |
| "Subject": email.subject, | |
| "From": email.from_, | |
| "To": email.to, | |
| "Date": email.date, | |
| "Message ID": email.message_id, | |
| "Headers": email.headers, | |
| "Attachments": email.attachments | |
| } | |
| # Outputs are now organized as a list to match the structure for grouped outputs | |
| return [ | |
| [ | |
| email_info["Subject"], | |
| str(email_info["From"]), # Convert list to string for display | |
| str(email_info["To"]), # Convert list to string for display | |
| email_info["Date"], | |
| email_info["Message ID"], | |
| str(email_info["Headers"]), # Convert dictionary to string for display | |
| str(email_info["Attachments"]) # Convert list to string for display | |
| ], | |
| cleaned_text # Cleaned text is the second major block | |
| ] | |
| outputs = [ | |
| gr.components.Group( | |
| components=[ | |
| gr.components.Textbox(label="Subject"), | |
| gr.components.Textbox(label="From"), | |
| gr.components.Textbox(label="To"), | |
| gr.components.Textbox(label="Date"), | |
| gr.components.Textbox(label="Message ID"), | |
| gr.components.Textbox(label="Headers"), | |
| gr.components.Textbox(label="Attachments") | |
| ], | |
| label="Email Details" | |
| ), | |
| gr.components.Textbox(label="Cleaned Text") | |
| ] | |
| demo = gr.Interface( | |
| fn=present, | |
| inputs="text", | |
| outputs=outputs, | |
| title="Email Info", | |
| description="Enter the email content below to view its details.", | |
| layout="horizontal" # Arrange the major output groups horizontally | |
| ) | |
| demo.launch() | |