Help us understand the problem. What is going on with this article?

livedoorブログからエクスポートしたデータから画像ファイルの取得とURLを一括変換する

More than 1 year has passed since last update.

livedoorブログからWordPressへ移行したい

livedoorブログからWordPressへ移行する場合、通常はlivedoorブログからデータをエクスポートして、WordPressへインポートします。詳しい手順はネットを探せばいろいろ出てきますので、こちらのブログなどを参考にしていただくとして、面倒なのが画像の取得と画像URLの変換です。今回簡単なツールを作ってみました。

変換プログラム

このプログラムはエクスポートしたファイルから<IMG>タグと<A HREF>タグを探して、画像ファイルを片っ端からダウンロードしていくものです。<A HREF>も参照しているのは、livedoorブログでは画像の拡大をする場合にリンクしているためで、<A HREF>タグの場合はJPEG/PNG/GIFのみダウンロードします。

ldblog_img_convert.php
#!/usr/bin/php
<?php
$outdir = "imgs";
$new_baseurl = "https://YourBlogURL/wp-content/uploads/".$outdir;

$infile = $argv[1];
if(! is_dir($outdir)) mkdir($outdir, 0755);
if(! is_file($infile)) die("no file\n");

foreach (explode("\n",file_get_contents($infile)) as $line) {
    $line = preg_replace_callback('/(<img [^>]+>)/i', function($m){
        return preg_replace_callback('/src=(["\'])([^"\'?]+)\??[^"\']*(["\'])/i', function($mm){
            return 'src='.$mm[1]. downloadimg($mm[2]) .$mm[3];
        }, $m[1]);
    }, $line);
    $line = preg_replace_callback('/(<a [^>]+>)/i', function($m){
        return preg_replace_callback('/href=(["\'])([^"\'?]+)\.(jpg|jpeg|png|gif)\??[^"\']*(["\'])/i', function($mm){
            return 'href='.$mm[1]. downloadimg($mm[2].'.'.$mm[3]) .$mm[4];
        }, $m[1]);
    }, $line);
    echo $line."\n";
}
exit;

function downloadimg($url) {
    global $outdir, $new_baseurl;
    if(preg_match("~\Ahttps?://~", $url)) {
        $buff = @file_get_contents($url);
        if(strlen($buff) > 0) {
            for ($i=0; $i<100; $i++) {
                $newname = (($i>0) ? $i.'_' : '') . basename($url);
                $outpath = $outdir.'/'. $newname;
                if(! is_file($outpath)) {
                    file_put_contents($outpath, $buff);
                    $url = $new_baseurl.'/'.$newname;
                    break;
                }
            }
        }
    }
    return $url;
}

?>

使い方

はじめに $new_baseurl をWordPressの画像を置くURLに書き換えてください。
変換するにはコマンドラインから実行します。

$ ./ldblog_img_convert.php backup.txt > backup_new.txt

ダウンロードした画像ファイルは img/ フォルダに保存されるので、WordPressのディレクトリにコピーしてください。backup_new.txtの中の画像のURLは、新しいWordPressでのURLに書き換わっています。もしURL古いままだった場合は、ファイル名がうまく認識できなかったのかもしれません。ダウンロードに失敗した場合はURLは変換しません。

まだ数個の記事でしか動作テストしていないので、バグや改良点がありましたらご指摘ください。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away