« 正解 | トップページ | 東方地霊殿 委託販売開始? »

2008年9月16日 (火)

エキサイトブログからココログへの移行

エキサイトブログのエクスポートとか画像の移行とかの手順については「続き」以降に書いています。

まずエキサイトブログをやめた理由からいってみようか。

エキサイトブログの、簡単でわかりやすいところは非常に良いと今でも思っている。
あと、ページ内に広告が無いというのはかなり頑張ってると思うんだけど、私はページ内に多少広告があっても、RSSには広告を入れないでほしいタイプなので、まあここはどっちがいい悪いじゃないんだけど、価値観の相違というか。

あとねぇ、これが一番大きいんですが、最近……というか、考えてみれば最初からのような気もしますけど、ほとんど開発が行われていないという。
メンテナンスとかスパム対策とかは時々やられてますけど、動画が貼れるようになって以来、機能的には何も増えていないんじゃなかろうか。
まあそんな機能を使う使わないは別として、そうなってくると、ブログに予算があまり無いんじゃなかろうかとか、サービス終了したら嫌だなぁとか、そんなところまで心配になってくるわけで。

あと単に私は技術に関しては新しいもの好きなので、比較的流行を追いかけていそうな所に行きたいなぁと。
4年前と今ではもう状況が変わっているでしょう。


で、なんでココログかというと、
実は最後まで「はてな」と「ココログ」で争っていた。

ココログっていうと、昨今のというか4年ほど前のブログブームの火付け役になったサービスですね。
当時私がブログサービスを選ぶ際にも候補に乗っていたんですが、なんでやめたんだっけ? エキサイトブログ(当時ベータ版)の将来性? 画像容量とか?(エキサイトブログは当時としてはそれなりに大きかったと思う) えーと、当時無料版は@nifty会員限定だったような気もする、よく覚えてないけど。でも確か当時一番盛り上がってたのはココログだった。

まあ結局なんでかっていうと、「はてな」のキーワードリンクは要らないかなぁってのと、デザインが簡単にそのまま再現できて面白かったってのと、あとは@niftyのネームバリューですね。

@niftyっていうとプロバイダの最大手だったような、違ったような、忘れましたけど、それだけでは生きていけないと思ったのか何なのか、「@niftyラボ」ってところで日々なんかおかしなものを大量生産している。

@niftyラボ
http://www.nifty.com/labs/

こういうのは、いいよね。
正直どうすんだこれって感じのもいっぱいあるんですが。

「TimeLine」ってのが開発者イチオシらしいです。
http://timeline.nifty.com/
面白いといえば面白いけど、どうすんだこれ。ねぇ。
プロジェクト管理とかに使うのか。「メタルギア史」とかはちょっと面白かった。

まあそんなわけで、移行することを決意しました。
前置き長いね。

続きで、具体的な手順についてダラダラ書きました。
普通の日記と同じテンションで書いたので読みづらいかもです。

まず、実行環境は、私はLinuxでやりました。
WindowsでもPerlとPerlのモジュールのインストールがちゃんとできれば動くんでしょうけど、試してないのでなんとも言えません。ここで詰まった方はごめんなさい。

まず、ここでExblog2MTをダウンロードして解凍する。
http://hwat.sakura.ne.jp/hpod/spanners/exblog/exblog2mt/

ここで、このスクリプトにはこのままでは不具合があるので、修正しなければなりません。
修正法というかパッチはCGI版のコメント欄にあるんですが、まあ一行書き換えるだけなのでパッチ当てるまでもないです。
Exblog2MT/Library/Perl/Hwat/Blog/Excite/Parser.pmの92行目あたりの、

ここを、

my $attr = $tree->look_down("class", "POST_TTL");
my $title = $attr->as_text;
my $artid = $attr->look_down("name", qr(\w+))->attr("name");
my $status = $attr->look_down("src", qr[http://.*/post_security.gif]) ? 'Draft' : 'Publish';

こう

my $attr = $tree->look_down("class", "POST_TTL");
my $title = $attr->as_text;
my $artid = '';
my $status = $attr->look_down("src", qr[http://.*/post_security.gif]) ? 'Draft' : 'Publish';

次に、以下のPerlモジュールをインストール。
HTML::TreeBuilder
HTTP::Cookies
HTTP::Request::Common
LWP::UserAgent
Term::ReadPassword
念のため、Jcodeも入れておいた方がいいかもしれません。

モジュールのインストールはこんな感じで。
(Windowsではできません。自分でアーカイブを拾ってきて解凍してインストールしましょう)

$ perl -MCPAN -e shell
cpan > install HTML::TreeBuilder
(以下略)

次に、ブログのスキンを「HTMLベーシック」に変更する。あと念のため、ブログパーツ類はできるだけ非表示に。
しなくても大丈夫かもしれませんが、無用なトラブルは避けるにこしたことはありません。ちなみに私は変更しないと無理でした。

ここからは、サイトに書いてある使用例の通り。

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

URLは、エクスポートしたい記事の中で一番古いやつ。開始地点です。
"output.txt"の中にブログのデータが書き出されます。
"-n"の後の数字はエクスポートする記事の件数。管理メニューの記事管理あたりで確認できます。実際の記事件数より多ければいくつでもいいみたいです。

最初は20件くらいで試してみるのがいいと思う。
20件くらいで手順を一通りためしてみて、うまくいきそうだったら全部やるというのがきっと良いです。

エクスポートできたら、さっそくインポート……する前に、このままだと画像がエキサイトブログに残ったままになってしまいます。この時点では、記事内の画像は全部、エキサイトブログにアップロードした画像ファイルへのリンクになっています。
これでは移行した後もエキサイトブログに迷惑をかけ続けることになるし、何よりブログを削除したら画像も消えてしまう。

ということで、画像も移行します。
ここからは、私のやっつけRubyスクリプトが入ります。

まず、output.txtの中の画像URLを全部抜き出します。
エキサイトブログはJPGとGIFの画像しか対応していないので、まあこんなもんでいいでしょう。

### imgurl.rb ###
open(ARGV.shift) { |io|
  io.read.scan(/src=\"(http:\/\/pds\.exblog\.jp\/pds\/.*((\.jpg)|(\.gif)))\"/) { |s|
    print $1
    print "\n"
  }
}

これを使って、こんな感じ。

$ ruby imgurl.rb output.txt > imglist.txt

これで、"imglist.txt"に画像のURLが列挙されます。

次に、この列挙された画像ファイルを全部ダウンロードします。
このときに、順番がめちゃくちゃにならないように、ファイル名を連番にします。
というスクリプトがこれ。面倒なんでwgetで取ってきてます。
あーすげーやっつけで少し恥ずかしいけど。

### getimg.rb ###
count = 1
open(ARGV.shift) { |io|
  io.readlines.each do |l|
    l.chomp!
    /.*((gif)|(jpg))/.match(l)
    ext = $1
    print "wget --output-document=#{count}.#{ext} #{l}\n"
    `wget --output-document=#{count}.#{ext} #{l}`
    count += 1
  end
}

これを使って、こう。

$ ruby getimg.rb imglist.txt

カレントディレクトリに大量の画像ファイルがダウンロードされるので注意。

次に、ココログ側にこの画像をアップロードする。
これには、ココログの「マイフォト」って機能を使います。

まず最初に、ダウンロードした画像を1グループ1MB以下になるように分けて、zipで圧縮します。

次に、適当なフォルダ名でアルバムを作る。ここでは"oldimages"にしました。
で、できたら「新しい写真の追加」で、「追加する写真の枚数・ファイル形式の指定」で「zipファイルをアップロードする」を選ぶ。
そしてさっき作ったzipファイルを全部アップロードする。
これで画像はOKです。

ここでアップロードした画像ファイルのURLは
http://{ブログ名}.cocolog-nifty.com/photo/{フォルダ名}/{ファイル名}
という感じになる。
具体的にはこんな感じ。
http://nada-wagahai.cocolog-nifty.com/photos/oldimages/328.gif

次に、この画像URLに合わせて、元の記事の画像URLを書き換えなければなりません。
そのスクリプトがこれ。

### replaceimg.rb ###
count = 0
open(ARGV.shift) { |io|
  str = io.read.gsub(/src=\"(http:\/\/pds\.exblog\.jp\/pds\/.*((\.jpg)|(\.gif)))\"/) {
    count += 1
    "src=\"http:\/\/nada-wagahai\.cocolog-nifty\.com\/photos\/oldimages\/#{count}" + $2 + "\""
  }
  print str
}

これはひどい。
っていうかもう面倒くさくなってきて直書きです。imgurl.rbも使い回しです。
まあ、できればいいということで、使う場合は"nada-wagahai"と"oldimages"のところを適当に書き換えて使ってください。

これを、こう。
今回はリダイレクトを忘れると大変なことになるので、リダイレクトした方が身のためです。

$ ruby replaceimg.rb output.txt > output-cocolog.txt

そして、出来上がった"output-cocolog.txt"をインポート(記事の読み込み)すればいいんですが、ココログの仕様で「1MB以上のファイルはアップロードできない」ので、1MB以下ならインポートして終了と。
1MB以上なら、うまいところで分割して、1MB以下のファイルを複数回に分けてインポートと。

分割は、ファイル内のこの印の直後で切るといいです。念のため。

-----
--------

あと、ファイルの文字コードはUTF-8にしておくのが無難です。

ということで、これで終了です。おつかれさまでした。
うまくいかなかった方、自分なりに頑張ってください。

|

« 正解 | トップページ | 東方地霊殿 委託販売開始? »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1100905/23779484

この記事へのトラックバック一覧です: エキサイトブログからココログへの移行:

« 正解 | トップページ | 東方地霊殿 委託販売開始? »