TDSからWordPressへのデータ移行
需要はなさそうだけど、せっかくだからTDSからWordPressへの日記データ移行方法を書いておこう。変換に使ったTDSスタイルも置いとくから、必要なら持って行って。
最初は手動で移すことも考えたけど、件数が多くて時間が掛かりすぎるのでMakoto先生にご相談。で、ライブドアブログ無料版でもMT形式でバックアップする方法。 | buena suerte!を教えてもらってピンと来た。TDSの出力スタイルをMTのエクスポート形式にすればいいんだ!
実際の作業手順はこんな感じ。
- TDSのスタイル変更
- TDSのNEW,SUB出力定義を変更
- TDSでHTMLファイルを静的出力
- 文字コードの変換
- 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の読み込みファイル・フォーマット
ディスカッション
コメント一覧
うまくいってよかった(^^)/
うまくいってよかった(^^)/
アドバイスがとても参考になったよ!
この手段が使えなかったら、まだまだ移行できなかったと思う。ありがとね!
アドバイスがとても参考になったよ!
この手段が使えなかったら、まだまだ移行できなかったと思う。ありがとね!