読者です 読者をやめる 読者になる 読者になる

「はてなブログ」の過去記事の文字列を「HatenaBlogTools」で一括置換する

はてな

最近、「はてなブログ」の過去記事について、文字列の一括置換を行った。
そこら辺について。


以下、詳細。



「HatenaBlogTools」(Windows用)での文字列置換


総武ソフトウェア推進所さんが配布しているフリーソフト「HatenaBlogTools」(Windows用)で、「はてなブログ」の過去記事の文字列置換を行った。
はてなブログ用ツール - Works/Tools - 総武ソフトウェア推進所


このツールはWindowsのコマンドブロンプトで使うので、そこら辺に抵抗がなければ使えるかと思います。
コマンド自体は、さほど難しいものでもなく。


まず、「HatenaBlogTools」をダウンロードする。
そして、説明も読む。
はてなブログ用ツール - Works/Tools - 総武ソフトウェア推進所


ダウンロードしたら、「cd」コマンドで「HatenaBlogTools-1.06」フォルダに移動。


例)cdで移動(パスは自分の環境に合わせて変更)

cd C:\Users\Desktop\HatenaBlogTools-1.06


exeがいくつかあるが、文字列置換は「ReplaceEntryContent.exe」を利用。
公式HPの説明を参照。
はてなブログ用ツール - Works/Tools - 総武ソフトウェア推進所


f:id:tonogata:20160816153025j:plain:w600


まずは、置換をテストして、テスト結果をテキストファイル(result.txt)に出力し、確認してみる。
「-n」オプションをつければ、実際には置換されず、テスト結果をみることができる。

ReplaceContentText.exe -id はてなID -blogid ドメイン -apikey xxxxxx -from "置換したい文字列" -to "置換後の文字列" -v -n  > result.txt


「apikey」は、以下を参照。
http://blog.hatena.ne.jp/my/config/detail

  1. 設定
  2. 詳細設定
  3. AtomPub
  4. APIキー


テスト結果は、

[ 現在の本文 ]

[ 置換後の本文 ]

が、丸ごと上下に並ぶ。


「現在の本文」「置換後の本文」という文字列を探し、差分を確認すること。


その結果をみて問題なければ、「-v」オプションだけ外して再度実行すると、置換が実際に行われる。


自分が実行したコマンドを、メモにて。

  • idとapikeyとドメインは、自分のを使うこと
  • 「-v」を外すと実際に置換する


以下は、「はてなブログ」(tonogata.hatenablog.com)のドメインを、独自ドメイン(www.bousaid.com)設定後のものに置換した際のコマンド。

ReplaceContentText.exe -id xxxxxxx -blogid ドメイン -apikey xxxxxxx -from "tonogata.hatenablog.com" -to "www.bousaid.com" -v -n > result.txt


以下は、自分の「はてなダイアリー」(d.hatena.ne.jp/tonogata/)時代のリンクURLを、移行した「はてなブログ」(www.bousaid.com/entry/)に置換した際のコマンド。

ReplaceContentText.exe -id xxxxxxx -blogid ドメイン -apikey xxxxxxxx -from "d.hatena.ne.jp/tonogata/" -to "www.bousaid.com/entry/" -v -n > result.txt


以下は、「続きを読む」(more)を先頭から6行目に挿入してみた際のコマンド。
長いブログもスッキリと表示。記事を分割する「続きを読む」記法をリリースしました - はてなブログ開発ブログ

ReplaceContentText.exe -v -n -regex -id xxxxxxx -blogid ドメイン -apikey xxxxxxx -from "(\A)(.*)(\n)(.*)(\n)(.*)(\n)(.*)(\n)(.*)(\n)" -to "$2$3$4$5$6$7$8$9$10$11<!-- more -->$11" > result.txt


「.NET Framework」の正規表現は何年も触ってなくて、置換実施するのが怖かったので、愚直なコマンドになっている。
馬鹿っぽい感じだが、仕方あるまい。


置換は成功したが、「続きを読む」の表示があまり気に入らなかったので、結局元に戻した。
(moreタグを削除した)

ReplaceContentText.exe -v -n -regex -id xxxxxxx -blogid ドメイン -apikey xxxxxxx -from "<!-- more -->\n" -to "" > result.txt


あと、用語統一したい場合とかの例。
「ちぇけ」を「チェケ」に置換。

ReplaceContentText.exe -id tonogata -blogid tonogata.hatenablog.com -apikey r5i3wpbkv9 -from "ちぇけ" -to "チェケ" -v -n


自分がやったのは、そんな感じ。


まぁ、とりあえず上手くいった。



かなり重大な制限事項


過去記事の一括置換をする場合、注意というか、覚悟が必要。


まず、置換実施の前に、必ずバックアップをとる。
記事データをエクスポートできるようにしました。ブログのバックアップ等にご利用ください - はてなブログ開発ブログ


もし間違って置換してしまったら、バックアップから復元することは、制限付きで可能。


しかし、その制限事項が結構デカい(上記URL参照)。

はてなブックマークやはてなスターは移行されません。
コメントでは、はてなIDは記載されますがユーザーへのリンクはされず、すべてゲストユーザーによる投稿として扱われます。
エクスポートしたブログデータの記事本文はHTML形式のため、元ブログの編集モードに関係なく、インポートした記事は「見たまま」モードになります


はてブやコメント類はともかく、ぜんぶ「見たまま」モード(つまりhtml)になるのか。。。
「はてな記法」で書いている身としては、恐ろしい。


ということで。


文字列の置換は自己責任で。
そこそこ不退転の覚悟で実施する必要あり。



「独自ドメイン」移行時にどうすうか


最近、自分の「はてなブログ」を独自ドメインに移行した。


以前から、自分が昔から使ってるドメインと「同じようなドメイン」にしたいと思っており、面倒でなかなかできてなかったが、重い腰をあげてようやく実行した形。
2年間「毎日ブログ」の締めくくりなど - やじり鳥


独自ドメインにするにあたってネックだったのが、「過去記事に含まれる、自ブログへのリンク」。
記事自体のURLが新しいものとなっても、記事中のリンクURLは、古いURL(古いドメイン)のまま残ってしまう。


ただまぁ、ドメインを変更後、旧URLへのアクセスは、はてな側で新URLに自動でリダイレクトしてくれる。
なので、実際はなんの問題もない。
※「はてなダイアリー」から「はてなブログ」への移行の際もそうだったが


しかし、自分は個人的な趣向の問題から、あんまリダイレクトが好きじゃなくて。


リダイレクト自体は、ネット上で普通に行われる所作ではある。
しかし、自分の管理が及ぶブログにおいては、あんまリ「意味のないリダイレクト」を使いたくなくて。


半永久的に旧URL→新URLへのリダイレクトが発生するのが、気持ち悪いというか、なんというか。
(昔ガラケーのブラウザは、機種によってリダイレクトが3回までとか制限があって、酷い目にあったことがある。その縛りの意識がまだ頭に残ってる感じ笑)


まぁ、純然たる趣向の問題なんだけど。


過去記事の中に含まれる「旧URLのリンク文字列」を新しいものにしようと思ったが、いかんせん、1000記事以上あるので手作業では無理ぽ。
そこで、旧URLへのリンクを、新URLに一括で置換したいな、と。
そう思いまして。


それで、「HatenaBlogTools」を使わせてもらい、過去記事の文字列について一括置換をした。
コマンドは↑に書いた通り。


ただまぁ、上に書いた通りリスクが大きいので、「独自ドメイン」に移行したとしても、通常は「手作業で編集」か、「放置」でいいんじゃないかと思いました。


そんな感じ。


はてな カテゴリーの記事一覧 - やじり鳥