Counter: 445, today: 1, yesterday: 1

内容

目的

皆さんご存知の通り私は後で日記を書くためにメモを携帯から自宅にメールしているわけですが、それを元に日記に書く際の効率を上げる。

後日更新日記文作成ツール携帯画像自動アップ&tag作成ツールとこれで日記作成効率化3兄弟。

機能の概要

ディレクトリ内に保存されたeml形式のメールをすべて開き、ファイル名とヘッダの日付とボディから、

日にち,時間及び内容

の文字列を作成しファイルに出力する。
1emlに対し1行出力する。ディレクトリごとに1つのtxtファイルを作成。
ファイル名(メールサブジェクト)とbodyを連結し、内容とする。
bodyの改行は削除し"。"で連結。
実行後出力ファイルを自動で開く。

実行イメージ

ディレクトリ構成

jikkou.bat  
eml2html.pl 
jcode.pl    
\091003\hogehoge.eml
        hugafuga.eml
\tst   \hogehoge.eml
        fugafuga.eml

といった感じ。
jcode.plはここなどから取得。

実行イメージ

jikkou.batをダブルクリックすると

ディレクトリ名を入力してください。

と出力されるので、

ディレクトリ名を入力してください。tst

等とうちこんでリターン。

入力イメージ

こんな感じでemlがある感じ。

C:\Documents and Settings\日向充\My Documents\31.書類\書きかけ日記\メールメモ>dir tst
2009/10/03  19:34       <DIR>          .
2009/10/03  19:34       <DIR>          ..
2009/10/01  19:16                1,074 エネルーピ完了.eml
2009/10/01  19:03                1,070 サンロード.eml
2009/09/27  13:19                1,311 ドラゴンボール改見終わり.eml
2009/10/01  19:06                1,074 ヨドバシカメラ.eml
2009/10/01  00:05                1,071 今日も昼階段.eml
2009/09/30  22:56                1,069 会社出た.eml
2009/10/01  15:04                1,066 会議終了.eml
2009/09/30  22:40                1,072 夕食は社食.eml
2009/09/30  02:33                1,065 寝るぜ.eml
2009/10/01  18:53                1,067 成蹊大学.eml
2009/09/30  12:27                1,072 階段。昨日も.eml
2009/10/01  02:11                1,360 電気5898.eml
              19 個のファイル              21,931 バイト
               2 個のディレクトリ   4,832,210,944 バイトの空き領域

出力イメージ

tst\out.txt
に下記のように出力される。

2009年09月27日(日),<p>13時19分頃ドラゴンボール改見終わり。最長老様。クリリンボール運ぶ。ごはんはベジータのボールをとりに。スーパーサイヤ人初めてでてきたような最長老様の発言。続けてフリーザ。ドドリアあたりにいってほしかったなぁもっと小出しに。</p>
2009年09月30日(水),<p>02時33分頃寝るぜ。</p>
2009年09月30日(水),<p>12時27分頃階段。昨日も。</p>
2009年09月30日(水),<p>22時40分頃夕食は社食。</p>
2009年09月30日(水),<p>22時56分頃会社出た。</p>
2009年10月01日(木),<p>00時05分頃今日も昼階段。</p>
2009年10月01日(木),<p>02時11分頃電気5898。</p>
2009年10月01日(木),<p>15時04分頃会議終了。</p>
2009年10月01日(木),<p>18時53分頃成蹊大学。</p>
2009年10月01日(木),<p>19時03分頃サンロード。</p>
2009年10月01日(木),<p>19時06分頃ヨドバシカメラ。</p>
2009年10月01日(木),<p>19時16分頃エネルーピ完了。</p>

あとは矩形処理を使ってブログに貼り付ける。
日にちごとに分けない方がよい。寝るまでをその日として日記をつけているので、日付そのものではいつの日記に属するか分からない。
時間で判断も難しい。(寝ていなくて朝7時とかを前の日の31時として日記書いたりもするので。。)
なのでこの出力形式が今のところベストかと。

↑だと9月27日のがbodyも書いてある例。

ソースイメージ

eml2html.pl

#!/usr/bin/perl

#$dir = $ARGV[0];
%youbi=("Mon"=>'月',
		"Tue"=>'火',
		"Wed"=>'水',
		"Thu"=>'木',
		"Fri"=>'金',
		"Sat"=>'土',
		"Sun"=>'日');
%months=("Jan"=>'01',
		"Feb"=>'02',
		"Mar"=>'03',
		"Apr"=>'04',
		"May"=>'05',
		"Jun"=>'06',
		"Jul"=>'07',
		"Aug"=>'08',
		"Sep"=>'09',
		"Oct"=>'10',
		"Nov"=>'11',
		"Dec"=>'12');
$count=0;

require "../jcode.pl";


sub ReadData{
	my $filename = $_[0];
	my $subject ="";
	my $date    ="";
	my $time    ="";
	my $body    ="";
	my $body_start=0;


	if($filename!~/noname/){
		$subject=$filename;
		$subject=~s/\.eml//g;
		&jcode::convert(\$subject, "euc");
		$subject .="。";
	}

	open(F,"$filename");


	while(<F>){
		&jcode::convert(\$_, "euc"); 
		 
#		if($_=~/^Subject:(.*)/){
#			&jcode::convert(\$1, "euc");
#			$subject="$1。";
#		}
		if($_=~/^Date: ([A-Za-z]{3}), ([0-9]{2}) ([A-Za-z]{3}) ([0-9]{4}) ([0-9]{2}):([0-9]{2})/){
			$date="$4年$months{$3}月$2日($youbi{$1})";
			$time="$5時$6分";
		}
		if($_ eq "\n"){
			$body_start=1;
		}
		if(($body_start==1) && ($_ ne "\n")){
			chomp($_);
			$body .="$_。";
		}

		
	}
#	$data{$date}{$time}= $subject . $body;
#	print FW "$date,<p>$time、$subject$body</p>\n";
	$data[$count]="$date,<p>$time頃$subject$body</p>\n";
	$count++;
	close(F);
}

#sub PrintData{
#	foreach my $date ( sort keys %data ){
#		print "$date";
#		foreach my $time (sort keys %{$data{$date}} ){
#			print "$date, $time, ". $data{$date}{$time} ."\n";
#		}
#	}
#
#}
sub PrintData{
	open(FW,">out.txt");
	my $ind=0;
	for($ind=0;$ind<$count;$ind++){
		print FW $data2[$ind];
	}

	close(FW);
}
opendir(DIR, '.');
while (defined($file = readdir(DIR))) {
	if($file =~/eml$/){
		&ReadData("$file");
	}
}
closedir(DIR);

@data2 = sort { $a cmp $b } @data; 

&PrintData;

jikkou.bat

set /p INP="ディレクトリ名を入力してください。"
echo ユーザー名は%INP%と入力されました!

cd %INP%
set PERL="C:\Documents and Settings\日向充\My Documents\08.Perl\bin\Perl.exe"
%PERL% ../eml2html.pl
start "" "out.txt"

改版履歴

091003(初版)

メモメモ/2009-10-03


  • またしてもPerlで作っちゃいました。緊急を要したので。。 -- 日向充 2009-10-03 (土) 20:06:55
  • [0-9]{4}年もエスケープする。 -- 日向充 2010-01-02 (土) 04:22:52
  • [0-9]{5,}もエスケープする。行末の。はあるかないか判断してから付与。 -- 2010-01-24 (日) 23:51:19



添付ファイル: filejikkou.bat_091003.txt 95件 [詳細] fileeml2html.pl_091003.txt 53件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-01-24 (日) 23:51:19 (2762d)