本プログラムは, ftp(proftpd) と連携して、ftp経由で再生した動画ファイルの 未視聴/視聴済 を記録し、playList を生成する ソフトウェアです。
注意Ver1 では samba を使用していたが、Ver2 からは ftp(proftpd) を使うようにした。
PC で録画した動画ファイルを、居間の TV に接続した Fire TV stick+VLC や、
タブレットの VLC 等の再生ソフトを使って視聴しているが、
ファイルが溜まってくると、見た/見ていないの管理が煩わしい。
(後でBDに保存するので、見たら消す方式は使えない。)
そこで、新規のファイルは「未視聴」に、動画再生すれば自動的に「視聴済」
に分類される仕組みを作成した。
├── 番組A
│ ├── 番組A #01.mp4
│ ├── 番組A #02.mp4
│ └── 番組A #03.mp4
└── 番組B
├── 番組B #01.mp4
└── 番組B #02.mp4
├── 視聴済
│ ├── 番組A
│ │ └── 番組A #01.mp4
│ └── 番組B
│ └── 番組B #01.mp4
├── 全て
│ ├── 番組A
│ │ ├── 番組A #01.mp4
│ │ ├── 番組A #02.mp4
│ │ └── 番組A #03.mp4
│ └── 番組B
│ ├── 番組B #01.mp4
│ └── 番組B #02.mp4
└── 未視聴
├── 番組A
│ ├── 番組A #02.mp4
│ └── 番組A #03.mp4
└── 番組B
└── 番組B #02.mp4
% sudo apt install git ruby proftpd-core ruby-sqlite3
LogFormat custom "%u %{iso8601} \"%r\" %s \"%S\" %b"
ExtendedLog /var/log/proftpd/extende.log READ,MISC,EXIT custom
/usr/lib/systemd/system/logrotate.timer
の OnCalendar を変更する。
#OnCalendar=daily # 日付が変わった直後
OnCalendar=*-*-* 6:00:00 # 午前6時
seesaw をインストールするディレクトリに移動し,
% git clone --depth=1 https://github.com/kaikoma-soft/seesaw.git .
出力先のディレクトリを作成し、次項の config.rb の BaseDir に設定する。
% mkdir -p /data/seesaw
定数名 | 意味 | 備考 |
---|---|---|
BaseDir | seesaw が出力するディレクトリ | |
ProftpdLogFN | proftpd の ExtendedLogファイル名 | |
TargetDir | 録画ファイルがあるディレクトリ | 複数可 |
TargetExt | 対象とするファイルの拡張子 | 複数可 |
Exclude | 除外するファイル,ディレクトリの正規表現 | 複数可,ファイル名可 |
RefreshPeriod | TargetDirの検索周期(秒) | |
DoneTime | 視聴済にする再生時間(秒) | |
FlipDelay | 反転処理までの遅延時間(秒) | |
LogRotateSize | log ローテーションサイズ(byte) |
動作確認の為テスト実行する。
エラーメッセージが出ず、シンボリックリンクが作成されれば問題ないので
Ctrl-C で中止
% sudo touch /var/log/proftpd/extende.log
% ruby seesaw.rb
seesaw をバックグラウンドで、実行する。
% ruby seesaw.rb -b
OS のリブート時に、起動したい場合は crontab に下記を記述する。
@reboot /usr/bin/ruby /home/xxx/yyy/seesaw.rb -b
バックグラウンドで実行する。
str を正規表現として、一致するファイルを視聴済にする。
例: ruby seesar.rb --done ニュース
str を正規表現として、一致するファイルを未視聴にする。
例: ruby seesar.rb --notyet ニュース
–notyet/done の時に test mode(表示のみ)にする。
バックグラウンドで動いている seesaw を停止させる。
log に出力するレベルを指定する。n = 0〜5 でデフォルトは 1
データの再検索を行う。
ftp経由で、動画ファイルに対して次の操作をした場合に状態遷移が起きる。
なお操作2は、操作1の終了から FlipDelay で指定した秒数以内で行う操作のこと。
操作1 | 操作2 | 動作 |
---|---|---|
Long再生 | なし | 未<->済 の入れ替え |
Long再生 | Short再生 | なし(キャンセル) |
Long再生 | Long再生 | なし(操作1のキャンセル) |
Short再生 | なし | なし |
Short再生 | Short再生 | 未<->済 の入れ替え |
サーバー側 | クライアント(1) | クライアント(2) |
---|---|---|
Ubuntu 22.04.4 LTS | Fire HD 10 (2022) | Fire stick TV 4k |
ProFTPD Version 1.3.8b | VLC 3.5.4 | VLC 3.5.4 |
不具合報告などは、 GitHub issuse の方にお願いします。
このソフトウェアは、Apache License Version 2.0 ライセンスのも とで公開します。詳しくは LICENSE を見て下さい。