ブログのPDF印刷

あるStray Engineer の日記 も今月で100記事を超えました。

過去の記事を、何らかの方法でオフラインでも見ることができるようにしておこうと思ったのですが、一つ一つ印刷するのは面倒です。

そこでwkhtmltopdfコマンドを使用してPDFに変換してしまうことにしました。wkhtmltopdfコマンドは

sudo apt install wkhtmltopdf

で簡単にインストールすることができます。

事前に、はてなブログの「設定→詳細設定→エクスポート」でMT形式のテキストファイルは作成しておいて下さい。ここではシェル変数 export_file がそれにあたります。

 

f:id:S_E_Hyphen:20180320142349p:plain

 

#!/bin/bash

parent_URL="http://s-e-hyphen.hatenadiary.jp/entry/"
export_file=s-e-hyphen.hatenadiary.jp.export.txt

# BASENAMEを含む行をgrepで検索する declare -a line=(\ `cat ${export_file} |\ grep -n "BASENAME" |\ sed -e "s/:.*$//g"`\ ) mysql blog_summary << _SQL_ drop table if exists summary; create table summary( title varchar(100), URL varchar(100), date date ); _SQL_ for (( i=0; i<${#line[*]}; i++ )) do line_title=`expr ${line[$i]} - 1` # タイトルはBASENAMEの1行上 child_URL=`cat ${export_file} | sed -n ${line[$i]}'p' | sed -e "s/^.*: //g"` title=`cat ${export_file} | sed -n ${line_title}'p' | sed -e "s/^.*: //g"` date=`echo ${child_URL} | cut -c1-10` URL=${parent_URL}${child_URL} mysql blog_summary << _SQL_ insert into summary(title,URL,date) value("$title","$URL","$date"); _SQL_ done temp=`mktemp ./XXXX.tmp` mysql -N blog_summary << _SQL_ > $temp select date,URL from summary order by date; _SQL_ while read date URL do wkhtmltopdf ${URL} PDF/${date}.pdf done < $temp rm $temp

カレントディレクトリの一つ下のPDFというディレクトリに”作成日.pdf”という名前でPDFファイルが記事の数だけ作成されます。

ただ後で気づいたのですが、このスクリプトの実行に伴ってカウンターを大量に回してしまっていました。運営さん、ごめんなさい。