2018年12月6日木曜日

Python スクリプトで別の Python スクリプトを引用する

9月頭頃に作った IIJmio のクーポンON/OFF スイッチの自動化スクリプトは特にトラブルもなくラズパイ上で cron を使って定刻通りに稼働しています。しかし、IIJmio の API にアクセスするためのトークンは発行してから 90 日で利用期限を迎えるため、そろそろ新しいトークンを再発行しなくてはいけません。トークンの再発行してて思ったのですが、現在は Slack や IIJmio のトークン情報を各スクリプトにハードコーディングしているため、各ファイルに散らばっているトークン情報を書き換えなければなりません。結構面倒な上に書き換え忘れてしまうと正常動作しないというトラブルにもつながります。そんなこともあってトークン情報は 1 つのファイルにまとめて記載し、各スクリプトはそのまとめファイルから参照する形にしようと思いました。

というわけで参考にしたのが下記のページです。

Python 3 でのファイルの import のしかたまとめ
https://qiita.com/karadaharu/items/37403e6e82ae4417d1b3

mytokens.py というファイルにトークン情報をまとめておき、各スクリプトは mytokens を import してトークン情報を参照するように修正します。

# トークン定義 まとめファイル
#

# slackbot ライブラリに必要なトークン
# bots App の管理ページから発行
slack_bots_token = 'xoxb-hogehoge'

# slack legacy token メッセージの一括削除で使用
# https://api.slack.com/custom-integrations/legacy-tokens
slack_legacy_token = 'xoxp-hogehoge'

# iijmio api のデベロッパID (下のトークン発行に必要)
# https://api.iijmio.jp/mobile/d/
iijmio_devid = "hogehoge"

# iijmio api のトークン (発行から90日間有効)
# 再発行URL: https://api.iijmio.jp/mobile/d/v1/authorization/?response_type=token&client_id=hogehoge&state=example_state&redirect_uri=http%3A%2F%2Flocalhost%3A8080

# 発行日 2018.9.6 -> 2018.12.5
#iijmio_token = "hogehoge"
# 発行日 2018.12.2 -> 2019.3.2
iijmio_token = "hogehogehoge"
あとはトークンまとめファイルを各スクリプトから参照します。
import mytokens

slack_token = mytokens.slack_bots_token
iijmio_token = mytokens.iijmio_token
iijmio_devid = mytokens.iijmio_devid
こんな感じで。