2年前くらいに、自分のブログの記事をPDFにバックアップするスクリプトを書いた。
年末だし。2年ぶりに全記事をバックアップする。
まずは、全ての記事のURLを取得する必要がある。Google Analyticsを使う(ブログ始めて早いうちに登録しといてよかった)。
行動メニューから辿る。
検索期間をブログ開始日(2015/10/15)から今日までする。
表示件数を5,000件にする。記事が1,000ちょっとくらいだから、全て表示される。
※「ページタイトル」をクリックすると、読まれている記事のタイトルが分かる。オカネ絡みと、あとは実用的な記事がよく読まれてる印象。
右上のメニューからCSVにエクスポートできる。
ダウンロードして
vimで覗いてみる。
1 # ----------------------------------------
2 # すべてのウェブサイトのデータ
3 # ページ
4 # 20151015-20201228
5 # ----------------------------------------
6
7 ページ,ページビュー数,ページ別訪問数,平均ページ滞在時間,閲覧開始数,直帰率,離脱率,ページの価値
おお。全記事のエントリーアドレスこれで分かる。
これの頭に、ブログのURLをくっつけてやればいいから、
http://min117.hatenablog.com/entry/2017/09/26/021237
http://min117.hatenablog.com/entry/2017/05/20/091443
http://min117.hatenablog.com/entry/2018/10/19/231819
…
てな感じになるわけだ。
ここまでくれば
[bash Dropbox]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228.csv | awk -F, '{print $1}' | egrep '^/entry/20../../../......$' | grep -v fbclid | wc
1331 1331 33279
[bash Dropbox]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228.csv | awk -F, '{print $1}' | egrep '^/entry/20../../../......$' | grep -v fbclid | more
/entry/2017/09/26/021237
/entry/2017/05/20/091443
/entry/2018/10/19/231819
/entry/2018/02/04/094850
/entry/2017/11/18/112741
/entry/2018/08/20/005121
/entry/2018/07/22/122526
欲しい文字列を切り出せた。
tee してファイルに落とす。
[bash Dropbox]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228.csv | awk -F, '{print $1}' | egrep '^/entry/20../../../......$' | grep -v fbclid | tee -a Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv
全ての行の先頭にhttp://***comをつけてやる。
1 http://min117.hatenablog.com/entry/2017/09/26/021237
2 /entry/2017/05/20/091443
3 /entry/2018/10/19/231819
4 /entry/2018/02/04/094850
5 /entry/2017/11/18/112741
6 /entry/2018/08/20/005121
vimの矩形選択を使うとイッパツ。
こうなる。
1 http://min117.hatenablog.com/entry/2017/09/26/021237
2 http://min117.hatenablog.com/entry/2017/05/20/091443
3 http://min117.hatenablog.com/entry/2018/10/19/231819
4 http://min117.hatenablog.com/entry/2018/02/04/094850
5 http://min117.hatenablog.com/entry/2017/11/18/112741
6 http://min117.hatenablog.com/entry/2018/08/20/005121
これをscpでfedoraに送って
[fedora PT3]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv | wc
1331 1331 33279
[fedora PT3]$
まずは1件確認。
[fedora PT3]$ cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv | head -n 1
/entry/2017/09/26/021237
よし。
wkhtmltopdfでPDF化する。自作スクリプトmywkmtltopdf.shを使う。
[fedora 20201229_hatena_blog_backup]$ ll
合計 64
-rwxrwxrwx 1 root root 33279 12月 29 07:59 Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv
-rwxrwxrwx 1 root root 26774 12月 29 07:58 mywkhtmltopdf.sh
[fedora 20201229_hatena_blog_backup]$
[fedora 20201229_hatena_blog_backup]$ ./mywkhtmltopdf.sh
20201229_075932
引数不足 最低1個必要
=======================
./mywkhtmltopdf.sh URL
=======================
[fedora 20201229_hatena_blog_backup]$
まずは1件。
[fedora 20201229_hatena_blog_backup]$ ./mywkhtmltopdf.sh $(cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv | head -n 1)
実行。
-----------------
日付をつける
-----------------
20201229_080427_Amazon_MasterCard_のリボ払いの罠を回避する(リボ支払額の上限を最大化する)___min117の日記
======================================================================
URL:http://min117.hatenablog.com/entry/2017/09/26/021237
OUT:20201229_080427_Amazon_MasterCard_のリボ払いの罠を回避する(リボ支払額の上限を最大化する)___min117の日記.pdf
======================================================================
Loading page (1/2)
Error: Failed to load https://www.hatena.ne.jp/notify/notices.count.json?services=1&callback=jQuery1124008069457970279714_1609196670657&_=1609196670658, with network status code 201 and http status code 403 - Error transferring https://www.hatena.ne.jp/notify/notices.count.json?services=1&callback=jQuery1124008069457970279714_1609196670657&_=1609196670658 - server replied: Forbidden
Warning: Failed to load https://id.rlcdn.com/709414.gif (ignore)
Printing pages (2/2)
Warning: Received createRequest signal on a disposed ResourceObject's NetworkAccessManager. This might be an indication of an iframe taking too long to load.
Done
Exit with code 1 due to network error: ContentAccessDenied
[fedora 20201229_hatena_blog_backup]$
[fedora 20201229_hatena_blog_backup]$ ll
合計 2968
-rwxrwxrwx 1 root root 2935571 12月 29 08:04 20201229_080427_Amazon_MasterCard_のリボ払いの罠を回避する(リボ支払額の上限を最大化する)___min117の日記.pdf
-rwxrwxrwx 1 root root 70547 12月 29 08:03 Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv
-rwxrwxrwx 1 root root 26774 12月 29 07:58 mywkhtmltopdf.sh
[fedora 20201229_hatena_blog_backup]$
よし。カンペキ。
あとはこれをfor文で回す。サーバに負荷かけないように10秒のsleepを入れよう。
[fedora 20201229_hatena_blog_backup]$ for i in $(cat Analytics_すべてのウェブサイトのデータ_ページ_20151015-20201228_custom1.csv)
> do
> echo "$i"
> ./mywkhtmltopdf.sh "$i"
> sleep 10
> clear
> done
あとは丸一日放置。1300記事がバックアップされるはずだ。