ココログの画像ファイルを一括ダウンロードする方法(その2 )

ココログでアップしていた画像をWordPressでも利用できるように、一括ダウンロードしてみた。その1では、FirefoxのアドオンDownThemAll!を使って画像ファイルリストからダウンロードできることを紹介したが、その2の今回は、そのファイルリストの作り方だ。

ややテクニカルな話になるが、スクリプトを紹介するので、それを使えば誰でもできる(はず)。

この投稿の説明でやる場合、Perlというソフトウェアが必要。Macには標準で入っているので、何もしないでよろしい。Windowsの場合、ActivePerl(基本、無料)などをインストールすればOK。

画像が少ない場合は手作業で成形、という手もあるんでしょうが、何千枚もあるブログ主のような人の場合、無理でしょうな。そういうときこそ、ソフトウェアないしコンピュータの力を借りるのですぞ。

まず、ココログから記事の内容を書き出すこと。これは、ココログの「管理ページトップ」→「ブログ一覧」→「ブログ名」のページから、「便利メニュー」にある「記事の読み込み/書き出し」でできる。

「読み込み/書き出し」ページの下の方に、「書き出し」があるので、「書き出し:IPv6対応」のリンクからファイルを保存する。デフォルトだと、post.txtというファイル名になる。このファイルをメモ帳やテキストエディットなどの適当なエディタで開くと、単純なテキストファイルであることがわかるはず。

投稿が画像へのリンクや画像そのものを持つ場合には、aタグかimgタグがある。このタグをピックアップし、自分のアップしたものだけに絞ってURLを取り出せば、それがそのまま画像ファイルリストとなるわけだ。

たとえば、画像へのリンクはこんな感じになっている。クエリ形式になっているのが特徴で、.shared/image.htmlに画像ファイルの場所を渡すことになっている。aタグで、href属性に.shared/image.htmlを含むものがあれば保存する。

<a href=”http://naosan.way-nifty.com/.shared/image.html?/photos/uncategorized/2012/05/20/dynabook_repair_03.jpg” class=”mb”>

埋め込み画像は、こんな感じになっている。imgタグによる画像は、自分でアップした画像へのものと、外部サイトのものが混じっているので、imgタグで、src属性にnaosan.way-nifty.comかannex.naosan.jpを含むものだけに絞り込み、保存する。

<img width=”400″ height=”266″ border=”0″ alt=”Dynabook_repair_03″ title=”Dynabook_repair_03″ src=”http://naosan.way-nifty.com/blog/images/2012/05/20/dynabook_repair_03.jpg” />

これをスクリプト化したものが、これ。久しぶりにPerlを触ったせいか、いまいちPerlっぽくない気がする。でもPerlっぽく書くと、あとで自分でもわからないコードになることもあり、ここは無難に書いておいた方がよいようだ。

自分用にするには、太字の部分を自分のブログのドメインに書き替えること。ドットをエスケープするのを忘れずに。2個のドメインに対応しているので、余計な場合はどっちか取ってしまってOK。

#!/usr/bin/perl

while (<>)
{
chomp;
$org = $_;
$line = $org;
# anchor tag
while ( $line =~ /(<a [^>]+\.shared\/image\.html\?[^>]+>)/ig )
{
$anchor = $1;
if ($anchor =~ /href=”([^”]+)\.shared\/image\.html\?\/([^”]+)”/ )
{
print “$1$2\n”;
}
}

# img tag
$line = $org;
while ( $line =~ /(<img [^>]+>)/ig )
{
$img = $1;
if ( $img =~ /src=”(http\:\/\/annex\.naosan\.jp[^”]+)|src=”(http\:\/\/naosan\.way-nifty\.com[^”]+)”/i )
{
print “$1$2\n”;
}
}
}

これを、「perl getimg.pl <post.txt | sort -u >image_list.txt」で実行すれば、URLのリストが重複なく作成できる。並び替えも済んでいる(必要ないけど)。

その1でインポートするリストが、これでできた。あとはダウンロードしてWordPress側にFTPであアップするだけ。そして、記事全体のインポートもいよいよ佳境に入るのであった。

コメント