2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-11-26

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は変換しません。

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?