2005年12月19日

Exblog2MT - 1.2

名前

Exblog2MT - Excite ブログ( exblog )のログを MT 形式に変換しエクスポートします。

ダウンロード

バージョン 1.2

使用例

$ perl -I ./Library/Perl ./exblog2mt.pl ¥
> -s http://your-blog.exblog.jp/1234/ -n 100 -u username ¥
> -v -o output.txt

概要

URL で指定したユーザの Excite ブログ (Exblog) の記事を取り込んで、 MovableType (MT) にインポートできる形式に変換(エクスポート)します。

特徴としては例えば次のようなことが挙げられます:

  • 任意のエントリから順番に、指定したページ数だけをエクスポートできます。
  • 記事本文は勿論ですが、( ``More'' で分割された)追記文、(複数あるかもしれない)コメント、トラックバックも対象になります。また、コメントおよびトラックバックを許可するかどうかのステータスも取得します。
  • (余計な事なのかもしれませんが)概要( Excerpt )を自動で生成します。本文の先頭から、240 文字幅くらいです。(文字幅というのは、半角文字を1、全角文字を2とした数え方です。)
  • 非公開記事、非公開コメントも取得します。非公開記事は、非公開のステータスのままエクスポートされます。また、非公開コメントについては、 Crypt::OpenPGP によって暗号化するオプションがあります。
  • おそらく、 Exblog のテンプレートの種類には依存しません。いくつかの種類のスキンではそのままでうまくいきます。ただし、カスタマイズが施されている場合は、元に戻す必要があるかもしれません(程度によります)。

制限としては例えば次のようなことがあります:

  • トラックバック元のブログ名が長い場合には、短く切り詰められます( Exblog で既に切り詰められているため)。
  • コメント/トラックバック元の IP アドレスは失われます( Exblog ではユーザは知る事ができません)。
  • Exblog にアップロードされている画像についてはまったく考慮されていません。
  • 文字エンコーディングは utf-8 のみ。
  • おそらく、 Exblog のテンプレートの種類には依存しませんが、カスタマイズが施されている場合は、元に戻す必要があるかもしれません(程度によります)。いくつかの種類のスキンでは、うまくいきません。

必要なモジュール

Perl 5.8.1 以上が要求されます。 (Perl 5.8.1-RC3 も可)

また、動作させるにあたって、次の Perl モジュールが使える状態にあることが要求されます。

[必須]

  • HTML::TreeBuilder
  • HTTP::Cookies
  • HTTP::Request::Common
  • LWP::UserAgent
  • Term::ReadPassword

概要( Excerpt )を生成するためには、 Jcode のバージョン2以上が必要です。

[オプション]

  • Jcode (2.0 以上)

非公開コメントメッセージを暗号化するには、次の Perl モジュールが必要です。

[オプション]

  • Crypt::OpenPGP

また、デバッグログを取るには、次の Perl モジュールが必要です。

[オプション]

  • Log::Dispatch::Config

オプション

コマンドラインオプションの説明です。

-e

非公開コメントを PGP 暗号化する際の、公開鍵の ID ( Recipients )を指定します。

-l

ロギングのための設定ファイルの位置を指定します。指定しない場合は './log.config' が探されますが、この設定ファイルがなくても動作には影響ありません。これはデバッグのためでのものです。

-o

出力ファイル名を指定します。省略すると、'./exported.txt' です。ファイルが存在する場合でも、追加書き込みモードでオープンされます。

-n

始めの URL から、連続するページの何ページぶんを対象とするかの数です。省略すると 1 となります。すべての記事を対象にする場合は、いちばん最初のエントリーの URL を指定した上で、記事数(もしくはそれ以上の数)を指定してください。

-s

Exblog の始めの URL を指定します。必須です。

-u

Exblog にログインするためのユーザ名です。必須です。コマンド実行直後に、そのパスワードが訊ねられます。

-v

進捗メッセージを標準出力に表示するようにします。デフォルトはオフ。

使い方のヒント

使い方の例です。

まず、対象とする Exblog の URL を調べます。対象は、ユーザがログインすることのできるブログです。 URL は、取得しエクスポートを行うページで、その記事固有の URL です(ここでは、始点ページと呼ぶ事にします)。 Exblog では <http://....exblog.jp/1234567890/> のように、エントリーは数字のディレクトリになっています。この URL をオプション -s に渡します。

このプログラムは始点ページからリンクを辿って、記事の新しい方向へ順番に、記事を取得して行く事が出来ます(これは「前のページ」というリンクを辿っていくことです)。そこで、始点ページから、何個の記事を対象とするか、それをオプション -n にセットします。始点ページ1ページだけでよければ、このオプションは不要です。すべての記事を対象としたい場合は、最初のエントリーの URL を -s にセットし、記事の総数以上の数を -n にセットします。記事総数は、ログインした Exblog の管理ページで確認できます。

Exblog では、ブログ管理者のみが閲覧できるコメント(非公開コメント)を投稿する事ができ、このプログラムはそれも取得します。ブログを移行したとき、それがコメント寄稿者の許可無しに公開されてしまうことを避けるために、このプログラムでは HTML コメントの形でデータとします。エントリーを MT へインポートした場合は、 HTML コメントの部分はデータとしては保持されますが、エントリーの HTML には反映されないので、公開されないことでしょう( MT 以外の様子は分りません)。しかし安全を期するなら、そのデータを PGP で暗号化することができます。暗号化する場合はオプション -e に、公開鍵の ID をセットします。 -e がセットされていない場合は、"<!-- BEGIN PRIVATE MESSAGE改行" と "改行<!-- END PRIVATE MESSAGE -->" とのペアでコメントが囲まれます。エクスポートされたデータを後から削除なり、加工したい場合は、これをキーワードとすることができるでしょう。

また、非公開コメントについては、名前は "(private)" となり、 EMAIL や URL などのフィールドは消され(それらのデータは HTML コメントにされる本文の冒頭に入ります)、( HTML として)目に見える本文はプライベートコメントがここにある旨の短いメッセージに置き換わります。なお MT にインポートした場合、 HTML コメントの部分は構築されたページ( HTML )には入っていないので、管理ページからコメントデータのソースを見る事になります。

オプション -o に出力ファイルの名前をセットします。結果はこのファイルに出力されます。既にファイルがある場合は追加書き込みされます。

以上をふまえて、次のようにコマンドを実行します。オプション -v をセットすると、進捗状況が表示されます。

$ ./exblog2mt.pl -s 始点ページURL -n 記事数 ¥
>    -u ユーザ名 -v -o 出力ファイル名

実行すると、 Exblog へログインするためのパスワードを訊かれます。それを入力する事で(エコーバックされません)、処理が始まります。ログインが失敗したら、短いメッセージとともに終了します。

処理が終了すると最後に、何件取得したかが表示されます( -v がセットされている場合)。これは -n にセットした数とは必ずしも一致するわけではありません。始点ページから最新記事までの記事数よりも -n の値が大きい場合は、一致しないでしょう。

スキン

これまでに、うまく動作したことが報告された/確認できたスキン:

  • HTMLベーシック
  • ナチュラル
  • スクエアベーシック

これまでに、うまく動作しなかったスキン:

  • コグマ
  • エキサイトブックス

バグ

テストが十分ではありません。開発者自身のブログ(エントリー数は 506 個)についてはうまく行きましたが、それ以外の環境ではまったく試していないのです。

Exblog の記事に於いて、先頭からハイフン '-' が5つまたは8つ連続する行が存在すると、問題があるかもしれません。 (ToDo)

パラメータ入力のチェックをしていません。 (ToDo)

更新履歴

version 1.2 (2005-12-19)

最初のリリース。

トラックバック

このツールのトラックバック URL :
http://hwat.sakura.ne.jp/mt/ftb.cgi/332
(このツールのバージョン固有の事柄については、バージョンごとのページにトラックバックしてください。)

広告