LoginSignup
0
2

More than 1 year has passed since last update.

VRChatのログイン監視体制を作る②

Posted at

概要

以下の記事を参照

本記事について

上記記事にてフレンドのログインを監視するところまで作成しているので、
本記事では通知の種類やサンプルコードを記載します。

メール通知

1つめはメールにて通知を行う方法を紹介します。
今回使用するシステムはSendGridです

こちら、クラウドタイプのメール配信サービスで初回会員登録に承認が必要ですが、
無料プランでもある程度の件数のメールを送ることができるサービスです。

今回記載するスクリプトは以下環境にて動作させています。
----環境----
OS : Linux
Apacheバージョン : 2.4.6
PHP       : 7.4.13

今回はcURLを使用してapiをpostする方法でメールを送ります。
※SendGrid公式ライブラリを使用する場合の方法はSendGrid公式に記載されています

sendmail.php
<?php
$url = 'https://api.sendgrid.com/';
$sendgrid_apikey =SendGridのAPIキー;
$mail_address = "送信先のメールアドレス";
$FILE = 'tmp_players.txt';
$BOARD = json_decode(file_get_contents($FILE));

$params = array(
    'Authorization: Bearer'  => $sendgrid_apikey ,
    'to'        => $mail_address,
    'subject'   => "監視対象ログイン通知",
    'html'      => "
    以下お友達がログインしました
    <br /> ".$BOARD.
    "早く会いに行きましょう",
    'from'      => 'vrclogintest@monitoring.jp',
  );

$request =  $url.'api/mail.send.json';
if (!defined('CURL_SSLVERSION_TLSv1_2')){
define('CURL_SSLVERSION_TLSv1_2', 6);
}

// カールリクエストを生成する
$session = curl_init($request);
// SSLv3を使用しないようにPHPに指示します(代わりにTLSを選択します)
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($session, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $sendgrid_apikey));
// CurlにHTTP POSTを使用するように指示します
curl_setopt ($session, CURLOPT_POST, true);

// これがPOSTの本文であることをcurlに伝えます
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
// Curlにヘッダーを返さないように指示しますが、応答を返します
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// レスポンスを得る
$response = curl_exec($session);
curl_close($session);
?>

これで、以下メールが送信されます
mail2.png

通知メールが来ることでログインしたことが分かるので早く会いに行きましょう

デスクトップ通知

上記メールでの通知ですが、常に監視するためのLinuxサーバーが必要です。
PCを起動していないとログインの通知が来てもすぐにログインはできないので、
常にPCを起動しておく場合はデスクトップに通知を飛ばしたほうがいいですよね。

ということで、次にデスクトップに通知を飛ばす方法を以下にて解説します。
今回はplyerモジュールを使用します。

今回記載するスクリプトは以下環境にて動作させています。
----環境----
OS : Windows
Python : 3.8.8
Anaconda version : 4.10.1
plyer : 2.0.0

notification.py
from plyer import notification

user_file = open("tmp_players.txt", mode='r',encoding='utf-8')
user_data = user_file.read()
user_file.close()

notification.notify(
    title = "監視対象ログイン通知",
    message=user_data + "\nがログインしています\n\n早く会いに行きましょう",
    timeout=5
    )

上記を実行することで以下通知が飛んできます
tuutita.png

こちらを一定時間ごとに自動実行することで常にログイン動向を確認することができるので
ログイン通知が飛んで来たら早く会いに行きましょう

終わりに

これは友達を監視ではなく見守るのための技術紹介記事なので
変なことに使用しないようにしましょう

あくまで友達を見守りたい人向けです...

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2