« 成長の過程 | トップページ | ハートボイルド »

vmgsplit.rbを修正

 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 でどうにかするライブラリとかあるんだろうか。と探しているところ。

|
|

« 成長の過程 | トップページ | ハートボイルド »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28835/42163403

この記事へのトラックバック一覧です: vmgsplit.rbを修正:

« 成長の過程 | トップページ | ハートボイルド »