朝顔日記

dc:date に時間を入れたい

publish
2005-01-06T19:40:50+09:00
tags
はてぶ

rNote 用の記事をアップロードするタイミングで dc:date に時間が入るようにしたいという、dc:date をどうしたものか をどうにかしてみました。

とりあえず、記事を書き出すときは適当な日付を入れておきます。時間は入れません。入れてもいいんですが、後で書き換わるので無駄です。で、記事をアップロードするときにファイルの中から <Date> の行を検索して、その時の日付+時間に置換してやることにしました。その置換のためのスクリプトが、以下の date.php です。

<?php
$file = $_SERVER["argv"][1];
$date = "<Date>".date("Y-m-d\TG:i:s")."</Date>";
$lines = file($file);
$fp = fopen($file,"w");
foreach ($lines as $l){
  $l = preg_replace("#<Date>.*?</Date>#",$date,$l);
  fwrite($fp,$l);
}
fclose($fp);
?>

php -q date.php hoge.xml といった感じで使います。

しかし、毎度 date.php の引数に該当の xml ファイルを手で渡すとかいう面倒なことはやってられないので、これを行うバッチファイルもスクリプトで生成することにします。というわけで、rNote の記事作成用の何か と、WinSCP は便利 で書いたスクリプトやバッチは以下のものに変わりました。


<?php
// 設定
$entries = "d:\\web\\noasobi\\diary\\entries\\";
$openbat = "d:\\web\\noasobi\\diary\\scp\\open.bat";
$updatebat = "d:\\web\\noasobi\\diary\\scp\\rnote.bat";
$downscr =  "d:\\web\\noasobi\\diary\\scp\\scpdown.scr";
$upscr =  "d:\\web\\noasobi\\diary\\scp\\scpup.scr";
$datescript = "d:\\web\\noasobi\\diary\\scp\\date.php";
$session = "セッション名";
$adminurl = "http://diary.noasobi.net/rnoteadmin.php";
$editor = "c:\\bin\\xyzzy\\xyzzycli.exe";
// 設定終わり

$year = date("Y");
$month = date("m");
$day = date("d");
$entry = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");

$dh = @opendir($entries.$year."\\".$month."\\");
if($dh==0){
  mkdir($entries.$year."\\".$month."\\");
  $dh = opendir($entries.$year."\\".$month."\\");
}
closedir($dh);

for($i=0; $i<25; $i++){
  $file = $entries.$year."\\".$month."\\diary_".date("y").date("m").$day.$entry[$i].".xml";
  if(!file_exists($file)){
    break;
  }
}

$fp = fopen($openbat,"w");
fwrite($fp,"$editor $file\n");
fclose($fp);

$fp = fopen($updatebat,"w");
fwrite($fp,"@echo off\n");
fwrite($fp,"php -q $datescript $file\n");
fwrite($fp,"d:\n");
fwrite($fp,"cd $entries$year\n");
fwrite($fp,"winscp3 $session /script=$upscr\n");
fwrite($fp,"start $adminurl\n");
fclose($fp);
?>

日記を書くときに起動する、diary.bat は以下


@echo off
d:
cd d:\web\noasobi\diary\entries\2005\
winscp3 yamato@noasobi.net /script=d:\web\noasobi\diary\scp\scpdown.scr
php -q d:\web\noasobi\diary\scp\diary.php
call d:\web\noasobi\diary\scp\open.bat

これを起動すると、適当な名前のファイルを xyzzy が開いてくれます。で、日記を書き終わったら、diary.php が生成する、rnote.bat を起動すれば、あとは自動的になんとかなるはずです。多分。:p)

「dc:date に時間を入れたい」へコメントをつける

書き込み時の挙動について
URI らしき文字列には自動的にリンクが張られます。また "<" や、">" は実体参照化されます。
スパム対策のため、リファラを切っていると投稿できません。

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2005/01/diary_050106a.html