プラスα空間

ブログ in お市 のーと

XML-RPCでココログフリーの記事を書き換える時にハマった事

ココログフリーからの完全引っ越しが終了しました。

ココログフリーにあった全記事を、本サイトへのリンクの記事にしました。記事数は2,000以上あるので、一つ一つ書き換えるのは、ほぼ不可能です。

そのため、自作ツールで、XML-RPCと言う手法を使って、自動書き換えしました。

通常の記事の書き換えは自動でできるのですが、ウェブページには対応できません。数ページなので、手動で書き直しました。

ココログフリーの記事をXML-RPCで書き換える時に、ハマった事を列挙します。

  1. “500 Can’t verify SSL peers without knowning which Certificate Authorities to trust”と言うエラーが出て、接続できなくなった
  2. XML-RPCでココログにログインできなくなった
  3. 記事上では書き変わっているのに、表示が更新されない
  4. “500 Can’t connect to app.f.cocolog-nifty.com:443″と言うエラーが出て、途中で処理が中断する

それぞれは、わかってしまうと単純な事なのですが、トラブルに見舞われると、調べまくらないとわからないですね。

1. “500 Can’t verify SSL peers without knowning which Certificate Authorities to trust”と言うエラーが出て、接続できなくなった

ココログフリーへのXML-RPCでの接続は、Perlのパッケージ”XMLRPC::Lite”を使っています。どうも、それが古くなったか、Perlライブラリのリンクが正しくできていなかったかのために発生していました。

ライブラリを更新し、ライブラリ設定を正しくしたら、エラー無く接続できる様になりました。

XMLRPC::Liteで使われている、IO::Socket::SSLとMozilla::CAが正しく参照されていないと、このエラーが出るようです。

認証なしで接続可能な、”mt.supportedMethods”が、上記の対応でうまく行く様になりました。

2. XML-RPCでココログにログインできなくなった

非常に単純で、パスワードを変えたのを忘れていたためでした…。

認証なしだと接続できるので、認証関係である事は間違いなかったのですが、なかなか気がつかない物ですね。

resultメソッドの返り値には、何も入っていなくて、理由がよくわからなかったのです。

そこで、XMLRPC::Liteで利用している、SOAP::Liteの説明を読んでみました。

このサンプルを見て、callメソッドを使った時のエラーの理由を調べる方法がわかりました。エラーかどうかを判定するfaultメソッドと、エラーの理由を返すfaultstringメソッドがあるのです。

 my $som = $soap->call('sayHello', 'Kutter', 'Martin');
 die $som->faultstring if ($som->fault);
 print $som->result, "\n";

このスクリプトを、XMLRPC::Liteを使う様に書き換えて実行してみると、次のエラーが返ってきました。

% ./get-category-try.pl
Invalid Login at ./get-category-try.pl line 35.

これで、Loginに失敗しているとわかったのです。

3. 記事上では書き変わっているのに、表示が更新されない

これも結構ハマりました。スクリプトを流すと、記事そのものは書き変わっています。ですが、表示すると、古いままなのです。

試しに、記事を再保存すると、書き換えた内容が反映されます。

Movable Typeの事を考えれば当たり前なのですが、データを書き換えただけだと、表示に反映されないのです。Movable Typeは、スタティック表示なので、データを変更した後は、更新作業が必要なのです。

ココログの管理画面から、ブログデザイン反映を選び、プルダウンメニューからすべてのファイルを選んで、反映ボタンを押します。

ココログ反映

そうすると、無事、記事の内容が表示に反映される様になりました。

4. “500 Can’t connect to app.f.cocolog-nifty.com:443″と言うエラーが出て、途中で処理が中断する

次のエラーが出て、処理が止まりました。

% ./rewrite-post.pl > rewrite-post.log
500 Can't connect to app.f.cocolog-nifty.com:443 at ./rewrite-post.pl line 117

真因はわかりませんが、多分、ココログフリーの方で、連続するXML-RPC接続に制限を設けていると思います。

773記事を連続して書き換えた所でエラーになりました。

時間をおいてやりなしたら、続きが動き出し、正常終了しました。その後の記事は、1,500はあったのですけれど。

参考にしたウェブページ

XML-RPCでココログフリーを使う方法は、次のページを参考にさせていただきました。ありがとうございます。

今回は、ココログフリーからWordPressへの引っ越し作業の仕上げ、「ココログフリー記事の書き換え」に絞っての記事ですが、これ以外にいろいろな事をしています。時間ができて、気が向いたら書いてみたいと思います。

コメントを残す