vmgsplit.rb を、実際のデータで試したところ、なにやら From 不明のファイルが大量にできたので調べてみると、自分のところでは再現できていなかったパターンがあることが判明。ということで、きちんと対応すべく修正。
ついでに、出力パターンを、「From ごとに個々のファイルに」「From ごとの一括ファイルに」「メールフォルダごとの一括ファイルに」の三つとした。
多分、これで(ソフトバンク(というよりは旧ボーダフォン)の vMessage ファイルに関しては大丈夫かなと。
#vmgsplit.rb
require "time"
require "fileutils"
vmg = ''
@from = ''
@date = ''
@folder = ''
def create_file(text, file_path, file_name, fmode)
File.open("#{file_path}/#{file_name}.vmg", fmode) { |f|
f.puts(text)
f.puts("END:VMSG")
}
end
ARGV.each do |file|
File.foreach(file) do |line|
if line !~ /^END:VMSG/
vmg << line
@mtype = 'sms' if /^X-IRMC-TYPE:SMS/ =~ line
@mtype = 'inet' if /^X-IRMC-TYPE:INET/ =~ line
@folder = line.sub(/^X-VFG-FOLDERNO:/, "").chomp if /^X-VFG-FOLDERNO:/ =~ line
@from = line.slice(/<(.+)>/,1) if /^From:/ =~ line && @mtype == 'inet'
@from = line.sub(/^TEL:/, "").chomp if /^TEL:/ =~ line && @mtype == 'sms' && @from == ''
@date = Time.parse(line.sub(/^Date: /, "").chomp).strftime("%Y%m%d%H%M%S") if /^Date:/ =~ line
else
@from = 'unknown' if @from == nil || @from == ''
unless File.directory?("split/#{@from}")
FileUtils.mkdir_p("split/#{@from}")
FileUtils.mkdir_p(["pack/from", "pack/folder"]) unless File.directory?("pack")
create_file(vmg, "pack/from", @from, "w")
create_file(vmg, "pack/folder", @folder, "w")
end
create_file(vmg, "pack/from", @from, "a")
create_file(vmg, "pack/folder", @folder, "a")
create_file(vmg, "split/#{@from}", @date, "w")
vmg = ''
@from = ''
@date = ''
@mtype = ''
@folder = ''
end
end
end
気をよくしてブックマークなどのバックアップを見てみたら 08081400.vbm.huf などというファイル名になっている。これはハフマン符号化しているってことだろうか。ブックマークごときまでそんなことをする必要があるのだろうか、という疑問はともかく ruby でどうにかするライブラリとかあるんだろうか。と探しているところ。
最近のコメント