Raspberry Pi 4 Model B 8GB(Revision:d03114)でDTVをやってみたくなったのでEPGStationを構築した。

 MirakurunはMirakurunのchinachuかEPGStationで放送番組の視聴・録画・管理を行えば良いのでおさしみくんはEPGStationを選択っす!

インストール済みか確認

$ apt list --installed | grep nodejs ffmpeg python gcc
一覧表示... 完了
ffmpeg/testing,now 7:4.1.6-1~deb10u1+rpt1 armhf [インストール済み]
gcc/stable,now 4:8.3.0-1+rpi2 armhf [インストール済み]
grep/stable,now 3.3-1 armhf [インストール済み]
nodejs/stable,now 10.21.0~dfsg-1~deb10u1+rpi1 armhf [インストール済み]
python/stable,now 2.7.16-1 armhf [インストール済み]

$ sudo mirakurun version
/usr/local/lib
└── mirakurun@3.3.1

インストール先を確認

FFmpeg/FFprobe についてデフォルトでは /usr/local/bin/ にインストールされていると想定しています
違う場所にインストールされている場合は config.json を修正してください
$ which ffmpeg ffprobe
/usr/bin/ffmpeg
/usr/bin/ffprobe

DBの構築

いずれかのデータベース (文字コードは utf-8 とする)
  SQLite3(設定不要だが検索機能に制限あり)[標準]
   SQLite3 使用時の正規表現での検索の有効化について
  MySQL (MariaDB)【推奨(要設定)】
  PostgreSQL (version 9.5 以上)

 標準で。

SQLite は標準で REGEXP 関数をサポートしておらず正規表現での検索ができません。ただし、Run-Time Loadable Extensions - SQLite にあるように実行時に自作の SQL 関数を読み込むことができます

この機能を使用して EPGStation で SQLite3 使用時でも正規表現を使えるようにする手順を紹介します

https://www.sqlite.org/2020/sqlite-amalgamation-3330000.zip
https://www.sqlite.org/2020/sqlite-src-3330000.zip

$ wget https://www.sqlite.org/2020/sqlite-amalgamation-3330000.zip
$ wget https://www.sqlite.org/2020/sqlite-src-3330000.zip
$ unzip sqlite-amalgamation-3330000.zip
$ unzip sqlite-src-3330000.zip

$ cp sqlite-src-3330000/ext/misc/regexp.c sqlite-amalgamation-3330000
$ cd sqlite-amalgamation-3330000

$ gcc -g -fPIC -shared regexp.c -o regexp.so

$ cp regexp.so /home/pi/EPGStation/data/

 EPGStationをインストール後にconfig.jsonへ追加

   "sqlite3": {
       "extensions": [
           "/hoge/regexp.so"
       ],
       "regexp": true
   },

EPGStationのインストール

$ git clone https://github.com/l3tnun/EPGStation.git
$ cd EPGStation

# --save オプションはnpmのversion5から要らないと思うけど公式に従ってみよう。
$ npm install --no-save
$ 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詳細マニュアルを見たほうが良いです。他にも見たほうが良いです。他も見てみてください。

$ nano config/config.json
   "dbType": "sqlite3",
   "sqlite3": {
       "extensions": [
           "/home/pi/EPGStation/data/regexp.so"
       ],
       "regexp": true
   },
   "ffmpeg": "/usr/bin/ffmpeg",
   "ffprobe": "/usr/bin/ffprobe",
   "maxEncode": 1,

手動で起動

$ npm start
> EPGStation@1.7.6 start /home/pi/EPGStation
> node dist/server/index.js
[2020-11-06T12:41:18.865] [WARN] system - reserves.json is not found.
[2020-11-06T12:41:18.963] [WARN] system - dbinfo.json is not found.
[2020-11-06T12:41:18.975] [INFO] system - create dbinfo.json
[2020-11-06T12:41:19.010] [INFO] system - ServicesDB created
[2020-11-06T12:41:19.037] [INFO] system - ProgramsDB created
[2020-11-06T12:41:19.067] [INFO] system - RulesDB created
[2020-11-06T12:41:19.095] [INFO] system - RecordedDB created
[2020-11-06T12:41:19.129] [INFO] system - EncodedDB created
[2020-11-06T12:41:19.148] [INFO] system - RecordedHistoryDB created
[2020-11-06T12:41:19.196] [INFO] system - start Updater pid: 7734
[2020-11-06T12:41:20.216] [INFO] system - mirakurun -> services: 19
[2020-11-06T12:41:20.236] [INFO] system - insert Services done
[2020-11-06T12:41:20.579] [INFO] system - mirakurun -> programs: 5168
[2020-11-06T12:41:21.218] [INFO] system - insert Programs done.
[2020-11-06T12:41:21.228] [INFO] system - mirakurun -> tuners: 2
[2020-11-06T12:41:21.412] [INFO] system - updater done
[2020-11-06T12:41:21.430] [INFO] system - start updateAll
[2020-11-06T12:41:21.444] [INFO] system - done updateAll

自動で起動

$ sudo pm2 startup
# これでもいいや
$ sudo pm2 start dist/server/index.js --name "epgstation"
$ sudo pm2 save

詳細マニュアルにそってconfigファイルを弄り倒す

ログファイル

デフォルトではファイルサイズが 1024KB を超過するとログローテーションされます
ログファイルは 3 世代分保存され、古い方から消去されていきます

 デフォからの変更はここに載っていた。おさしみくんはノータッチ。

isEnabledDropCheck:録画時のドロップチェックを有効化
dropCheckLogDir:ドロップチェック時に生成される .log ファイルの保存先

"isEnabledDropCheck": true
"dropCheckLogDir": "/hoge/fuga" 

 おいしい。

dbType:使用するデータベースの種類

"dbType": "mysql"

 デフォルト値はmysqlなのにコピーして作成したconfigファイルにはsqlite3の指定が予め行われていた。それにした。宜しければボツ記事をどうぞ。

recorded:録画ファイル保存先
thumbnail:サムネイル画像ファイルの保存先

"recorded": "/hoge/fuga"
"thumbnail": "/hoge/thumbs"

 外付けHDDであれば自動マウント設定をしてchmodで変更が必要なことも。DBのデータ(SQLite3)もHLS配信の一時領域もフルパス指定で可能。

fileExtension:録画ファイルの拡張子

MPEG2-TSの拡張子は.ts .mts .m2t .m2tsのいずれかが望ましい
ピリオド.を付け忘れないように
"fileExtension": ".m2ts"

 .m2tsにした。

maxEncode:エンコードやストリーミングで使用されるプロセスの上限数

"maxEncode": 3

 1にした。

basicAuth:BASIC認証の設定

"basicAuth": {
   "user": "username",
   "password": "password"
}

 うれしい。(引用だとズレる)

subDirectory:サブディレクトリとして動作させる (リバースプロキシ利用時を想定)

http://<IPaddress>:<Port>/<subDirectory>として動作する
"subDirectory": "subdir"

 うれしい。(<ul><li>としたタグ打ちできないんですか?ノートは。今更だけど。)VPNでもそれでも二刀流で嬉しさ倍増。感激で嬉し泣きぴえん🥺。

EPGStation WebAPI

EPGStation が提供する WebAPI は express-openapi によって提供される、OpenAPI (Swagger) 準拠の RESTful API です
利用可能な全ての API は Swagger UI 上で確認可能です
http://<hostname>:<port>/api/debug

画像1

Basic認証利用時のAPIアクセス
WebAPI へのアクセスにも認証が必要です http://<username>:<password>@<hostname>:<port>/api/{api-path} とすることでURLのみで認証可能です

 WebAPIは物凄くおいしい。マジ嬉し泣きぴえんこえてぱおん🥺。

この記事が気に入ったらサポートをしてみませんか?