はてなブログからバックアップしたMT形式のエクスポートファイルを
何とかしてHugoにインポートできないか格闘した記録です

プログラム作ろうと思ったけどめんどくさくなってきて
「実はもっと簡単にできるんじゃないか?」
っておもって探してみたら案外簡単にできそうだったのでメモしておきます

MT形式ファイルのSplit

csplitコマンドを使います。

csplit が無い場合

インストールされていないときは coreutils をインストールします

1
$ sudo apt install coreutils

csplit します

1
$ csplit -z -f sample -b hoge%\03d.md ../<hateblo.jp.export.txt> /^--------/ {*}

置き換え

Hugoで解釈できない表現が入ってるので置換をかけていきます

メタデータ区切りの置き換え

1
$ find sample* | xargs sed -i "s/^--------$/---/g"

不要なメタデータの削除

  • hatena blog 用のIDが入っているURLからIDを除去します
  • BODY 文字列を削除します
  • hatena keyword リンクを削除します
1
2
3
$ find sample* | xargs sed -i "s/\/hatena-blog-22//g"
$ find sample* | xargs sed -i "s/BODY:$//g"
$ find sample* | xargs perl -pe 's/<a class=\"keyword\" href=\"[^\"]+\">(.*?)<\/a>/$1/g;' -i

日付フォーマットの置き換え

MM/dd/yyyy HH:mm:ss 形式で出力されていた日付を yyyy-MM-ddTHH:mm:ssZ に変更します

1
$ find sample* | xargs sed -i "s/^DATE: \([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\) \(.*$\)/DATE: \3-\1-\2T\4Z/g"

Tagデータの生成

1
$ find sample* | xargs sed -i "s/^CATEGORY: \(.*$\)/tags: [\1]/g"

image DL

1
$ grep -r -h "<img src=" content/archive/ | sed s/^.*https/https/ | sed s/png.*$/png/ | sed s/jpg.*/jpg/ | sed s/gif.*/gif/ | grep <username>| xargs wget

hatena photo life のリンクを消す

1
2
$ find sample* | xargs sed -i "s#https://cdn-ak.f.st-hatena.com/images/fotolife/m/<username>/......../#/media/#"
$ find sample* | xargs sed -i "s#http://..hatena.ne.jp/<username>/..............##g"

資料