自宅のWindowsPCローカルにWordPressをインストールしている。
はてなブログのエクスポートファイルでは写真画像は、はてなフォトライフを参照する形になっている。
≪サンプル≫
https://cdn-ak.f.st-hatena.com/images/fotolife/a/art2nd/20220731/20220731131124.jpg
これをWordPressのローカルディレクトリ「wp-content/uploads/hatena/」に変更する。画像ファイルは、別途別の方法ではてなフォトライフからダウンロードする。
wp-content/uploads/hatena/20220731_20220731131124.jpg
WordPressのローカルディレクトリに置き換えるJScriptスクリプトを作成。
JScript ≪hatena-img-chg.jse≫
※ 以下のスクリプトは、エクスポートファイル内には「ZZZZZ」という文字列はない前提で作成。
※ エクスポートファイルをこのスクリプトファイル「hatena-img-chg.jse」に、ドラッグ&ドロップして使う。
xxx.hatenablog.com.export.txt
↓↓↓(変更後のファイル)
xxx.hatenablog.com.export-imgchg.txt
≪hatena-img-chg.jse≫
// ドラッグ&ドロップしたパス情報を取得 var args = WScript.Arguments; var inputFile = args(0); var sr = new ActiveXObject("ADODB.Stream"); sr.Type = 2; // adTypeText sr.charset = "utf-8"; sr.Open(); sr.LoadFromFile(inputFile); var str = sr.ReadText(-1); // adReadAll sr.Close(); var tmp = str.replace(/https:\/\/cdn-ak\.f\.st-hatena.com\/images\/fotolife\/a\/art2nd\//g,'/wordpress/wp-content/uploads/hatena/ZZZZZ'); var out = tmp.replace(/ZZZZZ(\d{8})\/(\d{14}\.(jpg|png|gif))/g,function() { return arguments[0].replace('\/', '_').replace('ZZZZZ', ''); }); var sw = new ActiveXObject("ADODB.Stream"); sw.Type = 2; // adTypeText sw.charset = "utf-8"; sw.Open(); sw.WriteText(out, 1); // adWriteLine sw.SaveToFile(inputFile.slice(0,-4) + "-imgchg.txt", 2); // adSaveCreateOverWrite sw.Close();
※ はてなブログのURLをローカルリンクのURLに変換する正規表現については、「teratail」で教えてもらった。