KUSONEKOの見る世界

Nextcloud Talkにシェルからファイルを自動投稿する

我が家では、ATOM Camを使って、動体検知(ねこ検知)をしています。検知したときに動画ファイルがATOM Cam本体に保存されます。
その動画ファイルを自宅サーバから定期的にFTPで取得していました。

ATOM Camが旅行・出張時のペット監視に良かった

格安ネットワークカメラATOM Camで猫を撮影してみました。色々な使い方が出来そうで面白いです。

今回、その動画ファイルを外出先から簡単に見られるよう、FTPで取得後にNextcloud Talkに自動投稿させるようにしましたので、そのメモを残しておきます。

Nextcloudの投稿用ユーザの作成

 Nextcloud Talkで自動投稿するユーザをWebで作成します。

私はATOM Camの動画を投稿させるので、ユーザをatomcam、パスワードを安全のため英数字ランダムなものとしました。

投稿用チャットルームの作成

 作成したユーザで、Webにログインし、Talk画面に移動します。

ここで、新規グループ会話の作成をして、任意の名前と会話に追加するユーザ(普段使っているユーザなど)を選択します。

 作成したグループ会話を選択して、グループ会話のIDをURLから確認しておきます。
以下のようなURLの最後の部分です。
https://example.com/nextcloud/talk/********** 

シェルから投稿をする方法

 curlコマンドで自動投稿が可能ですが、事前に投稿用ユーザのディレクトリにファイルを置く必要があります。

今回の例では、atomcamユーザのNextcloudデータディレクトリ内のTalkディレクトリに対象ファイル(test.mp4)を配置し、以下のcurlで投稿できます。

curl -k -d '{"path":"/Talk/test.mp4","permissions":"19","shareType":"10","shareWith":"グループ会話のID"}' -H 'Content-Type: application/json' -H 'OCS-APIRequest: true' -v -u atomcam:パスワード https://example.com/nextcloud/ocs/v2.php/apps/files_sharing/api/v1/shares

スクリプト作成

 以下のスクリプトは、ATOM Camから動画ファイルをダウンロードして、Nextcloud Talkに投稿するまでを行っています。
使われる場合は環境に合わせて、変更ください。

# cat /etc/cron.hourly/atomcam_ftp_talk.sh
#!/bin/sh

HOSTNAME=192.168.0.100
USERNAME=root
PASSWORD=atomcam2
SRC="media/mmc/record/"
DEST="/home/samba/atomcam/ATOM_***********/record/"

NCURL="https://example.com/nextcloud/"
NCUSER=atomcam
NSCPASS=************
TALK="/home/nextcloud/atomcam/files/Talk/"
CHATROOM=************

FTPLOG=`mktemp`


lftp -d -u $USERNAME,$PASSWORD $HOSTNAME -e "\
  mirror \
  --only-newer \
  --verbose \
  $SRC \
  $DEST; \
  exit"  > $FTPLOG 2>&1

find $DEST -type d -empty -delete


array=($(grep -Eo "[0-9]{8}/[0-9]{2}/[0-9]{2}\.mp4" $FTPLOG))

for i in ${array[@]}
do
 SHAREFILENAME=`echo "$i" | sed "s/\//_/g"`
 cp ${DEST}$i ${TALK}${SHAREFILENAME}
 curl -k -o /dev/null -s -d "{\"path\":\"/Talk/"${SHAREFILENAME}"\",\"permissions\":19,\"shareType\":10,\"shareWith\":\""$CHATROOM"\"}" -H 'Content-Type: application/json' -H "OCS-APIRequest: true" -u "$NCUSER:$NSCPASS" "$NCURL"ocs/v2.php/apps/files_sharing/api/v1/shares
done

rm -f $FTPLOG

Nextcloud Talk アプリでの見え方

iOS版Nextcloud Talk見ると、以下のように、1時間に1回動画ファイルが投稿されます。

Nextcloud Talk アプリ

タップすると動画がダウンロードされ、再生ができます。

参考

https://help.nextcloud.com/t/help-with-nexttalk-chat-api/61610
https://github.com/reekol/nk-free-lab/blob/master/app/nextcloud_chat_bot.php

https://nextcloud-talk.readthedocs.io/en/latest/chat/