dc:date に時間を入れたい
2005-01-06
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 ならびに トラックバック ping URI
- http://diary.noasobi.net/2005/01/diary_050106a.html