晴歩雨描

晴れた日は外に出て歩き、雨の日は部屋で絵を描く

はてなブログのエクスポートファイルの画像リンクをWordPressローカルに変えるJScriptを作成。

自宅の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」で教えてもらった。