2007/05/10

[技術系]   MTインポートによる移行向けに、旧URL→新ファイルパスのマップを作成するスクリプト

at 16:49JST
 
結論>MTにスクリプトから「出力ファイル名」指定でポストする方法 : ひろ式めもちょう
http://memo.hirosiki.jp/article/40820357.html

のつづき。

結局、
「他blog/他MTサイトからMTエクスポートログによって移行してくると、従来のURLを維持できない」
ので、エクスポート/インポート時に適当なスクリプトで
「旧URL→インポート後のファイルパス」
のマップを自動作成し、リダイレクトツールなどのためのデータにするのが好ましい。

ということで、そのためのツールを作った。自分用だけどメモしておかないとまたどこかに行っちゃうので公開。なお、スクリプトはなぜかWindows ActivePerlで動作させることを前提としている。

準備するもの:
a・旧サイトのMTエクスポートログ(mt.log)
b・旧サイトのスタティックHTMLファイル群(article/*.html)

まず、
a, bを展開したディレクトリ上で、static2mt.plを、
>static2mt.pl mt.log article/*.html > new_mt.log

のように動かす。すると、new_mt.logとして、

・各記事の属性部分に
 XORIGINALFILENAME: article/26381747.html
・各記事のBODYの先頭行の先頭に
 <!-- XORIGINALFILENAME: article/26381747.html -->

のように、マッチするスタティックHTMLファイルのファイルパスが挿入されたMTログファイルが新しくできる。

なお、マッチするファイルの認識には、スタティックHTMLファイル中に埋め込まれた
<rdf:RDF 
    :
<rdf:Description
    :
dc:date="2006-10-29T03:28:55+09:00"
/>
</rdf:RDF>
のようなRDF情報のdc:dateを使用している。RDFが埋め込まれていないHTMLファイルでは識別できない。

これでできあがったnew_mt.logを、移行先のMTにインポート。再構築してスタティックHTMLファイルを作成させる。

つまり、旧サイトのファイルパス情報がコメントタグ形式で埋め込まれたHTMLができる。

今度は、新しくできたスタティックHTMLファイル群に対して、mkurlmap.plを使って、
>mkurlmap.pl article/*/*.html > result.txt

などと操作する。

すると、result.txtには、
my %entriesMaps = ( 
'article/26573153.html' => 'article/200611/01-amazon_associates.html',
'article/26516570.html' => 'article/200610/31-seesaa_1.html',
'article/26610333.html' => 'article/200611/02-post_11.html',
        :

のようなハッシュテーブルが生成される。

あとはこれをCGIスクリプトに埋め込むなり、リダイレクトオンリーの静的HTMLファイル生成に使うなりすればいい。

なんつーことはないAd Hocなスクリプトなのだが、この手のツールが見あたらないのはなぜだらう。



関連しそうな過去記事:
さらに過去の記事
2009/04 (1)   2008/12 (3)   2008/11 (9)   2008/10 (10)   2008/09 (20)   2008/08 (2)   2008/07 (23)   2008/06 (16)   2008/05 (22)   2008/04 (11)   2008/03 (21)   2008/02 (20)   2008/01 (21)   2007/12 (32)   2007/11 (37)   2007/10 (46)   2007/09 (63)   2007/08 (33)   2007/07 (41)   2007/06 (81)   2007/05 (173)   2007/04 (168)   2007/03 (113)   2007/02 (123)   2007/01 (92)   2006/12 (111)   2006/11 (185)   2006/10 (20)  
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。