2月4日:酢酸先生にそそのかされて、ローカルで痴漢した ~はてなブログのグローバルテキスト置換
執筆日時:
はてなブログを daruyanagi.jp から blog.daruyanagi.jp へ移した結果、古い記事でリンク切れが多発していた。以前は daruyanagi.jp に ASP.NET アプリを置いてリダイレクトしていたが、それも消してしまったのでアクセス不能なページができてしまっている。ついでに http:// になっているリンクを https:// に書き換えたい――なんてことを考えながら、
はてなブログ、置換機能ほしい……URL を一括で書き換えたりしたい(もうある?
— だるやなぎ に天使が舞い降りた! (@daruyanagi) February 4, 2019
などと Twitter でつぶやいていたら、某焼き鳥の人が
はてブロ自体には痴漢機能なかったからローカルで痴漢したで https://t.co/Ft6iqZGuid
— さくさん (@ch3cooh) February 4, 2019
と教えてくれたので、鳥もすなる blogsync というものを だるやなぎ もしてみんとてするなり。酢酸先生は Mac でやったみたいだが、うちは Windows でやってみる
Windows で blogsync を利用する
blogsync ははてなブログの記事をローカルに保存したり、ローカルで編集した記事をはてなブログに投稿できるコマンドラインツール。CUI に慣れてないとちょっとめんどいかなって感じるかもしれないけれど、そんなに難しくはない。とりあえず Windows 向けの手順を手短におおざっぱに――
1. Chocolatey で Golang をインストールする
blogsync は Go 言語(Golang)で開発されているので、まず Golang の環境を作る。Windows の場合、パッケージ管理ツール Chocolatey でインストールするのが一番楽だと思う。
まだインストールしていない人は、Installation にあるワンライナーでサクッとインストールしよう。次に Cmd.exe を管理者権限で起動し、以下のコマンドを入力して、Golang をインストールする。
choco install golang
2. Go Get コマンドで blogsync を GitHub からとってくる&初期設定
ぶっちゃけ Go 言語はあまり知らんのだけど、Go Get という素敵ツールで blogsync のインストールができるらしい。
go get github.com/motemen/blogsync
これで C:\Users\(ユーザー名)\go\bin に blogsync.exe がコピーされる。パスが通っているので、blogsync で呼び出せる(要 cmd の再起動、以後、C:\Users\(ユーザー名)は ~ と表記する)。
次に、設定ファイル(~\.config\blogsync\config.yaml)を記述する。うちの場合はこんな感じ。
daruyanagi.hatenablog.com: username: daruyanagi password: *** default: local_root: C:\Users\Hideto\Blogs
API キーはブログの設定画面の[詳細設定]タブの下の方に書いてある。ひとつ注意しなければならないのは、独自ドメインでブログを運用している場合。うちは blog.daruyanagi.jp だが、この設定ファイルに記述すべきは独自ドメインを充てる前のドメイン daruyanagi.hatenablog.com となる(ここで躓いて、pull できたのに push できなかった)。元のドメインは、API キーの上に書いてあるルートエンドポイントを見ればわかる。
3. blogsync ではてなブログをダウンロード(pull)する
以下のコマンドですべての記事を取得。
blogsync pull daruyanagi.hatenablog.com
C:\Users\Hideto\Blogs\daruyanagi.hatenablog.com 以下に記事が展開される。
4. 好みのツールでテキスト置換を行う
テキスト置換は好みのツールを使えばよい(コマンドが得意な人はコマンドでどうぞ)。うちは EmEditor がなぜかうまく動かなかったので、Devas というツールを利用した。
少々 UI は古臭いが、問題なく動く。
5. blogsync ではてなブログをアップロード(push)する
最後に、blogsync ではてなブログへ保存する。ほんとは変更したファイルだけ push すれば早いんだろうけど、めんどくさかったからザックリやった。
cd C:\Users\Hideto\Blogs\daruyanagi.hatenablog.com for /r %f in (*.md) do blogsync push %f
少し時間がかかるので(うちの場合 2,000 記事あったけど、10分弱ぐらいだったかなぁ? 忘れた)、お茶を飲みながら待つ。
蛇足
ひとつ注意しなければならないのは、独自ドメインでブログを運用している場合。うちは blog.daruyanagi.jp だが、この設定ファイルに記述すべきは独自ドメインを充てる前のドメイン daruyanagi.hatenablog.com となる。ここを間違えると、pull できるが push できない。
blogsync の存在は以前から知ってたけど、ここで躓いて「Windows には対応してないのかな?」と思っていた。カッとなって WSL でも blogsync の環境を作ったが(当初はこっちで記事を書くつもりだった)、問題にぶち当たったので、「どうも設定を書き間違えてるんじゃないか」と気付けた。結局、Windows 10 でも WSL/Ubuntu でも問題なく動作したので、好みの方でやればいいと思う。
ちなみに、WSL でのセットアップは Choco を入れずに済む分、Windows 環境より簡単。find、grep、sed が使えるなら、WSL の方が楽かもね(適当に sudo してね)。
apt-get update apt-get install golang go get github.com/motemen/blogsync mkdir -p ~/.config/blogsync/ vim ~/.config/blogsync/config.yaml ~/go/bin/blogsync pull blog.daruyanagi.jp
蛇足2
「はてなブログ一括置換ツール」という便利なサービスがあるっぽいので(知らなかった!)、こっちを使うのもありか。ただし、API キーを見ず知らずの人に預けなきゃいけない。