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インポート
(TM, 2009/2/8 17:06)
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2009/2/8 22:04)
-
Re: 習作:MT形式のd3blogインポート
(TM, 2009/2/17 19:09)
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2009/2/18 7:42)
-
バージョンアップ: 習作:MT形式のd3blogインポート
(なーお, 2009/4/14 14:27)
-
Re: 習作:MT形式のd3blogインポート
(八郎, 2009/4/15 11:58)
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2009/4/15 13:18)
-
Re: 習作:MT形式のd3blogインポート
(nonn50, 2009/4/21 19:54)
-
Re: 習作:MT形式のd3blogインポート
(なーお, 2009/4/21 21:05)
-
Re: 習作:MT形式のd3blogインポート
(nonn50, 2009/4/22 20:36)
トピック
-
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)
なーお様
昨日、せっかくご回答いただいていたのに、終日PCの見られない状況でお返事がおくれ失礼いたしました。
変数のハンドリングの件、解決できることを願っております。
もし、そのあたりに問題がないようでしたら、申し訳ないのですが、DBへのインポートにお力を貸してください。
ちなみに当方の文字コードはEUCです。
今後ともよろしくお願い致します。
TMさん
とりあえず、このスクリプト
import-mt.txt
に差し替えて(以前と同様に拡張子は.phpに変更して)お試しください。
ただ、以前のスクリプトで、自分のテストサイトで何度か試してみたのですが、
メモリ確保量8Mだと真っ白になる環境で、確保量16Mに設定し、350件一度にインポートしてみて問題なく、 また、インポートテキストの日付を全て変更して更に350件インポートしてみましたが、これも問題ありませんでした。
もし、そのあたりに問題がないようでしたら、申し訳ないのですが、DBへのインポートにお力を貸してください。
上記の変更版スクリプトでもだめな場合は、念のためphp、mysql以外の環境(OS、WEBサーバーのバージョン、コアバージョン、d3blogバージョン)もお知らせいただいたうえで、お問い合わせにて、メアドをお知らせください。
なーお様
お世話になります。しばらく別件に手を取られ、レスがおくれましたことをお詫びします。
さて、いろいろ試して見た結果、できました!
phpMyAdminをサーバにインストールして、エラーが出る前に(約3ヶ月単位)エクスポートをかけました。
その後で、エントリーのテーブルを全て空にして、次の月からまた3ヶ月分d3blogインポートを使います。
この作業を繰り返して、最後にエクスポートしたデータを順番にインポートしなおしたら3年分全て取り込むことができました。
ご指導いただきありがとうございました。
TMさん
なかなか手の込んだ作業でしたね。
その方法で、xoopsコメントテーブルのほうも、うまくインポートしたのでしょうか。
結果的に私のほうでは大した進展がありませんでしたが、スクリプト自体はお役には立てたようで、うれしいです。
MT形式ブログデータのd3blogインポートスクリプトをバージョンアップしました。 今回、コメントのd3forumコメント統合への直接インポートが可能になっています。
スクリプトバージョンver0.3以前では ゲスト名が引き継げないxoopsコメント経由で取り込んでいたため、本文の冒頭にゲスト名を追記する形で対処していました。 今回、直接取り込むようにしたことで ゲスト名も有効にインポートされます。
また、ver0.3以前で既に取り込み済みの統合コメントも、インポートファイル内のゲスト名と本文で上書きも可能になっています。 必要に応じてご活用下さい。
はじめまして!
FC2のMTブログデータをd3にインポートする手立てはないものかと検索していて
こちらの記事にたどり着きました。
行き詰まってしまったので、解決へのヒントを頂ければと少々質問させて頂きます。
fc2のデータ1000記事分×1、手順通りに記述したrootとtrust側それぞれのimport.php
を用意した上で
xoops_root_path/modules/d3blog(hoge)/import.php
にアクセスしてみましたところ、何も表示されませんでした。
そのソースを見るとIEではbody内が空のhtml構文、firefoxでは白紙でした…(´ヘ`;)
d3blogのディレクトリ名をhoge等に変更して複数インストールしているので
そこに問題があるのかな?などと思ったりもしたのですが…。
import.phpにアクセスするのに、メモリ不足で真っ白になるってことは無いですよね。
管理者権限を付加したユーザーでimport.phpにアクセスしております。
やはり、PHPのバージョンの問題なのでしょうか?
当方環境:
PHP5.1.6
XCL 2.1
以上、よろしくお願いします。
八郎さん、こんにちは。
fc2のデータ1000記事分×1、手順通りに記述したrootとtrust側それぞれのimport.php
を用意した上で
xoops_root_path/modules/d3blog(hoge)/import.php
にアクセスしてみましたところ、何も表示されませんでした。
そのソースを見るとIEではbody内が空のhtml構文、firefoxでは白紙でした…(´ヘ`;)
d3blogのディレクトリ名をhoge等に変更して複数インストールしているので
そこに問題があるのかな?などと思ったりもしたのですが…。
import.phpにアクセスするのに、メモリ不足で真っ白になるってことは無いですよね。
mainfile.phpやヘッダー、フッター、d3blogのソースをrequireしていますが、最初のアクセスで真っ白なのは、あまり考えられないですねえ。
私の環境でもhtml側のディレクトリ名も変更して複数設置してますが、問題ありません。
PHPデバグモードにしても、何も表示されないのでしょうか?
毎度お世話様です。
別件についても片付いていないのに、無謀にもこちらにチャレンジを試みようと思ってます。
当方は、PHP 4ですがね
ところで、このインポートを行った場合、画像(写真)もできるのでしょうか?
事前に確認させてください。
nonn50さん
画像はインポートできません。
多くのブログ同士のMT形式インポートと同様に、画像へのリンクは元のブログ内画像へのHTMLリンクのまま残り、表示自体は問題ありません。
(誤って元のブログを消去しませんように・・)
了解しました。
小生は、来週からゴールデンウイークに突入しますので、ノンビリとやってみます。
追伸:今きづきましたが、この返信用フォームでは、右下に「リッチエディタ」、左上に「FCKediter」のボタンがでるんですね。面白?い