diff options
Diffstat (limited to 'xml/be-mbox-to-xml')
-rwxr-xr-x | xml/be-mbox-to-xml | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/xml/be-mbox-to-xml b/xml/be-mbox-to-xml index e9077b1..9054cfd 100755 --- a/xml/be-mbox-to-xml +++ b/xml/be-mbox-to-xml @@ -22,13 +22,12 @@ Messages begin with a a From_ line, followed by RFC 822 email, followed by a blank line. """ -from mailbox import mbox, Message # the mailbox people really want an on-disk copy -import email.utils -import types - import base64 +import email.utils from libbe.encoding import get_encoding, set_IO_stream_encodings +from mailbox import mbox, Message # the mailbox people really want an on-disk copy from time import asctime, gmtime +import types from xml.sax import make_parser from xml.sax.handler import ContentHandler from xml.sax.saxutils import escape @@ -39,21 +38,32 @@ set_IO_stream_encodings(DEFAULT_ENCODING) def comment_message_to_xml(message, fields=None): if fields == None: fields = {} - fields[u'alt-id'] = message[u'message-id'] - fields[u'in-reply-to'] = message[u'in-reply-to'] - fields[u'from'] = message[u'from'] - fields[u'date'] = message[u'date'] - fields[u'content-type'] = message.get_content_type() - for k,v in fields.items(): + new_fields = {} + new_fields[u'alt-id'] = message[u'message-id'] + new_fields[u'in-reply-to'] = message[u'in-reply-to'] + new_fields[u'from'] = message[u'from'] + new_fields[u'date'] = message[u'date'] + new_fields[u'content-type'] = message.get_content_type() + for k,v in new_fields.items(): if v != None and type(v) != types.UnicodeType: fields[k] = unicode(v, encoding=DEFAULT_ENCODING) + elif v == None and k in fields: + new_fields[k] = fields[k] + for k,v in fields.items(): + if k not in new_fields: + new_fields.k = fields[k] + fields = new_fields if message.is_multipart(): ret = [] alt_id = fields[u'alt-id'] + from_str = fields[u'from'] + date = fields[u'date'] for m in message.walk(): if m == message: continue + fields[u'from'] = from_str + fields[u'date'] = date if len(ret) >= 0: fields.pop(u'alt-id') fields[u'in-reply-to'] = alt_id |