これは某大学で使用されている某学務情報システムから成績が更新されたかどうかを通知するLINE botです
pip install -r requirements.txt
psycopg2のinstallがエラったらこれ https://dev.classmethod.jp/articles/mac-psycopg2-install/
ローカルで実行したい場合は以下も入れてください
pip install chromedriver_binary
pip install python-dotenv
もしchromeのバージョンが違ったらこのサイトを参考に
http://chromedriver.chromium.org/downloads
pip install chromedriver_binary==88.hogehoge
ローカルのpostgreSQL使うときはこうしてください
CREATE DATABASE seiseki_information;
\c seiseki_information
\i seiseki.sql
localで実行する際.envファイルに以下を参考に某学情にログインするIDとパスワードを書いてください
MY_ID="your id"
MY_PASS="your password"
DATABASE_URL="postgres://postgres:@localhost:5432/seiseki_information"
URL="your URL"
DATABASE_URLはここ参照https://qiita.com/hoto17296/items/0ca1569d6fa54c7c4732
URLは某学務情報システムのurlを入れてください(/portal/ になるように)
localsrc内のmain.pyを実行するとLine botのスクリプトが動きます
GPAgetter.pyを動かすと、システムからスクレイピングをしてあなたのGPAをコンソール上に出力してくれます
IDが正しく登録されているかどうかを確認するためにお使いください
getter.pyはローカルに保存した成績情報が記載されているhtmlから成績情報をスクレイピングするスクリプトです
テストにお使いください
ScoreGetter.pyはURLに指定された学情のURLに実際にスクレイピングを行うスクリプトです LINEに通知はしません
- Heroku
heroku create your-app-name
heroku config:set YOUR_CHANNEL_SECRET="Channel Secretの文字列" --app {自分のアプリケーション名}
heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの文字列" --app {自分のアプリケーション名}
heroku config:set MY_ID="yourID" --app {自分のアプリケーション名}
heroku config:set MY_PASS="yourpass" --app {自分のアプリケーション名}
heroku config:set URL="yourURL" --app {自分のアプリケーション名}
git push heroku main
heroku addons:create heroku-postgresql:hobby-dev -a your_app_name
heroku pg:psql -a your_app_name
=>\i sql/seiseki.sql
=>select * from seiseki;
- buildpack追加
Buildpack URL chromedrive https://github.com/heroku/heroku-buildpack-chromedriver.git
google-chrome https://github.com/heroku/heroku-buildpack-google-chrome.git
- Line bot作成
line botを作成した後webhookのURLを
https://app-name.herokuapp.com/callback
にする
誰にでも成績情報が行ってしまうのはまずいので決められたuserIdの人のみにpush通知を送る
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
message = 'IDtest'
# userIdを取得
userId = json.loads(str(event.source))
userId = userId['userId']
message += '\n ' + userId
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=message))
上記のコードをmain.pyで適切に実行するとuserIdが取得できる
そのあとターミナルで以下を実行
heroku config:set USER_ID="userIdの文字列" --app {自分のアプリケーション名}
これで成績情報は自分のアカウントのIDにのみ送信される
クレカ登録してから
heroku addons:add scheduler:standard --app {自分のアプリケーション名}
herokuのページから Overview→Heroku Scheduler→Create job
実行するコマンドは
python check.py
定期実行する感覚はお好みで UTCなので日本時間と合わせるには"設定したい時間-9時間"で合わせてください