Microsoft MHTML 分解¶
MS-WORD で保存したという mht ファイルを受け取ったのだが、 手元の Word for Mac 2011 で開けない。
中身を less で覗いても、壊れているようには見えなかったので、 ソフトウェアの問題なのであろう。WORD に拘る必要も無いし、 簡単に使える分解ツールは無いものかとググっても、めぼしいものが見つからず、 自分で書いた方が早そうだったので、そうした。
#!/usr/bin/python
# encoding: utf-8
import os
import sys
import errno
import email
# ファイル名が格納されているフィールド
TOJ = 'Content-Location'
# 抽出するべきデータ型
TYPES = {"text/html", "image/jpeg"}
# 出力先
OUTDIR = "mht_contents"
# 出力先作成
try:
os.mkdir(OUTDIR)
except OSError, e:
if e.errno != errno.EEXIST:
raise RuntimeError
# ファイル読み込み
with open(sys.argv[1], "r") as fin:
msg = email.message_from_file(fin)
# マルチパート解析
for mpart in msg.get_payload():
# content type で選別
if mpart.get_content_type() not in TYPES:
continue
# 出力ファイル名を抽出
fn = mpart[TOJ].split("/")[-1]
# ファイル出力
with open(OUTDIR + "/" + fn, "wb") as fout:
fout.write(mpart.get_payload(decode=True))
ファイルで欲しければ ここ
から持っていくと良い。
第一引数で mht ファイル名を与えるようになっている。
まぁ、見れば解るか。Python 3 で動くかどうかは知らない。
前の投稿:
EML送信コマンド自作
次の投稿:
lv の仕様