ロリポップのブログからNucleusへブログの移動
ロリポップのブログ(ロリポブログ)から、Nucleusのブログへ移動したかったので、ちょっとだけスクリプトを組んでみた。なお、ロリポブログは、Jugemのシステム(使ったこと無いけど)なんで、同じ系列のものなら、同じように動くかもしれない。
なお、自分用に作ったもので、しかも一回使えば済むものなので、スクリプトの汚さと、使い勝手の悪さはお許しください。
仕様など
- ロリポブログのxmlをNucleusでインポートできる形にコンバートします。
- MovableType形式を参考にしているので、MTでも読めるかも。
- 相対リンクはリンク切れになります。
- トラックバックは無視されます
- 変なコメントがあると、記事とコメントがうまくいかない場合があるので、スパム系は外してから実行したほうがよいかも。
- 「続きはこちら」「もっと読む」などの記事の分割には対応していません。
- ご利用は、ご自分の責任の範囲でお願いします。
使い方
- PHPが使える環境にスクリプトを設置する(ローカルサーバーなど)
- ロリポブログから、データをxml形式でエクスポートする。(jugem.xml)
- このスクリプトとjugem.xmlを同じディレクトリに置く
- このスクリプトを実行する(ブラウザで開く)
- output.txtが生成されているのを確認する
- NucleusのNP_ImpExpを利用して、MTファイルとして、output.txtをインポートする
参考
ぱふう家のホームページのスクリプトを参考にしています。
利用規定
特に無いですが、「これから使ってみます」などのコメントを書いてもらえると、個人的に嬉しいです。
スクリプトの入手
適当にコピペしてください。
// --------------------------------------------
// Jugemのブログからエスポートしたxmlファイルを
// MovablelType形式に変換するスクリプト
//
// というか、本当はロリポップのブログから、ニュークリアスに
// 引越しするためのスクリプト
//
// URLはそのまんなんで、相対パスはリンク切れになります。
// コメントは対応してますが、トラックバックは対応してません。
// 一応、カテゴリー書き出しますが、動作確認してません。
// EXTENDED BODYにも対応していません。
// 文字コードを考慮していませんので文字化けしたら自力でコンバートしてください。
//
// 使い方
// 1.ロリポブログから、xml形式でエクスポートする
// 2.エクスポートしたjugem.xmlと、このスクリプトを同じ場所へ入れる
// 3.このスクリプトを実行する(ブラウザからアクセスする)
// 4.output.txtというファイルが生成されているのを確認する
// 5.ニュークリアスのNP_ImpExpプラグインを使って、output.txtをインポート
// 作者: わくさん http://wakusan.com
// 個人用に作ったので、サポートしてくれと
// 言われましてもできないかもしれないです。
// ぱふうさんのページの記事を参考にしました。
// -------------------------------------------
// xmlを読み込む => xmlは、jugem.xmlとして、同じディレクトリにあるとする
// URLで指定しても読み込むかもだ。
echo 'xml読み込み処理=>';
$out = "";
$xmlfile = "jugem.xml";
$buff ="";
$buff .= file_get_contents($xmlfile);
echo 'xmlパーサ処理=>';
// パーサ作成
$parser = xml_parser_create();
// パーサオプションを指定
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
// パース実行、連想配列にパース結果代入
xml_parse_into_struct($parser,$buff,$values,$idx);
// パーサ開放
xml_parser_free($parser);
// パースして得た連想配列をまわす
echo '解析処理=>';
$in_item = 0;
foreach ($values as $value) {
$tag = $value["tag"];
$type = $value["type"];
$value = $value["value"];
if( $tag == "COMMENTS" && $type == "open") $flag = 1; //commentにはいる。
if( $flag == 1 ){
if ($tag == "COMMENT" && $type == "open") {
$in_commnet = 1;
} else if ($tag == "COMMENT" && $type == "close") {
$commentout .= "COMMENT:
AUTHOR: $name
DATE: $date2
$description2
-----
";
$in_comment =0;
}
if ($in_commnet) {
switch ($tag) {
case "NAME":
$name = $value;
break;
case "DATE":
$date2 = $value;
//2005/06/10 13:09:14 を 04/17/2007 08:02:55 形式に変更
$a = explode(" ", $date );
$b = explode("/", $a[0]);
$c = $b[1]."/".$b[2]."/".$b[0]." ".$a[1];
$date2 = $c;
break;
case "TITLE":
$title2 = $value;
break;
case "link":
$link2 = $value;
break;
case "DESCRIPTION":
$description2 = $value;
break;
}
}
}
if( $tag == "COMMENTS" && $type == "close") $flag = 0; //Commentからでる。
if ($tag == "ENTRY" && $type == "open") {
$in_item = 1;
} else if ($tag == "ENTRY" && $type == "close") {
$out .= "AUTHOR: $author
TITLE: $title
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: __default__
ALLOW PINGS: 1
CATEGORY: $category
DATE: $date
-----
BODY:
$description
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
$commentout
--------
";
$in_item = 0;$commentout =""; $in_comment = 0;
}
if ($in_item == 1 and $flag == 0) {
switch ($tag) {
case "AUTHOR":
$author = $value;
break;
case "CATEGORY":
$category = $value;
break;
case "DATE":
$date = $value;
//2005/06/10 13:09:14 を 04/17/2007 08:02:55 形式に変更
$a = explode(" ", $date );
$b = explode("/", $a[0]);
$c = $b[1]."/".$b[2]."/".$b[0]." ".$a[1];
$date = $c;
break;
case "TITLE":
$title = $value;
break;
case "link":
$link = $value;
break;
case "DESCRIPTION":
$description = $value;
break;
}
}
}
echo 'ファイル書き出し処理=>output.txt=>';
$fp = fopen( 'output.txt', 'w');
fwrite( $fp, $out);
fclose( $fp );
echo '終了!';
?>