FC2ブログから忍者ブログへの移転(5)テキストデータの修正

移転元のサーバからダウンロードしたテキストデータには、画像ファイルへのリンクが含まれている。
ブログを移行したら、これらのリンクは全て無効となり、そのままでは画像が表示されなくなる。

従って、リンクのURLを全て移行先のサーバでのURLに書き直さなければならない。
(ただし、アフィリエイト広告中の画像へのリンクは書き換えてはならない。)
また、記事中でブログの他の記事を参照しているときは、そのリンクも書き換えが必要だ。

大量のURLの修正は容易ではない。
というより、手作業ではほとんど不可能だ。

この作業では、「正規表現」で置換ができるテキストエディタを使いこなすことが是非とも必要となる。
FC2ブログからダウンロードしたテキストは、文字コードが「EUC」なので、EUCコードに対応していることも必要だ。

正規表現とは

正規表現(regular expression)とは、文字列を、文字列そのものではなく「表現規則に従った表現」で表す、というものだ。
このあとの説明で必要となるので、この「表現規則」の最低限のところだけ、ここで説明しておく。
といっても基礎から解説するのは大変なので、今回使用しているフレーズだけをとりあげる。
詳しくはテキストエディタのマニュアル等で調べてほしい。

表現 意味
.+ 長さ1以上の任意の文字列
[^'"]+ 「'」「"」以外の文字から成る長さ1以上の文字列
[0-9] 数字1文字
. ピリオド

上記の表現規則で検索した結果を、置換する文字列の中で再利用することができる。
これは今回説明する作業で必須の機能なのだが、テキストエディタによって、再利用の書式が少しだけ違う。

検索文字列内で括弧「()」で囲った部分は、置換文字列内で再利用することができる。
これは多くのエディタで共通だ。

再利用する文字列の呼び出し方は、「$+数字」を使うシステムが多い。
(以下で紹介するOEditの場合は、「+数字」を使う。)

検索文字列内で最初に()で囲った部分に適合した文字列は、置換文字列内の「$1」という部分へコピーされる。
複数の「()」がある場合は、1番目〜9番目の「()」を「$1〜$9」で表すことができる。

例えば、
・検索文字列 menu([abc])([1-9])/
・置換文字列 menu-$2-$1/
となっていると、以下のような文字列置換が起こる。

置換前:

/menua1/
/menua2/01.jpg
/menub4/kb.html
/menuc5/i

置換後:

/menu-1-a/
/menu-2-a/01.jpg
menu-4-b/kb.html
/menu-5-c/i
menud4/z

このような、正規表現を用いた検索/置換ができてEUCコードが使えるエディタはいろいろあるが、私は以前からOEditというフリーソフトを愛用している。

以下では、OEditを例に説明して行く。
先ほど書いた通り、OEditではマッチした文字列の再利用に「+数字」を使うので、他のエディタを使用する場合はそのままでは使えない可能性があることは注意が必要だ。

画像ファイルのサーバ部分を一括で書き換える

まずは画像のリンクの書き換えから。
FC2の移転ツールで楽天ブログから移行した画像については、サーバ名の書き換えおよびJPEGファイルの拡張子の置換が必要だ。

当ブログの場合、置換パターンは以下のようになっていた。
赤い部分が変更を要する部分、青い部分は移行先でそのまま使用する部分だ。

置換前の文字列(例) http://blog-imgs-43.fc2.com/i/p/o/ipodlab/blog_import_4f2e8fb916c89.jpeg
置換後の文字列(例) https://blog.ipodlab.net/wp-content/uploads/blog_import_4f2e8fb916c89.jpeg
検索する正規表現 blog-imgs-43.fc2.com/i/p/o/ipodlab/([^'"]+)
置換文字列 file.blog.ipodlab.net/1

なお、このままでは拡張子が「jpeg」となってしまっていて、以前書いたように問題があるが、その修正は後述する。

移転ツールの処理から漏れた画像については、楽天ブログのURLがそのまま残っている。
URLは私の場合は下記のような形式になっていたが、image.rakuten.co.jpの後の数字まじりのディレクトリ部分は複数パターンあるようなので、まず「image.rakuten.co.jp」で検索して、変換すべき対象を洗い出すことが必要だ。

置換前の文字列(例) http://image.space.rakuten.co.jp/d/strg/ctrl/9/65538(長いので略)5.58.2.9.2.jpeg
置換後の文字列(例)
404 NOT FOUND | 文化的電子機器生活
(長いので略)5.58.2.9.2.jpeg
検索する正規表現 image.space.rakuten.co.jp/d/strg/ctrl/9/([^'"]+)
置換文字列 file.blog.ipodlab.net/1

置換前の文字列(例) http://image.space.rakuten.co.jp/lg01/88/0000023988/07/img288e8a9f1ug117.gif
置換後の文字列(例) https://blog.ipodlab.net/wp-content/uploads/img288e8a9f1ug117.gif
検索する正規表現 image.space.rakuten.co.jp/lg01/88/0000023988/07/([^'"]+)
置換文字列 file.blog.ipodlab.net/1

アップロードしたファイルの拡張子だけを書き換える

先日書いたように、画像を移転元サーバからダウンロードする際、拡張子が「jpeg」でアップロードされていたファイルは、拡張子「.jpg」に変更されてしまう。
従って、拡張子の部分も書き換えが必要だ。

対象は忍者ブログへアップロードしたファイルだけなので、以下のような書き換えになる。

置換前の文字列(例) http://file.blog.ipodlab.net/blog_import_4f2e8c08e5d93.jpeg
置換後の文字列(例) https://blog.ipodlab.net/wp-content/uploads/blog_import_4f2e8c08e5d93.jpg
検索する正規表現 (file.blog.ipodlab.net/[^'"]+).jpeg
置換文字列 1.jpg

記事への参照リンクを書き換える

以前自分が書いた記事へのリンクを、自分自身が別の記事で記載することがある。
このようなリンクはFC2ブログの移転ツールは書き換えてくれないので、楽天ブログへのリンクが残ったままになる。

私の場合、そのようなリンクが284件もあり、これも手作業で書き換えるのは困難だった。

忍者ブログ側へアップロードする記事のリンクは、


ナンチャッテshuffle
iPod shuffleそっくりなMP3プレーヤー(しかもFMチューナー付き)が発表されたそうだ。メーカーは台湾のLuxPro。22グラムでFM付き、iPod shuffle激似の「Super shuffle」が、台湾から(ITmediaニ...
数字/

という形式になるが、数字は先頭の記事から順番に1, 2, 3,…と振られていくので、どの記事がどんなURLになるかを事前に正確に知るのは難しい。

一方、楽天ブログでは、記事のURLは


ブログを移転します - iPod shuffle研究所(旧館):楽天ブログ
2012.2.20修正当ブログは、忍者ブログに移転することにしました。新しいURLは以下の通りです。引き続き「iPod shuffle研究所」をよろしくお願いします。

という形式になっていて、最後の数字は年月日+4桁の数字(同じ日に複数記事を投稿した場合は、0000、0001、…と増えていく)となっている。

この変換を自動で行うことはさすがに無理だが、幸い忍者ブログにも、以下のような形式で年月日指定をするURLならあった。


404 NOT FOUND | 文化的電子機器生活

そこで、楽天ブログ側URLの年月日部分だけを取り出し、忍者ブログの形式に変換することにした。
この方法は最後の4桁を無視するので、正確に対象の記事をリンクできない可能性はある。
しかし、当該日の記事は全て表示されるはずなので、実質的には問題ないはずだ。

変換ルールは以下のようになる。

置換前の文字列(例) http://plaza.rakuten.co.jp/ipodlab/diary/201202110000/
置換後の文字列(例)
404 NOT FOUND | 文化的電子機器生活
検索する正規表現
301 Moved Permanently
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])[0-9]+/
置換文字列
404 NOT FOUND | 文化的電子機器生活

数字の先頭から8桁を抽出する正規表現は手抜きな書き方だが、手間減らしを優先。
使うのは一度きりなので。

フリーページへのリンク等を書き換える

これ以外にも、楽天ブログのURLが残っているものは書き換える。

例えば、「カテゴリへのリンク」だ。
忍者ブログにもカテゴリはあるが、記事へのリンクと同様、忍者ブログ側のカテゴリへのリンクは、記事のアップロードを行うまでURLが決まらない。
私の場合はカテゴリへのリンクは件数が少なかったので、記事をアップロード後、手作業で修正した。

他には、「フリーページへのリンク」もある。
フリーページのURLは、


通勤用のバックパックを選ぶ | iPod shuffle研究所(旧館) - 楽天ブログ
iPod shuffle研究所(旧館)の通勤用のバックパックを選ぶのページです。

というように4桁数字になっている。

基本的には、サーバ名を置換し、末尾に「.html」を付ければ済むと思う。
もちろん、フリーページのデータを移転先サーバにアップロードしなければならないが。

私の場合、ルートディレクトリにフリーページを全部置くのはちょっと気に入らなかったので、URLの4桁の数字を2桁ずつに分け、例えば


http://www.ipodlab.net/ipodlab/50/00.html

となるように変換した。

といった具合で、テキストデータの一括修正を終えたら、あとはアップロードするのみ。
アップロード自体はあまり難しくはないが、一応別記事で書く予定。

コメント

タイトルとURLをコピーしました