Linebotとpythonでスイッチサイエンスの在庫数を通知するシステムを作ってみた

スポンサーリンク

はじめに

スイッチサイエンスに自分で設計して商品化した基板を出品しているんですけど、売れたかどうかすごく気になってしまうんですよ。そいで、毎日検索しに行ってしまっているんです。ツイッターとかのいいね通知見にいっちゃうやつです。承認欲求モンスターが爆発しています。あんまりに酷いんで、これはちょっとどうにかしないと。ということで代わりにPythonスクレイピングしてline botで通知するかんじにしていきたいと思います。(いや在庫管理という側面からも確認するのは大事なんですよ汗)

イメージとしてはこんな感じです。 サーバーはローカルネット内でラズパイを使用します。Pyrhonでスクレイピングさせて在庫データをスイッチサイエンスに取りにいきます。取ってきたデータはLine botに投げて通知が行くようにします。これをcrontabで定期実行させちゃおうという作戦です。

環境

Raspberry pi 3 model B(os: raspbian)  
Python 3.9.2

Line botの登録

Line botの準備はこちらのブログを参考にやっていきました。 chuna.tech

コード

コードは在庫数のデータをスクレイピングでとってくる部分と、そのデータを受け取ってLine botに送る部分に分けてかいてみた。参照先のページは以下のURL。 Atmega328P スケッチ書き込み装置治具www.switch-science.com 在庫数の部分がターゲット

gist13aab99e9a376ede0c5bfbc673cc7197

上のコードで在庫数の部分を引っ張て来て、以下でLine botへ出力。

gist1619909d935f12de1655461cbef827cd

crontab で定期実行の設定

pythonで在庫数の通知まではできるようになったので、あとは定期的に実行するように設定してやる。 crontabで先ほど作ったプログラムを実行できるようにファイルの権限を書き換えておこう。

$sudo chmod 777 search.py stock_sw.py

権限の変更は終わったで、あとは定期実行の設定をするだけ。以下のコマンドを実行すると定期実行するスクリプトの設定ができる。

$crontba -e

今回はpython3で実行する形でいくので以下みたいな感じ。朝の7時と15時に実行するように設定してみよう。ファイルのパスは絶対パスで書いた方が問題がないと思うぞ。

0 7 * * * python3 /home/xian/Documents/sw_stock/stock_sw.py > tmp.log 2>&1

0 15 * * * python3 /home/xian/Documents/sw_stock/stock_sw.py > tmp.log 2>&1

定期実行されるとこんな感じになる。

ちなみにラズパイはこんな感じで設置しているよ

<参考文献>

知識の枝 PythonでLINEにメッセージを送る

PythonでWebスクレイピングをする方法を解説!【入門…|Udemy メディア

BeautifulSoup4で親子、兄弟、前後要素の検索方法 | せなブログ

Python | 関数からreturn文を使って呼び出し元へ戻り値を返す

Pythonで文字列を分割(区切り文字、改行、正規表現、文字数) | note.nkmk.me

cronでPythonスクリプトを自動実行する | masayanblog

Raspberry Piでcronを使ってPythonを定期実行する - Raspberry Pi & Python 開発ブログ ☆彡

【 pwd 】 現在のディレクトリの場所を確認する | 日経クロステック(xTECH)