Python・Webhook・IFTTTを使って、興味あるカテゴリーのarXiv新規投稿論文のお知らせをメールさせてみた

投稿日: 

IFTTT Python 数学 物理学

B!
Daniel AgreloによるPixabay(https://pixabay.com/)からの画像

こんにちは, Shinoryoです.

論文を読むような方は, 学術論文のアーカイブサービスであるarXivを利用される方は多いと思います.

そこで, PythonIFTTTを使用して, arXivへの新規投稿論文の情報をGoogle翻訳で日本語訳にしてメールさせてみました.

IFTTTの設定

まずは, IFTTTの設定を行います. IFTTTとは, さまざまなサービスを連携して, 「トリガーとなるあるイベントが発生した」場合(IF This), 「あるイベントを発生させる」(Then That)ことができる(合わせてIF This Then That = IFTTT)ものになります.

概要

以下の図のように, WebhookGmailをつなげます.

IFTTTの設定の概要

Webhook

Webhookとは, さまざまなウェブリクエストを作成または受信できる機能のことです. 私もあまり詳細は分かりませんが, 以下のようになるでしょうか.

  1. 何かしらのトリガーとなるイベントが発生する(データが追加される, 特定の時刻になる等?)
  2. そのイベントにより指定したURLへのHTTP通信が発生し, データが送信される

もし具体的に興味があれば, 例えば以下のWebページは参考になるかもしれません.

Webhookでは, 「Receive a web request」のトリガーを設定し, 下の図のようにEvent Nameを設定します. Event Nameは任意で構いません.

IFTTTのWebhookの設定

Gmail

Gmailでは, 「Send yourself an email」のイベントを設定し, 例えば下の図のように設定します. この後のPythonプログラムに合わせてこのようにしていますが, 「Value1, Value2, Value3に3つの値が保存され, その値をGmailのイベントの設定に使うことができる」ということが分かっていれば, 柔軟に設定を変更することができると思います.

IFTTTのGmailの設定

WebhookのURLを取得しておく

この後のPythonプログラムで用いる, WebhookのURLを取得します. まず, IFTTTのMy ServiceからWebhookを選択し, 右上の「Documentation」を選択します.

IFTTTのMy ServiceからWebhookを選択した後

そして「To Trigger an Event」の下のURLを確認します.

IFTTTのWebhookのDocumentation

このURLの真ん中の四角に, 上記のIFTTTのWebhookの設定のEvent Nameで設定した名前を入れたURLを確認してください. これを後に用います.

Python

Pythonのコード例

私は以下のようなPythonプログラムを用いています.

  • arxivモジュールが更新されたようなので, それに対応させました.
    • arxiv.Searchで, arXivから情報を検索してくるようになりました.
    • result.authorsで著者名を取得すると, 「arxiv.Result.Author("AAA")」のようなもののリストが取得されます. そのため, 「著者を整形」のコメントより下のような処理を施すことで, 著者名が「; 」でつながった文字列を得ています.
  • googletransモジュールは, 最新ver.を入手した方がバグが少なくなるようです. 一応「time.sleep(1)」も入れていますが, ご参考までに.
    $ pip install googletrans==4.0.0-rc1
    

まとめ

あとはこれを毎朝実行する等の状況があれば強いです. 現状, 私はそれを実行する設定ができていないので, batファイルを作成してせめて1ダブルクリックで実行できるようにはしています. 毎朝実行するように設定出来たら, また新記事で紹介するかもしれません!

参考にしたサイト等