ブログ記事数もそこそこ増えてきたけど今まで一度もバックアップを取っていない。Webサービスなんてしょせん他人のフンドシ(提供する場所)上で作っているものなので、例えばはてなブログが倒産したり、突然ブログサービスをやめたら全て消えてしまう。
信じられるのは自分のローカル。手元にあるハードディスク。結局はここに落ち着く。はてなブログで書いた記事もPDFにして自分の手元に置いておくことにした。
かといって、600以上もある記事を一つ一つブラウザで開いてPDF変換なんてやってられない。自動化する。bashを使ってはてなブログの記事を全てコマンド一発でPDFにすることを考える。
完成イメージはこんな感じ。
<元記事>
<コマンド実行>
$ wkhtmltopdf "http://ブログURL" 出力ファイル名.pdf
<PDF変換後>
若干フォントは変わってしまうが、読む分にはまったく問題ない。
<環境>
・fedora Linux 20(CentOSとほとんど同じ)
・wkhtmltopdf をインストールして使う
<参考>
この記事そのまま進める。
<インストール>
まずは、前提になる環境アプリ( libXrender libXext)をインストール。
$ sudo yum -y install libXrender libXext
変換アプリ本体(wkhtmltox)をダウンロードする。
$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
$ tar Jxfv wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
$ sudo cp wkhtmltox/bin/wkhtmltoimage /usr/local/bin/
$ sudo cp wkhtmltox/bin/wkhtmltopdf /usr/local/bin/
$ ls -shal /usr/local/bin | grep wkhtmlto
インストールされたかとバージョンを確認。
$ wkhtmltoimage --version
$ wkhtmltopdf --version
PDF変換をテストしてみる。
$ wkhtmltopdf "
http://min117.hatenablog.com/entry/2017/11/18/112741" my_pdf_test_001.pdf
完璧。数秒でできた。
ここまででコマンド一発でURLからpdfを作成する環境は完成。あとは、pdfにしたいURLを一覧にしたテキストファイル(my_blog_URL.txt)を作って、それをbashループで回してwkhtmltopdfコマンドの引数にして食わせてやればよい。
テキストファイルはこれ。
$ vim my_blog_URL.txt
試しに5記事分のリンクだけ書いてみる。
これを bashのforループで回してコマンドに食わせてやる。
まずはfor文でテキストを表示(cat)するテスト。
$ for i in `cat my_blog_URL.txt`; do echo "$i"; done
うまく読めている。
次に出力ファイル名を決める。読み取ったURLの最後の6文字で一意になりそうなのでこれをファイル名にする。awkで切り出す。区切り(フィールドセパレータ -F)はスラッシュなので、-F指定するときにエスケープしてやる。
$ for i in `cat my_blog_URL.txt`; do echo "$i"; echo "$i" | awk -F¥/ '{print $8}'; done
うまく切り出せている。
ここまでくればあとは wkhtmltopdf に食わせてやるだけ。
$ for i in `cat my_blog_URL.txt`; do echo "$i"; echo "$i" | awk -F¥/ '{print $8}'; wkhtmltopdf "$i" `echo "$i" | awk -F¥/ '{print $8}'.pdf; done
一気にpdf化が進む。
あれ。何かエラーが出た。記事が大きすぎるか、写真がデカかったかな?
まあ、変換自体は完了したっぽい。
$ ls -shal | grep pdf$
無事変換できている。開いてみる。
カンペキ。これだからLinuxは最高。
今回は5記事分だけだったが、今後はてなブログ記事のURLを一括で取得してテキストファイルに落とす方法を探せば、完全自動化になる。そこは後日。