『7回目の出直し🌻』

好きなことを自分のペースで、のんびり更新

自動キャプチャーするスクリプトをConoHaへ移設。さよなら、ありがとうHeroku

ちょうど1年前、スクショの自動化をしてました。
ちょうど1年後、同じスクリプトのメンテナンスを行いました。

おさらい

まず最初に、1年前に何をやったのか?

puppeteerNodeJsで自動キャプチャーをするプログラムを作りました。自分の悩みを解決するだけのプログラムです。

kanaxx.hatenablog.jp

メンテナンスした理由

上のプログラムをHerokuで動かしていたのですが、2022年11月にフリープランを終了するという案内がありました*1。 フリープランが終わると月額800円くらいの有料プランしかなくなってしまうので、契約中のレンタルサーバーに移行することにしました。

移行元:Heroku

移行先:ConoHa WING

移行に合わせて、プログラムを少々書き換えました。

ConoHaでNodeJsを動かす

ConoHa WINGにはNodeJsがインストールされていないので、自力でNodeJsをインストールするところからやらねばなりません。 幸いにも、おなじようなことをやっている人*2がいたので、ほとんどマネしたら最短距離で行けた気がします。

Nodeのインストールから

今日時点でNodeのバージョンは18.9.0が最新なので入れてみる

mkdir ~/nodejs && cd ~/nodejs
wget https://raw.github.com/dmrub/portable-node/master/bin/install-node.sh
sh install-node.sh --version=18.9.0

homeディレクトリにNodeを入れてみたけどエラーが出る。

node: /lib64/libm.so.6: version `GLIBC_2.27' not found

ネットで調べると、どうやらバージョンが高すぎるとこのエラーが起きるらしい。バージョン下げればよさそうなので、16の最後版をインストールしなおします。

全部消してやり直す。

# ディレクトリを丸っと消して、バージョン指定でやりなおす
$ cd ~
$ rm -rf nodejs
$ mkdir ~/nodejs && cd ~/nodejs
$ wget https://raw.github.com/dmrub/portable-node/master/bin/install-node.sh
$ sh install-node.sh --version=16.17.0

# nodeの確認
$ ~/nodejs/share/nodejs/node-v16.17.0-linux-x64/bin/node -v
v16.17.0

動いたのでPATH設定

$ cd /home/$USER/nodejs/share/nodejs/node-v16.17.0-linux-x64/bin
$ chmod +x *
$ export PATH="$PATH:/home/$USER/nodejs/share/nodejs/node-v16.17.0-linux-x64/bin"

スクリプトをインストール

GitHubからダウンロードしてきて、設定を少々いじる

$ cd ~
$ git clone https://github.com/kanaxx/hatena-autocapture.git
$ cd hatena-autocapture

# モジュールをインストール
$ npm install

起動シェルの環境変数をセット

# 設定を書き換える
$ vi run.sh

> export PATH="$PATH:/home/$USER/nodejs/share/nodejs/node-v16.17.0-linux-x64/bin"
> export LANG="ja_JP.utf8"
> export BLOG_ADMIN_URL="https://blog.hatena.ne.jp/xxx/domain/"
> export HATENA_ID=""
> export HATENA_PASS=""
> export CLOUDINARY_URL="cloudinary://xx:yy@zz"

> cd `dirname $0`
> node hatena-autocapture.js

1行目はインストールしたPATHに合わせます。
3行目は、はてなブログの管理画面のURLに合わせます。

4行目と5行目ははてなのログイン情報にします。
6行目は、CloudinaryのAPIの情報を入れます。Cloudinaryを使わない場合は空白にしてよいです。

実行する

設定が終わったらスクリプトを実行する

$ cd ~/hatena-autocapture
$ sh run.sh

> 2022-09-24 17:06:14 > Start program
> 2022-09-24 17:06:15 > Hatena Login
>  goto page(0) [https://www.hatena.ne.jp/login?location=https://blog.hatena.ne.jp/kanaxx43/kanaxx.hatenablog.jp/]
>  reacged page(0) [https://www.hatena.ne.jp/login?location=https://blog.hatena.ne.jp/kanaxx43/kanaxx.hatenablog.jp/]
>  input login information
>  current url(0) [https://www.hatena.ne.jp/login]
>  current url(0) [https://blog.hatena.ne.jp/kanaxx43/kanaxx.hatenablog.jp/?_www_via=login]
>  login succeeded
> 2022-09-24 17:06:28 > hatena-top
>  goto page(0) [https://blog.hatena.ne.jp/kanaxx43/kanaxx.hatenablog.jp/]
>  reacged page(0) [https://blog.hatena.ne.jp/kanaxx43/kanaxx.hatenablog.jp/]
>  take screenshot [./captures/20220924-170614_hatena-top.png]
>  uploaded to cloudinary as public_id [hatena/20220924-170614_hatena-top.png]
> 2022-09-24 17:06:32 > hatena-accesslog
>  goto page(0) [https://blog.hatena.ne.jp/kanaxx43/kanaxx.hatenablog.jp/accesslog]
>  reacged page(0) [https://blog.hatena.ne.jp/kanaxx43/kanaxx.hatenablog.jp/accesslog]
>  take screenshot [./captures/20220924-170614_hatena-accesslog.png]
>  uploaded to cloudinary as public_id [hatena/20220924-170614_hatena-accesslog.png]
> 2022-09-24 17:06:37 > End program

問題なく実行できていれば、標準出力にログが出てくる

おお、うまくいった。
あとは、これをcrontabに設定して1日1回実行するように仕掛ければOK。

日本語が表示できてない

無事、動いたと思ったら、作られたスクショ画像に日本語が表示されていませんでした。

実際の画像

こちらの記事を参考に、フォントの.ttfファイルを置いてみました。
https://turtlechan.hatenablog.com/entry/2019/06/11/211543

$ mkdir ~/.fonts
$ wget http://raw.githubusercontent.com/edihbrandon/RictyDiminished/master/RictyDiminished-Regular.ttf -P ~/.fonts

無事、日本語部分もキャプチャーできるようになりました。

さいごに

2022年のシルバーウィークは、1年前に作ったプログラムをメンテナンスをしました。

Herokuの無料枠が終了になるのはショックですね。Herokuの代替ツールもあるみたいですが、契約しているレンタルサーバーを選択しました。 同じような環境にある人の助けになればと思います。

参考にしたページ

ConoHaWING もしかしたら色々と凄いかもしれないのでMisskey入れようとしてみた
https://qiita.com/waxsd100/items/0f9bdf61a1a242f4bce9

nodeのv18を使ったらエラーになった(CentOS7)
https://it.ama2pro.net/2022/05/31/node%E3%81%AEv18%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%89%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%EF%BC%88centos7%EF%BC%89/

amazonlinux2 に nodeとnpmをインスコ
https://qiita.com/ma7ma7pipipi/items/c7ee11c6036ec35a1caa

楽天で売れてるものランキング

ランキング更新日: