nanaco ギフト ID を完全自動登録するスクリプトを書いた
セブンイレブンで使える電子マネーの nanaco はギフト券を福利厚生で安く買える. 自分のバイト先はベネフィット・ステーションを使っていて, ベネフィット・ステーションだと 1000円のギフトが 980円と 2% オフになる.
セブンイレブンでの普通の買い物は nanaco を直接使うよりも QUICPay (nanaco) を使うのが一番なので, 基本的に nanaco の残高は必要ないけど, 収納代行などで使う際には当然残高が必要になる.
セブンイレブンで税金などの収納代行や, iTunes Card などの POSA カード類の支払い, 切手の購入などをする際には, 現金だけでなく nanaco も使える (ただしポイントは付与されない) ので, 福利厚生を上手く利用すれば税金や POSA カードのを少し安く支払える. iTunes Card はたまにボーナスもやってるので更に安くなるし, Amazon ギフト券の現金チャージ では Amazon のポイント分も付与されて 4.5% (2.5% + 2%) も安くなる.
で一番の問題がギフト ID の登録が死ぬほど面倒という点. ベネフィット・ステーションでは 1000円のギフト券が 980円で買えて 2% オフだけど, 1000円以外のは全て 1% オフになる. 10000円分必要な時は 2000円を5枚ではなく, 1000円を10枚買う必要がある.
枚数が増えれば増えるほど面倒だし, こんなのを手動でやるのはあまりにもアホすぎるので, ささっと自動登録するのを作ってみた. nanaco ギフトの自動登録ツールは検索すれば出てくるけど, 何故かどれも VB + IE で実装されてて使い物にならないので, TypeScript + Puppeteer で実装した. Puppeteer が動けばどこでも動くので, Chrome 周りをセットアップしたDocker でも動くはず.
実際の動作. 9 個のギフト ID を登録した.
ベネフィットで買った nanaco ギフト ID を完全に自動登録するやつを Puppeteer で作った. 収納代行とかで nanaco 残高が大量に必要なときに便利. pic.twitter.com/LnJgFlh4PM
— 𝕙𝕚 (@hiroto_f_) 2020年6月1日
Gmail で実行すると yarn run start
に渡すギフト ID を取り出すブックマークレットも作ったので, 一切の労力を掛けずに登録できる.
ブックマークレットでギフト ID 抽出とコマンド実行だけすれば後はよしなにしてくれるので, ギフト登録が大分楽になった.
Raspberry Pi 4 で録画サーバーを作った (Mirakurun + EPGStation)
ブログは移動したので,最新のを見る場合は下記のリンクを参照。
Raspberry Pi 4 で録画サーバーを作った.
Raspberry Pi 4 Model B 4GB + Mirakurun + EPGStation で録画鯖作った
— hiroxto (@hiroxto) 2020年3月3日
FFmpeg 周りまだ何も手つけてないけどとりあえず録画は出来たっぽい pic.twitter.com/oSlgPnk7mB
使用したハードウェア
Raspberry Pi 4 Model B 4GB
メモリの使用量的には 2GB モデルでも平気だと思うけど, とりあえず 4GB なら間違いない. 2GB モデルの値段が安くなったけども, メモリが余る分には困らないし, 4GB がおすすめ.
Miuzei Raspberry Pi 4 ケース
電源なしのを購入. 1000 円ちょっとで ケース + ファン + ヒートシンクが揃っていい感じ.
PLEX PX-Q1UD
TV チューナー. 4 チャンネル同時視聴・録画可能な方 (PX-Q1UD) を買ったけど, そもそもテレビあんま見ないし 1 チャンネルの (PX-S1UD) でも良かったかも.
NTTCom SCR3310
B-CAS カードの読み取りに使う. Raspberry Pi で動作してる IC カードリーダーは他にもあるし動けば何でもあり.
B-CAS カード
使ってないテレビから拝借.
HDD
ファイルの保存用. 30分アニメを H.264 の mp4 にエンコードして 1GB 前後なので, デカい容量の方がいい.
自分は取りあえず RT-AC68U の Samba で共有している HDD を使ったので準備してない.
使用したソフトウェア
- Mirakurun
- EPGStation
Raspberry Pi 本体のセットアップ
デスクトップ用途では使わないので, ヘッドレスの Raspbian をインストールした. 別記事に書いた内容をほぼそのまま実行.
チューナーの準備
今回は PLEX PX-Q1UD を使っているので, PLEX のサイトからドライバをダウンロードして Raspberry Pi の /lib/firmware/
に入れる.
PX-Q1UD の中身は, 1 チャンネルモデルの PX-S1UD が USB ハブで 4 つ繋がってるのと同じ感じなので PX-S1UD のドライバをそのまま使う.
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip $ unzip PX-S1UD_driver_Ver.1.0.1.zip $ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware
再起動して dmesg
を実行すると PX-S1UD Digital TV Tuner
が 4 つ見えるはず.
$ dmesg | grep PX-S1UD
カードリーダーの準備
ビルドツールや諸々をインストールする.
$ sudo apt install build-essential pcscd libpcsclite-dev libccid pcsc-tools
B-CAS カードを読み取れているかを確認する.
$ sudo pcsc_scan
Japanese Chijou Digital B-CAS Card (pay TV)
みたいなのが出てれば OK.
B-CAS デコード用のライブラリをインストール
stz2012/libarib25 をインストールする.
$ sudo apt install cmake g++
$ git clone https://github.com/stz2012/libarib25
$ cd libarib25
$ cmake .
$ make
$ sudo make install
録画用コマンドをインストール
recdvb を使うのでインストール.
$ sudo apt install automake $ wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.2.tgz $ tar xvzf recdvb-1.3.2.tgz $ cd recdvb-1.3.2 $ ./autogen.sh $ ./configure --enable-b25 $ EXTRA_SID=1 make $ sudo make install
recdvb --b25 --strip --dev 0 20 10 test.m2ts
みたいなのを実行すれば録画できてるはず. (物理チャンネル 20
を 10 秒間録画して test.m2ts
に保存.)
Node.js をインストール
Mirakurun と EPGStation が動作するバージョンの Node.js をインストールする. Node.js をインストールする方法は無限にあるけど動けばなんでもいい.
Mirakurun をインストール
Dockerを使ってインストールする方法と直接インストールする方法がある.
自分は最初に作ったときは直接インストールしたけど,後からDockerに移行した. Dockerの使い方さえ分かればDockerでやる方が簡単だと思うのでおすすめ.
Docker を使ってインストール
別の記事に書いたのを参照
直接インストール
Mirakurun のドキュメント に従ってインストールする.
プロセスマネージャーに pm2 を使うのでインストールする必要がある.
$ sudo npm install pm2 -g $ sudo npm install mirakurun -g --unsafe --production
チューナーの設定.
sudo mirakurun config tuners
を実行すると /usr/local/etc/mirakurun/tuners.yml
が開かれるので設定する.
$ sudo mirakurun config tuners
で YAML をこんな感じに. PX-Q1UD は PX-S1UD が 4 つあるのと同じ感じなので, 4 個書く.
- name: PX-Q1UD-1_1 types: - GR command: recdvb --b25 --strip --dev 0 <channel> - - - name: PX-Q1UD-1_2 types: - GR command: recdvb --b25 --strip --dev 1 <channel> - - - name: PX-Q1UD-1_3 types: - GR command: recdvb --b25 --strip --dev 2 <channel> - - - name: PX-Q1UD-1_4 types: - GR command: recdvb --b25 --strip --dev 3 <channel> - -
sudo mirakurun restart
で一回再起動する.
次に channels.yml
を設定.
これは API を使うと自動スキャンでよしなにしてくれるので curl で API 叩いて待つ.
$ curl -X PUT "http://localhost:40772/api/config/channels/scan"
終わったら sudo mirakurun restart
で再起動する.
EPGStation をインストール
EPGStation のセットアップマニュアル に従ってインストールする.
EPGStation のドキュメント, 親切に書いてあるのでちゃんと読んで実行すればいい感じになる.
FFmpeg をインストール. Raspberry Pi にはビデオ入力用に H.264 のハードウェアエンコーダがあるのでそれを有効化した FFmpeg を使いたいんですけど, 今は手動ビルドしなくても apt から入る FFmpeg で既に有効化されているので, 普通にインストールした.
インストールして ffmpeg -encoders | grep h264
を実行すると h264_omx
が見えるはず
$ sudo apt install ffmpeg
EPGStation をインストールして, 設定ファイルをコピーする.
$ git clone https://github.com/l3tnun/EPGStation.git
$ cd EPGStation
$ npm install
$ npm run build
$ cp config/config.sample.json config/config.json
$ cp config/operatorLogConfig.sample.json config/operatorLogConfig.json
$ cp config/serviceLogConfig.sample.json config/serviceLogConfig.json
config.json
を書き換える.
設定の内容は全部 https://github.com/l3tnun/EPGStation/blob/master/doc/conf-manual.md に書いてある.
ffmpeg
とffprobe
の場所を指定するwhich ffmpeg
で場所を調べてconfig.json
のffmpeg
とffprobe
を書き換える
- 録画関連のファイルの保存先を Samba に向けておく
- 初期設定では microSD に保存される
recorded
,recordedTmp
,uploadTempDir
, など
- データベースに SQLite3 を使う場合,
regexp.so
をビルドする.
Samba をマウントする
今回は録画したファイルを Samba に保存するので, 適当な所にマウントする.
起動時にマウントして欲しいので, /etc/fstab
に書き込む.
//192.168.1.1/TV-Rec /mnt/TV-Rec cifs username=username,password=password,rw,vers=2.0,file_mode=0755,dir_mode=0755,iocharset=utf8,defaults 0 0
sudo mount -a
を実行すると /mnt/TV-Rec
にマウントされる.
また, 起動時にネットワーク周りの設定を待つため, sudo raspi-config
を実行して, 3 Boot Options
-> B2 Wait for Network at Boot
を実行して再起動.
EPGStation を起動する
下のコマンドで EPGStation を起動して, http://192.168.1.xxx:8888
(Raspberry Pi の IP アドレス) にアクセスする.
$ pm2 start dist/server/index.js --name "epgstation" $ pm2 save
これで基本的な設定は終わり. 後は FFmpeg のオプションなどを調整しないと厳しい.
所感など
FFmpeg 関連はまだ研究中だけど, 少しオプションを調整して 30 分アニメのエンコードを実行したら 40~45 分で終了. まだ改善の余地ありかもしれないけど, 深夜アニメを録画して朝以降に見るくらいにしか使ってないので, 一旦これで運用中.
他に Raspberry Pi で録画鯖を作ろうとしてる人のために Webmin のダッシュボードのスクショを貼っておく. 構成は上の方に書いた使用したハードウェア, ソフトウェアの通り.
家の中でしか使ってないのでリアルタイム視聴は M2TS 無変換で流してる. ほぼ負荷なしで詰まることなく流せるので, 家の中に限ってはオススメ.
Raspberry Pi 4, 録画するだけなら余裕だし, エンコードも H.264 のハードウェアエンコーダを使えば結構行ける.
省電力での動作, ギガビットイーサネット対応, USB 3.0 対応, ハードウェアエンコーダ搭載というスペック, Raspberry Pi Foundation からの「録画鯖に使ってくれ」という熱いメッセージを感じる.