pythonでガラホのメモ帳のvntファイルをtxtファイルに変換する

vntファイルのBODY部をtxtファイルに保存する。

経緯

vntファイルは、ガラケーというかガラホで使われている内蔵アプリケーションのメモ帳で使われている1つのアイテム分の送信時に使われるファイルの形式。ガラケーでも使われていただろう形式。今回使ったガラホはKYF37というもの。公式の製品リンク:

GRATINA KYF37 | 製品情報 | スマートフォン・携帯電話 | 京セラ
快適な通話機能と使い心地にこだわった、「GRATINA(グラティーナ) KYF37」の製品サイトです。

全件まとめてスマホに送りたかったが1件ずつしか送れないので、bluetoothを使って1件送ってみると受け取り側のスマホ(oppo reno5A)で認識できないファイル形式だよーというメッセージが表示された。それでもスマホ内のDownloads/Bluetooth/など(端末依存)に保存されているのでとりあえずそちらに全部(10件ほど)送った。

VNoteというAndroidアプリで認識できるかもしれないと思ったが、文字化けしていた。アプリはこちら:

VNote - Apps on Google Play
Simple note application that opens .VNT files.

よっていったんPCにvntファイルを移してtxtに変換してからスマホに移すことにした。

vntファイルとtxtファイルに変換するPCソフトもあるようだが、自分の環境ではエラーが出て動かなかった。

vntの形式

こんな形式になっているようだ:

BEGIN:VNOTE
VERSION:1.1
DCREATED:20210818T004640Z
LAST-MODIFIED:20210818T004640Z
BODY;CHARSET=Shift_JIS;ENCODING=QUOTED-PRINTABLE:<encoded_string_multiline>
END:VNOTE

BODYにメモ帳に打ち込んだ中身があるようだ。quoted-printable形式でエンコードされているらしい。 BEGIN:VNOTEと先ほどのAndroidアプリ名が一致しているのは単なる偶然。

おそらく、shift-jisのテキストをquoted-printableでエンコードしているように見えるので、pythonでこの部分をデコードすることにした。

なお、PCに移したファイルはmemo.vntmemo-<int>.vntという感じの連番で保存されている。

vntをtxtに変換

RFC1521: 5.1. Quoted-Printable Content-Transfer-EncodingRule#5のソフト改行によって、bodyの最終行以外の各行の末尾には、ファイル内の符号化とは関係のない改行(ソフト改行)を示す=が挿入されている。1行につき76文字と決まっているためこのルールがあるようだ。

このため、quoted-printableをデコードできるpythonモジュールquopriに渡す前に、これらのソフト改行を削除しておく。

このようになった:

このvnt_to_txt.pyファイルをmemo.vntなどと同じフォルダ・ディレクトリにおいてpython <vnt_to_txt.py>など実行すればOK!

保存されるtxtファイルはutf-8エンコーディングにした。

おわり

PCの変換ソフトが使えなかったのは意外だがpythonにモジュールがあって助かった。感謝。

以上です。

タイトルとURLをコピーしました