X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=mimedecode.py;h=48a6aba65ff01450825798e128319e0479d4e917;hb=b4bcf7032c5374be2c52de0dd88c16bd36d9f040;hp=50f8a18675a5265700f2f4928208e169dc116f8d;hpb=2f5f5a47bcc3cc87ba568ca1ee3107218cb1d6b6;p=mimedecode.git diff --git a/mimedecode.py b/mimedecode.py index 50f8a18..48a6aba 100755 --- a/mimedecode.py +++ b/mimedecode.py @@ -1,10 +1,9 @@ #! /usr/bin/env python """Decode MIME message""" -from mimedecode_version import __version__, __author__, __copyright__, __license__ - import sys, os -import email +from mimedecode_version import __version__, \ + __author__, __copyright__, __license__ me = os.path.basename(sys.argv[0]) @@ -263,6 +262,18 @@ def totext(msg, instring): return s +mimetypes = None + +def _guess_extension(ctype): + global mimetypes + if mimetypes is None: + import mimetypes + mimetypes.init() + user_mime_type = os.path.expanduser('~/.mime.types') + if os.path.exists(user_mime_type): + mimetypes._db.read(user_mime_type) + return mimetypes.guess_extension(ctype) + def _save_message(msg, outstring, save_headers=False, save_body=False): for header, param in ( ("Content-Disposition", "filename"), @@ -284,6 +295,9 @@ def _save_message(msg, outstring, save_headers=False, save_body=False): fname = '' g.save_counter += 1 fname = str(g.save_counter) + fname + if '.' not in fname: + ext = _guess_extension(msg.get_content_type()) + if ext: fname += ext global output save_output = output @@ -307,8 +321,7 @@ def decode_part(msg): ctype = msg.get_content_type() if ctype: masks.append(ctype) - mtype = msg.get_content_maintype() - if mtype: + mtype = ctype.split('/')[0] masks.append(mtype + '/*') masks.append('*/*') @@ -583,6 +596,7 @@ if __name__ == "__main__": g.outfile = outfile output = outfile.write + import email msg = email.message_from_file(infile) for header, value in g.set_header_value: