はじめに
最近、小2の長男がYoutubeで変な動画を見始めました。変な動画というのは「親にとっては変な動画」です。具体的に言うと、青鬼とか、生首が機械の声でゲーム実況しているやつとか、ムスカのMADとか、ドナルドがワイワイしているやつとか、親からすればしょうもないものが子どもは好きなんです。私も子どものときはそうだったと思います。
iPadを取り上げたり、アプリを消してしまうのは簡単ですが、どうにか自分で卒業してほしいなと思い、いろいろ検討した結果、UiPathを活用することにしました。
【他に検討したこと】
・Youtube Kids(インターフェースが違いすぎて、子どもがなじまない)
・Youtubeの設定(ブロックや興味なしボタンは、積極的に探す子には意味がない)
・i フィルター(Youtubeアプリはssh通信なので特定動画のブロックは外からできない)
・プロキシ経由でYoutubeさせる(これも特定動画だけのブロックができない)
無理やり取り上げられるより、最初は見れるけれど途中から見えなくなって、「なんか上手くいかないなー」くらいでフェードアウトしてもらうのが目的です。
フロー概要
ざっくりというと以下の流れです。
1.Youtubeの再生履歴を表示
2.最新5件の結果をスクレイピングし、CSVに出力
3.予め設定していた「禁止ワード.csv」と突き合わせる
4.キーワードに合致したら、iPadの使用をルータから停止する。
(合致しない場合は、1分待機して繰り返し)
5.2分停止して、またもとに戻す
6.再生履歴をクリアするために、5件関係のない動画を開く
以下が、外側のフローチャートです。

フロー詳細
youtube検索履歴を開く&ログイン

Youtubeの再生履歴を開きます。
ユーザとパスワードをUiPathで入力してもいいのですが、失敗率が高くなるので、ブラウザの自動入力で進むことにしました。UiPathのツール画面からChromeのエクステンションを入れておく必要があります。
youtube検索履歴データスクレイピング

念の為ブラウザにアタッチして、それからデータスクレイピングを使います。

スクレイピング画面のイメージです。
再生履歴のタイトル上位2件を選択すれば、続きを選択してくれるようになります。
私は、作者も禁止ワードに入れたかったので、追加してます。

その後、CSVに出力します。
ExactDataTableにも出力します。Shift-JIS指定もします。
繰り返し (各行)

スクレイピング結果と禁止ワードを突き合わせします。

前のフローで出力した「ExactDataTable」を1行ずつ読み込みます。

次に、禁止ワード.csvを「DataTable2」に読み込みます。
ちなみに、禁止ワードの中身は以下のようにしています。

これが、親子電脳戦争、親側攻撃の心臓部分です。
再生履歴から見てほしくない動画のキーワードを入れます。ヒカキンさんにも申し訳ないですが、青鬼の動画でわーわーやっているのが、周りで聴いていると耐えられないのでブロック対象にしました。いい動画もいっぱいあるでしょうけど。
ちなみに、「鬼」は、妻が後日「鬼束ちひろ」の動画を見ようと思って、ブロックが発動したので笑っちゃいました。おっぱいもダメだよ!

1つ読み込んだ再生履歴と禁止ワードの全件を突き合わせる子ループです。
DataTable2を1行ずつ読み込みます。

1行読み込んだら、kinshiWordに代入します。

etsuranRireki.Contains(kinshiWord) で、部分検索を行います。
禁止ワードの一部を含む、再生履歴のタイトルがあれば、
KinshiWordKenchi = Trueとして、検知フラグをONにします。
フロー条件分岐

KinshiWordKenchiのフラグがTrueであれば、端末停止フローへ進みます。
Falseであれば、1分待機して次の監視タイミングまで待ちます。
さて、途中ではありますが、
寝る時間になってしまったので、続きはまた次回にします。
親子電脳戦争、結末はいかに?
コメント