【python】arXivから論文を取得してLINEで手軽に見たい~その3~

プログラミング

【python】arXivから論文を取得してLINEで手軽に見たい~その2~」では、IFTTTを使ってarXivから論文を取得して、LINEに通知するということをしました。

今回はその操作を自動化するということをしてみましょう。

スポンサーリンク

バッチファイル

自動化には「バッチファイル」というものを使います。

バッチファイルとはコマンドプロンプトにさせたい仕事を記述しておくファイルのことです。

こうしておけば、そのファイルをクリックするだけで、仕事を行ってくれます。

つまり、

「Anacondaを開く→jupyternotebookを開く→コードを実行」

という一連の作業が

「バッチファイルをクリック」

という一つの動作だけで完了することができます。便利ですね。

タスクスケジューラ (余談)

さらにこれをWindowsの「タスクスケジューラ」と組み合わせて定期実行させることで寝ている間に論文を集めることができます。

タスクスケジューラの詳細はこちら。

Windowsのタスクスケジューラを使ってpythonスクリプトを定期的に自動実行しよう! | 文系でもわかる!BitcoinのBOT自動売買トレードの始め方

PCの電源を自動で入れる(余談)

タスクスケジューラはPCの電源が入っていないと動作しないので、寝ている間にPCが起動するようにします。

やり方はこちら。

毎日決まった時間に自動でパソコンを起動する | Windowsパソコン作業の自動化・効率化
「パソコンの電源を入れ、作業後シャットダウンする」この操作を完全に自動化できる自分が寝ている間にパソコンの電源が入り、仕事をした後、再び電源を切ってくれる。こんな夢のようなことができたらどれだけ仕事が楽になるでしょうか。これ、夢ではなく本当に可能なんです。実際に私は夜中4時に自動でパソコンを立ち上げ作業終了後、シャット...

今回は申し訳ないですが、バッチファイルの設定方法の紹介だけさせていただきます。

時間があればこれらの記事も書いていきたいと思います。

ただ、バッチファイルで自動化できるだけでもずいぶん楽になるので、ぜひやってみてください。

バッチファイルの作成

下準備

ではまず、下準備からして行きましょう。

arxiv_job.py

今までjupyternotebookで作業していた方は新たに「arxiv_job.py」というファイルをテキストエディタで作って、そこに「【python】arXivから論文を取得してLINEで手軽に見たい~その2~」で作ったコードを貼り付けてください。

######################
#転送#
#####################

from datetime import datetime
import re
import requests
from googletrans import Translator
import time
from time import sleep

import arxiv

# webhook POST先URL
API_URL = "https://maker.ifttt.com/trigger/event/with/key/your-api-key"

# 検索ワード
QUERY = "cat:'astro-ph.IM'"

result_list = arxiv.query(query = QUERY,max_results=5,sort_by='submittedDate')

translator = Translator()

api_url = API_URL

dt = datetime.now().strftime("%Y/%m/%d %H:%M:%S")
requests.post(api_url, data={"value1": dt})

def translate_post():
    title_jpn = translator.translate(title, src='en' ,dest='ja').text
    abst_jpn = translator.translate(abst, src='en' ,dest='ja').text

    print("-------"+str(count)+"ページ目-------")
    print("author:{}".format(author))
    print(url)
    print("title:{}".format(title_jpn))
    print("date:{}".format(date))
    print("Abstract:{}".format(abst_jpn))

    message = "\n".join(["<br>著者:  " + author, "<br>タイトル:  " + title_jpn, "<br><br>URL: " + url, "<br><br>発行日: " + date, "<br><br>概要: " + abst_jpn])

    # webhookへPost
    response=requests.post(api_url, data={"value1": message})

    sleep(5)

count = 1
for result in result_list:

    author = result.author
    url = result.pdf_url
    title = result.title
    date = result.published
    abst = result.summary

    abst = abst.replace("\n","")

    translate_post()

    count += 1


print("Done")

バッチファイル作成

必要なもの

バッチファイル制作にあたり、使うエディタはなんと「メモ帳」です。Windowsならば入っていないことはまずないでしょう。

必要な情報

メモ帳にかく必要な情報が2つあります。それが

  • arxiv_job.pyの階層
  • activate.batの階層

です。一つずつ見ていきましょう。

arxiv_job.pyの階層

先ほど作ったarxiv_job.pyの階層です。

例えばぼくの場合、OneDriveのArxivフォルダの中のarxivフォルダの中にarxiv_job.pyが入っていたので

arxiv_job.pyの階層は

C:\Users\myname\OneDrive\Arxiv\arxiv

となります。これはみなさん違うと思うので調べてみてください。

これをメモ帳に書きます。

cd C:\Users\myname\OneDrive\Arxiv\arxiv 

頭に「㏅」と書くのを忘れないでください。

activate.batの階層

これはanacondaのファイルの一つです。

ぼくの場合は

C:\Users\myname\Anaconda3\Scripts\activate.bat

となっていたのでこれをメモ帳に書きます。

call C:\Users\myname\Anaconda3\Scripts\activate.bat

頭に「call」をつけるのを忘れないでください。

ここまで来たら準備はOKです。

python arxiv_job.py

最後に

python arxiv_job.py

と書けばバッチファイルの完成です。ここまでをまとめると、

メモ帳には

cd C:\Users\myname\OneDrive\Arxiv\arxiv 
call C:\Users\myname\Anaconda3\Scripts\activate.bat
python arxiv_job.py
と書かれていればOKです。これを「arxiv.bat」という名前で保存してください。拡張子も変えてください。

アイコンが歯車の形になっていれば成功です。ならない場合は拡張子が.txtのままかもしれません。

実行

できたファイルをクリックしてみましょう。

自動でAnacondapromptが開かれ、論文がLINEに送られてきました!!

参考

Python3のWindows環境における手動/自動実行方法+実行形式化まとめ。 | KodoCode
PythonのWindows環境下におけるTIPSが少ない…。実行方法についてまとめました。 昨今では人工知能・bot開発・自動化などでPythonが注目されていますが、インターネ...
バッチからanaconda環境を実行 | ぱんだクリップ
pythonのexe化はめんどくさいよね・・・ windowsだったらバッチファイルで実行すれば? anaconda環境のpythonプログラムなんだけど・・・ こんなやり方はどうかな? anaconda環境でのpythonは、開発しやすく
tsukuru-hp.com
This domain may be for sale!
毎日決まった時間に自動でパソコンを起動する | Windowsパソコン作業の自動化・効率化
「パソコンの電源を入れ、作業後シャットダウンする」この操作を完全に自動化できる自分が寝ている間にパソコンの電源が入り、仕事をした後、再び電源を切ってくれる。こんな夢のようなことができたらどれだけ仕事が楽になるでしょうか。これ、夢ではなく本当に可能なんです。実際に私は夜中4時に自動でパソコンを立ち上げ作業終了後、シャット...
Windowsのタスクスケジューラを使ってpythonスクリプトを定期的に自動実行しよう! | 文系でもわかる!BitcoinのBOT自動売買トレードの始め方

コメント

  1. […] 次回「【python】arXivから論文を取得してLINEで手軽に見たい~その3~」ではこの操作を定期的に行っていきたいと思います。 […]

タイトルとURLをコピーしました