5840668 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

GMの抵抗ワショーイ

全1件 (1件中 1-1件目)

1

御伽原江良

2020.07.28
XML
カテゴリ:御伽原江良
最近よく見ている配信者さんは結構な頻度でメンバー限定配信をされています。
ただ、開始時間は不定期でいつ開始されるかもわからず毎日ゲリラを待つ…
そんな日々から解放されるためは、Youtubeの通知システムを使うのが便利です。






配信がいつ枠を開始したかは「通知」と呼ばれるシステムを使うことで気づけます。
スマートホンだとポップアップ通知がありますね。
Windows10だとこの通知をポップアップしてくれる仕様もあるのですが…


Youtube側がバグってると、このシステムが機能してないこともあったりして。
(枠開始したら配信見るまでの間ずっと目覚ましアラート出してほしいな…)と思い、本システム作成に至りました。

具体的には、Gmail側に届いてる通知を活用します
Youtube側での通知が死んでてもこちらのメール通知は生きてることがしばしば。
予備通知源として確保しておきたい!と思います。

==========================

前提として、Windows10上で以下ソフトを使います。
入ってない人は便利なので是非入れてみてください。
(Macやスマホは対象外)

python3.x(最新のものをインストール)
VSCode(プログラムの編集・実行に必要)

VSCodeからpythonの拡張プラグインも便利なので追加でインストール。



この辺りの手順はもっと詳しいサイトが多数あるので、色々調べてみてください。
(パソコンにマイクラのようなゲーム入れるのと同じものだと思ってもらえると!)


今回作ったお手製プログラムもダウンロードしちゃってください。
お手製プログラム
(pythonのプログラミングの仕方から解説すると際限ないので、ここでは書き方は割愛します、プログラミングに自信ある人は色々改良してね!)
※2020/10現在の情報です
※本プログラムを使ったことによるいかなる損害・損傷もサポート対象外です。自己責任でお願いします。


ここまでインストールできたら、下準備は完了です。

PythonでGmailのメールを確認しよう(マイナビニュース)を参考にしながら進めます。
APIを作成するアカウントはメンバー限定通知が届いてるGメールアドレスと同じものを使ってください。(メールが届いてないアカウントのものを見ると、自動転送が必要になったりでちょっと面倒です)

(1) Googleの開発者コンソールにログインしてGmail APIを有効にする

まずはGoogle Developpers Consoleでプロジェクトを作成しときます。
https://console.developers.google.com/project

その後、Google Developpers Consoleの【APIと認証 > API】でGmail APIをONにします。



英語だけど、アイコンでなんとなくわかるはず。
これ有効にしてプロジェクト作らないと手順が進まないので注意です。

手順の中で「OAuth2.0同意画面を設定する」という部分がありますが、これは
「Gアカウント選ぶ」→「このアプリ信用しますか?[はい][いいえ]」を作るためのもの。
必須なので、OAuthクライアントIDの作成からやっておきましょう。
認証情報ページの[+認証情報を作成]から作れます。




こんな感じになっていればOK。
(APIキーは実は不要ですが、試行錯誤したら作ってた)

OAuth 2.0 クライアント IDで作成したクライアントIDの右にあるダウンロードボタンから
client_secret~.jsonをダウンロード。
client_secret.jsonに名前を変えてお手製プログラムと一緒のディレクトリに配置。
(他の人に共有しちゃダメ!)


プログラム実行…の前にpipを使って実行します。
パスを通したりするのが面倒な人はpythonさえ実行できれてば以下で実行できるはず。

py -m pip install --upgrade pip' command
py -m pip install --upgrade google-api-python-client
py -m pip install oauth2client
py -m pip install httplib2

(他にもエラー出たら大抵この辺りのライブラリって呼ばれる拡張ツールみたいなのが不足してるので、エラーにそれっぽいこと書いてたら追加してあげてください)
(OAuthって何?pipって何?などなど聞きなれない言葉は、開発者にでもならない限りはなんとなく理解しておけばOK)

ここまでできたら、コマンドプロンプトから以下を実行。
(VSCodeでも実行できる)

python python_for_gmail.py

「なんか上手くいかないんだけど!」って人は

python python_for_gmail.py --noauth_local_webserver

としてあげると上手くいくかも。

これ実行すると以下のようなメッセージがでるので、ブラウザにコピペして認証。

=====================
Go to the following link in your browser:

https://accounts.google.com/o/oauth2/auth?client_id=~~~~~~~~~~~~

Enter verification code:

=====================


アカウントを正しく選択してWEBブラウザで認証ページが開いたら流れに沿って進めていくことでcredentials.jsonが生成されるはず。
(生成されてない場合はエラーコードを読み返してみてください。自分もここでかなりつまりました)




こんな感じで認証コードが発行されて、それをコマンドプロンプトかVSodeから実行してあげるとcredentials.json(認証用のキーやトークンなど)が発行されます。
これをお手製プログラムのフォルダと同じ場所に配置。


後はお手製プログラムを実行するだけです。

コマンドプロンプトやVSCodeのデバッグ機能を使って以下を実行。

> python get_mail.py

引数とか考えるの面倒だと思って、これ打ち込んだら後は自動で検知してくれます。

メン限が始まったら通知音(同封のsample.wav)の効果音が鳴るので集合だ!
(普通の配信のほうも反応するよ!)

以下、正しくプログラムが動いてるとPC上で以下のようなメッセージが出ます。



配信来たら音で教えてくれるので、じっくり待ちましょう。



Q:他のキーワードも引っかけて欲しい
A:get_mail.pyの「 if ~~ in msg['snippet']: 」部分を書き換えればOK
こればっかりはpythonの知識ないと難しいけど、単一キーワード引っかけたいだけなら''の中にキーワード入れるだけ。


Q:音を変えたい?
A:sample.wavを別の効果音で上書きしたげてください。
mp3とかの別フォーマットだと動かないので注意。


Q:メールいっぱい届いてるから見逃しそう
A:CHECK_MAIL_NUMの数値を変えてみてください。
RELOAD_TIMEは変えないほうがいいです。
CALL_TIMEが12時間以上の枠は作られないだろうと踏んで720分に設定してます。
メン限始まったらCtrl+Cでプログラム止めればアラートも止まります。


Q:エラーが出て動かない!助けて!
A:がんばれ。
大体エラーメッセージでググると解決法が出てくる。
プログラムの改良要望とかあったら教えてくださいまし。


Q:これずっとPC立ち上げっぱなしだよね?
A:うん。
そもそも家にいる間以外で配信枠見れる状況を想定して作っていない…。
ステイホームの精神でお願いします。
(出先から見る人は…うーん…)



注意点として、リクエスト回数が多すぎるとGmailから503エラーをもらってメール取得自動実行スクリプトが止まってしまうので注意。
(ハングアウトしないようにtry-catchを挟んでいますが、無茶苦茶な動作をすると最悪APIが止まるので注意)
一度取得したら大体300秒以上のクールタイムを挟んであげてください。

あと、Windowsやスマホの通知だと1回見逃すと中々気づかないので、目覚ましのように止めるまで何度も鳴らすようにしておきました。

もっとメールを解析して色々したい!人は以下リンクも参考に。
PythonでGmailを確認しよう その2





[参考]
Google公式の紹介
Gmail api認証まで
Google が提供する API のリクエスト上限数一覧

   ww
 ,,#´ω`#,,
 #´・_・`#ノシ
 #´・ρ・`#ノシ
 #´・▽・`#ノシ
 #´・w・`#ノシ
 #´・ω・`#ノシ
 #´・∀・`#ノシ
 #´・Д・`#ノシ
 #´・-・`#ノシ
 #´・ε・`#ノシ
 #´・ヮ・`#ノシ
 #´・⊇・`#ノシ
..[..===..]
 |ノシショボテン|
 |_\3500_|






Last updated  2020.10.27 00:32:21
コメント(2) | コメントを書く


全1件 (1件中 1-1件目)

1


Copyright (c) 1997-2021 Rakuten, Inc. All Rights Reserved.