TDSからWordPressへのデータ移行

TDS,WordPress

需要はなさそうだけど、せっかくだからTDSからWordPressへの日記データ移行方法を書いておこう。変換に使ったTDSスタイルも置いとくから、必要なら持って行って。

最初は手動で移すことも考えたけど、件数が多くて時間が掛かりすぎるのでMakoto先生にご相談。で、ライブドアブログ無料版でもMT形式でバックアップする方法。 | buena suerte!を教えてもらってピンと来た。TDSの出力スタイルをMTのエクスポート形式にすればいいんだ!

実際の作業手順はこんな感じ。

  1. TDSのスタイル変更
  2. TDSのNEW,SUB出力定義を変更
  3. TDSでHTMLファイルを静的出力
  4. 文字コードの変換
  5. WordPressでインポート

以下、順を追って説明していきます。

TDSのスタイル変更

まず作業ディレクトリにTDSをインストールし、適用スタイルを変換用スタイル定義に変更します。変換用スタイル定義では、skelton.htmlからHTML要素を一切削除し、本文表示のみを行います。実際のskelton.htmlは、こんな感じになります。

<!--#macro cmd=DIARY_CONTENT -->-----
--------

コマンドの後ろに"-“が付いてるのは、インポート時に必要な区切り文字なので削除しないようにね。

TDSのNEW,SUB出力定義を変更

続いてtemplate.phのNEW,SUB出力定義を、MTエクスポート形式に近づけるように編集します。具体例は下記参照のこと。

package TDS::Tdf::Command::NEW;
$Template = qq(--------\nTITLE: %ext_attrs\nAUTHOR: admin\nSTATUS: Publish\nCATEGORY: \nDATE: %0m/%0d/%year 00:00:%new\n-----\nBODY:\n);
$EndTemplate = "-----\nEXTENDED BODY: %footnote\n\n-----\nEXCERPT:\n\n";
$Mark = "%%%n";

package TDS::Tdf::Command::SUB;
$Template = qq(<H3>%ext_attrs</H3>\n);
$EndTemplate = "";
$Mark = "_";

この例だとカテゴリ定義がないけど、カテゴリも読み込むように出来るハズなので、上手い感じに工夫してみてくれ!

TDSでHTMLファイルを静的出力

上記スタイルを適用後、"perl static.pl -f"で静的に日記データを生成してください。これでMTエクスポート形式のHTMLファイルが出力されます。"d200201.html"みたいなファイルを探して中身を見ると、こんな感じになってるはず。

--------
TITLE: あけおめ
AUTHOR: admin
STATUS: Publish
CATEGORY:
DATE: 01/01/2002 00:00:1
-----
BODY:
<p >
ことよろ。
</p>

-----
EXTENDED BODY:

-----
EXCERPT:

--------

文字コードの変換

続いて文字コードの変換作業を行います。具体的にはTDSが出力したHTMLファイルの文字コードを、WordPressで使用する文字コードに変換します。おいらはTDS出力のHTMLファイルはEUC、WordPressの文字コードはUTF8だったので、EUC→UTF8の変換を行いました。

文字コードの変換は、文字コード変換ツール「KanjiTranslator」を使用し、UTF-8のBOM無しに変換しました。おいらは移行量が多かったので、事前にtm3takei:TextFileBinderを使って、月次ファイルを12ヶ月分結合し、1年分の日記データファイルを作成してから文字コードを変換しました。

WordPressでインポート

最後にWordPressの管理画面から「管理」→「インポート」→「Movable Type と TypePadMT」を選択、作成した変換済みHTMLファイルを読み込めばデータ移行完了です。


ダウンロード:tds2wordpress.zip [TDSに適用する、MTエクスポート形式出力スタイル]
参考リンク:Movable Type 3.3 マニュアル – Movable Typeの読み込みファイル・フォーマット