git.fiddlerwoaroof.com
Raw Blame History
#!/usr/bin/python3
import sys
import email
import html2text
import markdown

data = sys.stdin.read()
msg = email.message_from_string(data)

payload = msg.get_payload()
text = payload
verbatim = False

if hasattr(payload, '__iter__'):
    if msg.get_content_maintype() == 'multipart':
        if msg.get_content_subtype == 'mixed':
            verbatim = True
        elif msg.get_content_subtype == 'alternative':
            print(text)
            for pl in payload:
                if pl.get_content_maintype == 'text':
                    text = pl.get_payload()
                    if pl.get_content_subtype == 'html':
                        text = html2text.html2text(text)
                else:
                    verbatim = True # Just because I don't want to handle it any more
else:
    if msg.get_content_maintype() == 'text' and msg.get_content_subtype() == 'html':
        text = html2text.html2text(text)

import email.mime.multipart
import email.mime.text
import email.mime.application
import subprocess
import tempfile

if verbatim == False:
    outer = email.mime.multipart.MIMEMultipart()
    for header, value in msg.items():
        outer[header] = value
    outer.attach(msg)
    tempfile = tempfile.NamedTemporaryFile()
    converter = subprocess.Popen(['/home/edwlan/.cabal/bin/pandoc', '-f', 'markdown', '-t', 'epub', '-o', tempfile.name], stdin=subprocess.PIPE)
    converter.communicate(text)
    with open(tempfile.name) as f:
        file = email.mime.application.MIMEApplication(f.read(), 'epub+zip')
        outer.attach(file)
    tempfile.close()
    msg = outer

print(msg)