gologiusの巣スマートフォン用の表示で見るgologiusの巣プログラミング、モデリングなどのメモです。誰かの役に立てるとうれしいです。その2(Pythonスクリプト編)前回サーバー構築と設定をしました。gologius.hatenadiary.com今回はメールチェックとメール送信用のスクリプトを書いていきます。有効にしておく(下記URL参照)スクリプト実行に必要なJSONファイルもDLできるはずです。gmail_mailbox.pyのget_messages()でメール情報を取得できますsend_message()でメール送信できます受信できれば後は好きに弄れば、メール監視スクリプトの完成です。-eにてそのバッチを叩くように設定します(前回記事参照)。checkermain.pyでは、メールを40通見て、エラーと判定されるとメールを送信するようにしています。googleapiclientにモジュール名が変更されています。古い記事を参考にしている場合、ここでエラーになる場合があります。メールの概要を見るためのものです。Qiita調査中ですが、メールを重複して受信する場合があります。その1(サーバー用意編)要件としては以下の二つですメールを監視したい。GMailのルールだと限界感があるので、プログラムでゴニョゴニョやりたい。特定条件ならエラーメールを送信したい。GmailAPIを叩くPythonでスクリプトを作成します。作ったスクリプトはサーバー上で一定時間ごとに動かします。サーバーを用意するこれを買いました。LTSを上書きインストールします。デュアルブートにしてもいいんですけど、Win10はメインPCとノートPCに既にあるので今回はなしで。OSなし版を買わなかった・・・(3000円くらい安い、みたいな意見をどこかで見ました)環境構築Ubuntuのインストール方法や、SSHの構築方法は省略します。いろんな記事があるので適用に参考にすればいいと思います。LTSはPythonが既にインストールされています。Python2系とPython3系が両方入っています。--versionで調べられます)パッケージもPython2系とPython3系で管理が分かれています。どちらのバージョンに入れるのかを、明示的に指定する必要があります。明示的に指定する必要があります。有名な仕組みなので、色々情報もネット上にありますのでここで詳しく説明はしません。ログを出力するようにします。文法自体は他のサイトを参照してください。server-memo.net#10分ごとにメールチェックをするバッチを叩きにいく。/home/username/python/mail_checker/start.shstart.shの中身はこんな感じ。実行日ごとにログファイルを作成し、追記しています。GitHub設定後、cronをreloadかrestartすると、設定スケジュールどおりに実行される。statusで確認可能です。まとめサーバー上で一定時間ごとにPythonスクリプトを起動させる準備が整いました。背景Gmailの取得をPythonで開発していました。20:37:10String型なのでDate型で色々したいわけですよ。Pythonでは以下のような方法で「文字列→Date型(厳密には違いますが)」ができます。%H:%M:%S")※dateutilなど別の方法でもできます。末尾にスペースが入っていたからカンマが入っていたからなので以下のように文字を消してあげると正常に動きます。スペースなので、表示されていないように見えていたわけですね。JSON構文エラーになっている模様。構文チェッカーでチェックしても普通に問題はない。if(!confirm('サーバー上のファイルを削除します。}原因サーバー側のcancel.phpが原因。他ファイルは全てUTF-8で統一されていたが、こいつだけUTF-8-BOMになっていた。なっていたっぽいBOMとはuxmilk.jp感想クソハマったのでつらかった。いうツールがapt-getで使えるようです。Win版も配布されていましたが、Win10では使用できませんでした。あとは適当に編集してやればできるのですが、私の方法を記載しておきます。loggerのログが重複するログが再起動のたびに増えていくバグと、運命の出会いを果たしたのでメモします。Pythonのログの取り方をお勉強しました以下の記事で、ログの取り方について学びました。エラーなのか警告なのかログなのか分からない。グローバル変数的な立ち位置。ローカル変数的な立ち位置。※詳しくは元記事を参考にしてください・・・。お、同じログがいっぱいでるぞ~以下の記事で解決uyamazak.hatenablog.com再実行するたびにログが増えていく上記の記事のようなログ用モジュールを作成して、実行する。returnこれで重複出力はなくなります。Selenium+Pythonにて、アラートが出る新規ウインドウに遷移したい(125969)|teratail※2018/06/03追記どうやらヘッドレスモード(GUI、ウインドウを表示しないモード)にすると、いちいち前のウインドウに遷移する必要がなくなるようです。記事の最期の方に記載しておきます。↑とか書いちゃったのですが、実際には新規ウインドウが出るようなボタンをクリック(新規ウインドウでアラートが出るまで待つ。)switch_to_window()で新規ウインドウをアクティブにするの流れで処理すると動くようですやりたいことリンクをクリックする→新規ウインドウが開く(※ただしウインドウが開くと即アラートが出る)という動きをSelenium+Pythonで実現したいと考えています。実際にはその先のボタンを押したいのですけどね。下記のリンクで例を見ることが出来ます。調べているとどうもアラートを消すためには、アラートが出ているウインドウに遷移しなければならないウインドウに遷移するためには、アラートを消さなければならないと、デッドロックみたいな状況になっているようです。以下ソースの★1、★2の部分です。遷移前のウインドウをアクティブに(switch_to_window)するAlert(driver).accept()なども実行可能になるみたいな気がします。上記のような不具合を抜きにしてもSelenium便利。ちなみに検証用サイトはgithubioで作成しました。gologiusのページJavaScript使えるのでこういう際にサクッと作れるので便利。22:57Selenium+Pythonにて、アラートが出る新規ウインドウに遷移したいTweet広告を非表示にするコメントを書くもっと読む次のページ検索プロフィールid:gologiusプログラミング、モデリングなどのメモです。誰かの役に立てるとうれしいです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。