Spaces:
Sleeping
Sleeping
File size: 1,820 Bytes
8efe659 2fe2a42 13ac7c2 2fe2a42 13ac7c2 2fe2a42 13ac7c2 28ca0f2 1efe83d 13ac7c2 56c79b1 1efe83d 56c79b1 1efe83d 2fe2a42 56c79b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
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)
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,
"Cleaned Body": cleaned_text
}
return [email_info[key] for key in email_info]
with gr.Blocks() as demo:
gr.Markdown("## Email Info")
gr.Markdown("Enter the email content below to view its details.")
with gr.Row():
with gr.Column():
input_text = gr.Textbox(label="Email Content")
output_texts = [
gr.Textbox(label="Subject"),
gr.Textbox(label="From"),
gr.Textbox(label="To"),
gr.Textbox(label="Date"),
gr.Textbox(label="Message ID"),
gr.Textbox(label="Headers"),
gr.Textbox(label="Attachments"),
gr.Textbox(label="Cleaned Body", visible=False) # Initially hidden
]
button = gr.Button("Process Email")
with gr.Column():
output_cleaned_text = gr.Textbox(label="Cleaned Email Body")
button.click(
present,
inputs=input_text,
outputs=output_texts + [output_cleaned_text]
)
demo.launch()
|