理系学生日記

おまえはいつまで学生気分なのか

blogsyncとhelm-agではてなブログのカテゴリを整理する

この Blog でずっと整理したかったのが、各ブログエントリのカテゴリでした。

たとえば、この Blog には enlightenment と enlightment という 2 つのカテゴリがありましたが、実際には enlightenment が正しいです。 このような表記揺れをなんとかしたかったのですが、それぞれのエントリが 50 くらいあって、一々直していくのがかなり面倒。

色々ツールを見ていくと、これ使えばできるなってことが分かりました。

1. 全エントリをローカルにダウンロードする

これは blogsync で可能です。

blogsync については、以下のエントリを見て頂ければと思うのですが、はてなブログAtomPub - Hatena Developer Center を使って、 ブログエントリのローカルファイルシステムとのやりとりを行えるツールです。

ぼくの場合、まず、$HOME/.config/blogsync/config.yaml に以下のような設定を行います。

kiririmode.hatenablog.jp:
  username: kiririmode
  password: PASSWORD
default:
  local_root: /Users/kiririmode/hatenablog

その後に、

$ blogsync pull kiririmode.hatenablog.jp

とするだけで、ローカルにエントリがダウンロードされます。 ぼくの場合、2443 の markdown ファイルができました。たとえば昨日のエントリは、以下のようになります。フォーマットとしては Front matter っていうヤツみたいですね。

$ cat ~/hatenablog/kiririmode.hatenablog.jp/entry/20180507/1525650708.md | head -15 | cat -n
     1  ---
     2  Title: 「入門Kubernetes」を読んだ
     3  Category:
     4  - book
     5  - infra
     6  Date: "2018-05-07T08:51:48+09:00"
     7  URL: https://kiririmode.hatenablog.jp/entry/20180507/1525650708
     8  EditURL: https://blog.hatena.ne.jp/kiririmode/kiririmode.hatenablog.jp/atom/entry/17391345971642224256
     9  ---
    10
    11  入門 Kubernetes を読みました。
    12
    13  [asin:4873118409:detail]
    14
    15  冒頭の「はじめに」でも記載がありますが、本としては「使い方」と「概念」に重きを置いた構成になっています。

2. ダウンロードしたファイル上でカテゴリを変更する

ワンライナーでも良いのですが、今回は Emacs の helm-ag を使いました。

なんか色々書いても良いのですが、便利さがなかなか伝わらないので動画にしました。 helm-ag では、全エントリを enlightment で検索して、それを enlightenment に一気に置換するってことをやっています。

3. はてなブログ本体へ反映する

さきほど変更したファイルを blogsync に渡すだけですね。

$ find . -mmin -120 -type f -name \*.md | xargs -n1 blogsync push
       GET ---> https://blog.hatena.ne.jp/kiririmode/kiririmode.hatenablog.jp/atom/entry/8454420450078217445
       200 <--- https://blog.hatena.ne.jp/kiririmode/kiririmode.hatenablog.jp/atom/entry/8454420450078217445
       PUT ---> https://blog.hatena.ne.jp/kiririmode/kiririmode.hatenablog.jp/atom/entry/8454420450078217445
       200 <--- https://blog.hatena.ne.jp/kiririmode/kiririmode.hatenablog.jp/atom/entry/8454420450078217445
     store /Users/kiririmode/hatenablog/kiririmode.hatenablog.jp/entry/20070405/1181142740.md
(snip)

ずっと二の足を踏んでいたのですが、サクっとできるようになって本当によかった…。