- これが
- こうなった
(当該の記事はhttps://ima.hatenablog.jp/entry/20060514/p1で読めます)
「ただいま村」ははてなブログ上にあり2011年11月に始めている(→最初の記事)。その前ははてなダイアリーの「Imamuraの日記」(d:id:Imamura)を更新していた(2008年1月1日~2018年12月31日)。「まんぷく::日記」(d:id:manpukuya)はさらにその前に書いていたもので、期間は2003年2月17日から2007年12月31日まで。
「まんぷく::日記」の内容は以前、「Imamuraの日記」に転記した。
- 当時の日記:テキスト処理に便利なソフトで日記を統合(https://ima.hatenablog.jp/entry/20110829/textoperation)
これ以降、「まんぷく::日記」の内容を修正するときは「Imamuraの日記」に転記したほうを書き換えていた。オリジナルの「まんぷく::日記」は放置である。でも「まんぷく::日記」を消したりはしなかった。「まんぷく::日記」へのリンクがリンク切れにならないようにしたかったから。
その後はてなダイアリーのサービス終了に合わせて、「Imamuraの日記」ははてなブログの「ただいま村」にインポート(統合)した。放置していた「まんぷく::日記」もリンク切れにならないよう、はてなブログへ移してある(https://manpukuya.hatenablog.jp/)。とはいえ「まんぷく::日記」から「ただいま村」へのリンクはないから、検索やリンクから「まんぷく::日記」のほうへ行ってしまうと「ただいま村」に新情報があっても気付かない。古い記事までしかたどり着かない人がいたら申し訳ないなーと思っていた。
「まんぷく::日記」の本文を「この記事は~へ移動しました」という内容に置き換えたい。でもどうやって全部の記事を書き換えたらいいだろうか。先日アイデアが出てきて実現できた。
例によって「はてなブログライター」を使った。「はてなブログライター」のセットアップ方法は以下。
- はてなブログにインポートしたダイアリーの内容をまとめて修正できるようにする方法 - ただいま村(https://ima.hatenablog.jp/entry/2019/02/01/170000)
はてなブログライターを使っているディレクトリでこの下の「transferunited.pl」を実行する。一部を除き、すべての記事の内容が「この記事は~へ移動しました」に置き換えられる。例外は「×年×月×日の記事:(URL)」というエントリで、これははてなダイアリー時代にあった「その日全体のタイトル」を1つの記事にしたものである。リンク先は「http://manpukuya.hatenablog.jp/entries/2003/02/17」など、その日付のエントリをまとめて表示するURL(日付の前が「entry」や「archive」ではなく「entries」)にしてある。この記事に限っては本文を「×年×月×日の記事をまとめ読み(現行のブログへ移動します):(URL)」などとし、URLは「http://ima.hatenablog.jp/entries/2003/02/17」のように「ただいま村」のものに置き換えた。
これで出力された「transferunited.txt」を「diary.txt」と置き換えてはてなブログライターを実行すれば、記事の本文が「~へ移動しました」や「×年×月×日の記事をまとめ読み」に置き換えられる。その際は「まんぷく::日記」から「ただいま村」へidコールが大量に送られないよう、「まんぷく::日記」をプライベートモードにした。記事は2003年から2007年いっぱいまで5年弱ぶんある。これをはてなブログライターがすべて修正するのに1時間以上かかった。
「まんぷく::日記」の最後の日に、明日からは「Imamuraの日記」を書いていくという告知がある。この記事は「移動しました」にせず元のままにしておいた。
- この日記は来年からd:id:Imamuraに書きます - まんぷく::日記(https://manpukuya.hatenablog.jp/entry/20071231/newdiary)
これで「まんぷく::日記」の本文は冒頭の画像のようになった。古いリンクなどから「まんぷく::日記」へ来た人も新しい「ただいま村」へ誘導できる。気分すっきりでよく眠れる。
関連記事
いくつかの場所で書いた古い日記を1つにまとめてきた歴史。
- (前掲)テキスト処理に便利なソフトで日記を統合(https://ima.hatenablog.jp/entry/20110829/textoperation)
- 2000年から2002年までの日記を転記(https://ima.hatenablog.jp/entry/20111010/diary)
- 1999年の日記を転記(https://ima.hatenablog.jp/entry/20111229/diary)
- 1997年〜1998年の日記をはてなダイアリーに転記(https://ima.hatenablog.jp/entry/20130216/drivediary)
- 22年分のはてなダイアリーをはてなブログにインポートした(https://ima.hatenablog.jp/entry/2019/01/29/000000)
こうやってまとめて何をするのかといえば、長年日記として過去をふり返りニヤニヤするのだった。
- はてなブログでは当面こうやって長年日記を読むことにした(https://ima.hatenablog.jp/entry/2019/07/20/110000)
transferunited.pl
#! /usr/local/bin/perl use 5.010; #■id:manpukuyaのはてなブログの記事を「~へ転記しました」というtransferunited.txtにするスクリプト #■「-yyyy年m月d日の記事:https://manpukuya.hatenablog.jp/yyyy/mm/dd」のエントリは「~へ転記しました」に置き換えない $outfilename = "transferunited.txt"; #出力ファイル名 $backupfilename = "transferunited_bak.txt"; #出力ファイルのバックアップファイル名(出力ファイルがすでにあったらバックアップする) if (-f $outfilename) { if (-f $backupfilename) { unlink $backupfilename; } rename $outfilename , $backupfilename; } @dirlist = glob("./????-??-??_??.txt"); foreach $infilename ( @dirlist ){ my $datafilename = "data/$infilename" . ".dat"; my $header = ""; open(IN1,"< $infilename"); open(OUT,">> $outfilename"); #■yyyy-mm-dd_nn.txtからエントリのタイトル($title)とヘッダ部分3行($header)を取得 my @main = <IN1>; my $title = $main[0]; $title =~ s/title: *//; chomp $title; for (my $i = 0; $i < 3; $i++) { $header .= $main[$i]; } $header =~ s/^title: *//; #■data/yyyy-mm-dd_nn.txt.datの末尾(エントリのURL)を$urlへ取得 open(IN2,"< $datafilename"); while (<IN2>) { push (@content , $_); } my $url = pop @content; $url =~ s/url: *//; chomp $url; #■移動しましたメッセージの組み立て $message = ""; if ($main[5] =~ /^\-\d{4}年\d+月\d+日の記事:http:\/\/manpukuya\.hatenablog\.jp\/entries\/\d{4}\/\d\d\/\d\d/) { my $num = @main; for ($j = 5; $j < $num; $j++) { $message .= @main[$j]; $message =~ s/^(\-\d{4}年\d+月\d+日の記事):http:\/\/manpukuya/$1をまとめ読み(現行のブログへ移動します):https:\/\/ima/ } } else { (my $newurl = $url) =~ s/manpukuya/ima/; $message = "この記事は以下へ移動しました。\n\n-→[" . $newurl . ":favicon]" . $title . "(" . $newurl . ")"; } #■全体を組み立ててファイル出力 ($day = $infilename) =~ s/.*(\d{4}\-\d\d\-\d\d_\d\d)\.txt/$1/; my $out = $day . ":" . $header . "\n" . $message . "\n\n"; $out =~ s|(.+)\n*$|$1\n\n|; #末尾の改行の数を調整 print "Text of date added to " . $day . ".txt and united.\n"; print OUT $out; $out = ""; close IN; close OUT; }