Movable Type形式の d3blogインポート-ver0.5
Movable Type 形式のブログデータを、d3blogにインポートしようと考えました。 私の場合は、niftyの「ココログ」でエクスポートしたMT形式データのインポートになります。
いきなり本番環境で実行せず、必ずテスト環境で試してから実行してください。
1、参考: MovableTypeのデータをWordPressに移行したい。(のぶのぶXOOPS)
xoopsモジュールでこの手のインポートが出来るブログモジュールとしてはwordpressMEがありまして、上記参考サイトからphpソースをダウンロードしてテストサイトでインポートまで行ってみたところ、これは見事にできました。
また、既にインポート済みのデータは上書きしないようになっているなど、運用中のwordpressMEへの追加インポートを考慮しているのが、ユーザーに優しいところですね。
なお、今回のphpソースは上記参考サイトのソースを元に、d3blogのソースを参考に手を入れて書いたものです。インポート済み記事やコメント、ト ラックバックなどは同様にスキップするようにしています。 ただ、コードの中身は使用メソッドがSQL文だったり、xoops_objectだったり一環 性がありませんがご容赦を。
2、d3blogインポートの制約
MT形式(ver3)データをd3blogに取り込む場合、以下の制約があります。
- MT形式(ver3)のコメントがタイトル無くスレッド構造でない制約 元々のMT形式テキストデータが、タイトルもスレッド構造を持ちません。 xoopsコメントにインポートする際には、最初のコメントのタイトルを (Re:投稿タイトル)として親コメントと扱い、以降のコメントをその親コメントへ繋げ、(Re^2)、(Re^3)・・ とすることとしています。
- xoopsコメントを使う制約 d3blogでは、標準コメントシステムの「xoopsコメント」を使っています。 それ自体はOKなのですが、このコメントシステムにはゲスト投稿者の 「名前」入力欄が無く、元を辿るとDBに「cname」などというフィールドさえ無い、という最大の問題を抱えています。
WordPressMEの場合は、モジュール側でコメント用のDBテーブルを持っていたため、問題ありませんでした。
この問題をクリアする方法として、以下の2つの方法が考えられます。- d3forumのコメント統合を使う
スクリプト中の以下の部分を編集し、d3blogのコメント統合設定を正しく行います。$use_d3forum_comment = false; // コメントをd3forumに直接取り込む場合、true
- xoopsコメントのままで、何とかする
要は、MTデータの投稿者名を何とか表示すればよいのです。 今回は、本文の冒頭に、「名前 wrote:」 と追加する安直な方法にしました。
- d3forumのコメント統合を使う
- d3blogで記事カテゴリを複数選択できない制約
ちょっと困ったことに、d3blogでは記事カテゴリを複数選択できません。 つまり、Movable Type形式の記事ではいくつか列挙されているカテゴリの一つしか保持できないことになります。
今回は、これまた安直に、成り行きで一つだけを生かす方式にしました。 多分、MT形式データの各記事の一番最後に書かれているカテゴリが有効になると思いますが、もしかしたらそうならないかも知れません。
(1)xoops_trust_path/modules/d3blog/main/import-mt.php
import_0.5.zip ver 0.5(EUC-JP) |
解凍したファイルの
- 3行目にMT形式ファイルのフルパスを加筆し、
- 4行目にMT形式ファイルの文字コードを(2008-7-13修正)。
- 5行目にxoopsのデータベースの文字コードを記載。
- Biglobeの場合は、7行目を$biglobemode = true;に変更。
ファイル名「import-mt.php」でtrust側のd3blog/mainフォルダに保存します。(本ファイルはEUC-JPで保存されていますが、運用サイトの文字コードに合せて変換保存して下さい。)
なお、セキュリティの関係上、ファイル名は変更することをお勧めします。
(2010/05/02変更)
元のブログやMT形式データによっては、改行がHTMLの場合やただの改行の場合など、様々なようです。
この場合、元のMT形式ファイルから設定を読み込みますが、万一うまくいかない場合は、スクリプト475行目付近に設定がありますので、必要に応じて編集します。
自動改行を有効にする場合はこの「dobr」オプションを「1」にします。
472 473 474 475 476 477 |
|
にしてやってみてください。
なお、HTMLを無効にする場合は、上記 'dohtml' を「0」に変更します。
(2)xoops_trust_path/modules/d3blog/xxxx.txt
MT形式のテキストデータを、d3blog フォルダに置きます。 テキストデータ内の記事の投稿者名と、インポートするxoopsのユーザー名が合致する場合のみ、インポートされます。 もし、 ユーザー名が変わる場合は、テキストデータの投稿者名部分(AUTHOR: ○○)を予めすべて置き換えておく必要があります。
既知の不具合として、ファイル最初の1件目のデータを読み取れません。 お手数ですが、テキストファイルの1件目のデータをコピーし、2件目に挿入したテキストファイルを作ってください。 記事選択の際には、2件目のほうを選択してください。
(3)テンプレート _custom_mt2_d3blog.html
Altsysの「テンプレート管理」-「カスタムテンプレート」で、以下のコードを「_custom_mt2_d3blog.html」として作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
|
4、インポートの実行
- 管理者でログインする
- STEP0:xoops_root_path/modules/(d3blog)/index.php?page=import-mtにアクセスする。
(d3blog)の部分はインストールフォルダ名に変更します。- 「一度にインポートする記事件数」を選択します。
大量の記事を一度にインポートすると、メモリ不足になったりサーバーに負荷をかけてしまいます。通常は50~100件程度に抑えて実行してゆくことをお勧めします。 - コメントにd3forumコメント統合が選択されている場合は、フォーラム名称とforum_idを確認します。
- 「送信」ボタンを押します。
- 「一度にインポートする記事件数」を選択します。
- STEP1:取り込む記事にチェックを入れて「送信」ボタンを押す。
- 全記事一度に取り込む場合は、全選択/解除チェックを活用してください。
記事数にもよりますが、かなりの時間がかかる場合があります。
- 全記事一度に取り込む場合は、全選択/解除チェックを活用してください。
- STEP2:結果を確認する。
- インポートした記事群のbid値、タイトルが表示されます。
- 「送信」を押すと、STEP0に戻り、選択した記事数の次回分のインポートに進みます。
- 別ウインドウを開くなどして、インポート状態を確認します。
d3blogの各記事のカテゴリーは1つしか選べないため、後で記事毎にカテゴリを選択しなおす必要があります。
- ファイルを削除する
5、開発環境
以下の環境で確認しました。 他の環境では動作しない場合もあるかもしれません、ご容赦下さい。
- CentOS-5.4 + Apache-2.2.3
- php 5.1.6
- mysql 5.0.77
- Xoops Cube Legacy 2.1.6 および HD1.0.3
- d3blog 1.03
- エクスポート元ブログ:ココログ、Biglobe(ウエブリブログ)
実体ページ:inc/import_mt2d3blog
インポートScript |
習作:MT形式のd3diaryインポート |
コメント一覧
投稿ツリー
-
Re: 習作:MT形式のd3blogインポート
(nonn50, 2009/5/2 9:03)
-
Re: 習作:MT形式のd3blogインポート
(八郎, 2009/5/2 19:08)
-
Re: 習作:MT形式のd3blogインポート
(八郎, 2009/5/2 19:35)
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2009/5/2 20:21)
-
Re: 習作:MT形式のd3blogインポート
(八郎, 2009/5/4 23:53)
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2009/5/5 10:26)
-
Re: 習作:MT形式のd3blogインポート
(八郎, 2009/5/8 2:21)
-
習作:MT形式のd3blogインポート
(SHIGE, 2009/5/17 1:57)
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2009/5/17 8:06)
-
Re: 習作:MT形式のd3blogインポート
(SHIGE, 2009/5/17 12:01)
トピック
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2008/7/13 2:03)
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2009/2/4 16:22)
-
バージョンアップ: 習作:MT形式のd3blogインポート
(, 2009/4/14 14:27)
-
すばらしいです!
(なーお, 2009/4/29 15:24)
-
Re: 習作:MT形式のd3blogインポート
(nonn50, 2009/4/21 19:54)
-
習作:MT形式のd3blogインポート
(SHIGE, 2009/5/17 1:57)
おはようございます。
御教示いただき、ありがとうございます。
しかし、脳軟化症の爺は「リッチエディタ」も「FCKediter」も用いず、もっぱらxpWikiヘルパーを利用しています。
(xpWikiヘルパーの不満足なところは、HTMLダグを利用できないことですが、これはこれとして割り切って利用しています。)
小生のメモには教えていただきましたページへのリンクを加えさせていただきましたが、当面は改造する予定はありません。
悪しからず、御理解ください。
おおおおお!!trust_path is OK!表示されました。嬉しい!
なーおさま、こんばんは!
質問になっていないような質問に色々とお答え頂きありがとうございます(^_^;)
これはもう、4で決まりですよね?
もちろん、短縮ハックのコードを自前で用意など出来るはずもなく、
WEBで公開されているものを使わせていただいているのですが
一応、ソースは以下のようになっています。
すみません。どうやっても上手くソースが貼り付けられなかったので
取り急ぎキャプチャーしてみました(^_^;)
http://blog-imgs-40.fc2.com/s/a/i/sainaraa/87_20090502192433.jpg
お教え頂いたtrust側のコメントアウト、今から挑戦してみます!
八郎さん、こんばんは。
これはもう、4で決まりですよね?
いえ、trust側のスクリプトの問題の可能性が高くなりました。
スクリプトが正しくダウンロードできていないのではないか、という心配もありますので、以下にzipファイルにした ver0.3とver0.4のファイルを貼っておきます。 今までと同様に、必要箇所の編集をしてからアップして下さい。
- [添付]
- [添付]
なーおさま、ありがとうございました!
仰られたとおり、どうやらソースファイルのダウンロード失敗が原因だったようです 。
(失敗?したときの手順は、リンク先にジャンプしてソースを全選択コピー、新規テキストファイルを作成してそこにペーストでした。)
0.3zipと0.4zipを試してみましたが、mainfile.php内のURL短縮ハックをコメントアウトしないままの状態で、双方ともでフォームを表示することが出来ました(^_^;)。
そこでさっそく「実行」してみたのですが、やはり1200件を一度にというわけには行かないようで…。再び真っ白になりました(笑)
ところが、ブログを覗いてみると不思議なことに1?104番目までの記事が 。
そこで、100件ずつ分割してトライすればイケるだろうと考え、その結果なんとか370件まで完了しました。この先はメモリー不足なせいか、xxx.txtの記事数を50まで減らして実行を押しても完全な真っ白状態でインポートも全く進行しなくなりました。(思えばエントリーのタイトルにa hrefタグを入れたり、無茶苦茶やっていたので仕方ない気もします)
でも、これだけインポートが出来てしまえば私としましては大満足なので、一応最後にWarningが出ておりましたことだけご報告させて頂きます。
http://blog-imgs-40.fc2.com/s/a/i/sainaraa/88_20090504233835.jpg
この度は素晴らしいソースとご指導を頂き本当にありがとうございました。
と、言いつつもう一度だけ見に参ります(・∀・)
八郎さん、こんにちは。
そうですか、スクリプト自体は大丈夫だったようですね。
もっと早く気づくべきでした。
これを機会に、zipファイルでダウンロードする方法に変更しました。
ところで、370件めから先がインポートできないとのことですが、確かにメモリリミットに引っかかりやすいので、あり得ますね。
一時的にメモリリミットを変更するか、、
それから、もしかすると記事のほうに問題があったり相性が悪い場合は、提示いただいた画像のようなNoticeが出る場合があった気がします。 その記事の100件なり50件なりを飛ばして、次の塊のファイルを実行するとインポートできたりするかもしれません。
あとは、TMさんの使ったこの方法
http://www.naaon.com/modules/d3forum/index.php?topic_id=210#post_id666
を試してみるかですね。 PHPMyadminを使う必要がありますし、コメントの紐付けが少し心配ですが。。
(追記)
なお、当分先になると思いますが、カスタムテンプレートを使った方法に変更し、内容も見直したいと考えています。 その際に、メモリ不足を回避するような実装もできたらいいなと思っています。 具体的には、ファイルを一度にメモリ読み込まず、1行ずつスキャンしていく方法です。 その上で、取り込み記事数を(例えば50件づつなど)指定して、その件数分づつメモリに取り込んでインポートし、次の50件に移るという方法です。
なーおさま、こんばんは!
今さらながら、このスクリプトの完璧なインポートぶりに驚いております。
当方、エクスポートもインポートも生まれて初めてなうえに、初陣がこのXCLなので、もしも途中で失敗して壊れたら全部削除して改めて手写しというのも覚悟していたのですが、インポートした370件中の最新と最古のエントリー各50件ほどずつ読んでみた限り問題一つ出ませんでした。一安心です(^^)
PHPMyadminはXCLが何らかのエラーで画面真っ白から立ち直れなくなった場合以外は恐ろしくて手を付けられないです(^_^;)
(追記)
なお、当分先になると思いますが、カスタムテンプレートを使った方法に変更し、内容も見直したいと考えています。 その際に、メモリ不足を回避するような実装もできたらいいなと思っています。 具体的には、ファイルを一度にメモリ読み込まず、1行ずつスキャンしていく方法です。 その上で、取り込み記事数を(例えば50件づつなど)指定して、その件数分づつメモリに取り込んでインポートし、次の50件に移るという方法です。
おおっ、嬉しい朗報です!完成された際には是非そちらで再挑戦させて頂ければと思います!
この度は色々とご指導頂きまして本当にありがとうございました
それでは、失礼します。
d3fofumへのインポートではお世話になりました。
さて、ブログもWPMeから、d3blogに乗り換えていたので、さっそく、過去ログをインポートしてみました。
WPMeから、なーおさんのスクリプトで、MT形式にエクスポーとして、そこから、d3blogにインポートしました。実行ボタンも表れ、瞬時に完了しましたが、確認すると、改行が全くなくなっています。
WPMeでああああああああああ
ああああああああああ
いいいいいいいいいい
いいいいいいいいいい
ああああああああああああああああああああ いいいいいいいいいいいいいいいいいいいい
となります。
これを回避する方法はあるでしょうか。
環境は
SUKURAレンタルサーバースタンダード
PHP: 5.2.8
MySQL: 4.0.27
XOOPS Cube Legacy 2.1.6a
WPMe 0.50RC最終版
D#blog HD 1.03
です。よろしくお願いします。
SHIGEさん、こんにちは。
d3ブログインポートもお試しいただけて、ありがとうございます。
解説にも書いてなくて申しわけありません。(追記しておきます)
SHIGEさんは書きました:
WPMeから、なーおさんのスクリプトで、MT形式にエクスポーとして、そこから、d3blogにインポートしました。実行ボタンも表れ、瞬時に完了しましたが、確認すると、改行が全くなくなっています。
おそらく、元のブログのエクスポートでHTMLではなかったか、あるいはMT形式に吐き出すときに、HTMLの改行(<br>)を普通の改行に変換しているか、どちらかの形式だと推測します。
この場合、d3blog側で改行を有効にすればOKと思います。
280 281 282 283 284 285 |
|
を、
280 281 282 283 284 285 |
|
にしてやってみてください。
なお、HTMLを無効にする場合は、上記 'dohtml' を「0」に変更すればOKです。
よろしくお願いします。
なーおさん、返信ありがとうございました。
先ほど、dobrオプションを変更したら、うまくいきました。サイトが、どんどんスッキリしていきます。本当にありがとうございます。