この記事の内容
- nanacoウェブページにアクセスし, 残高確認, クレジットチャージ, クレジットカード解除を行うpythonスクリプトです.
- Seleniumを利用せず, requestsとHTMLParserのみに依存するので, AWS Lambdaでも簡単に実行できます.
- Cloudwatch Eventと組み合わせて, 毎日定時に登録済みクレジットからnanacoを(疑似)オートチャージする機能も構築できます.
インストール
pip install git+https://github.com/sawadyrr5/PyNanacoLight
How to use
モジュールnanacoからNanacoクラスをインポートします
from PyNanacoLight.nanaco import Nanaco
nanaco番号, カード番号(裏面右下に書いてある7桁の番号), クレジットチャージパスワードを渡してインスタンス化します.
mynanaco = Nanaco(nanaco_number='xxxxxxxxxxxxxxxx', card_number='xxxxxxx', creditcharge_password='xxxxxxxx')
プロパティ
以下のプロパティでクラスから各種情報が取得できます.
.nanaco_number # nanaco番号
.value_card # カード残高
.value_center # センター預かり残高
.registerd_credit_card # 登録クレジットカード番号(下4桁以外はマスキング)
.charge_count # 月間累計チャージ回数
.charge_amount # 月間累計チャージ金額
メソッド
以下のメソッドが使用可能です.
.charge(amount=value) # クレジットチャージを実行(valueには5000以上30000以下の範囲で1000単位で指定)
.release() # クレジットチャージ解除
利用例: AWS Lambdaでオートチャージ機能を設定
Lambda関数を作る
作り方の詳細は他に解説ページがたくさんあるので割愛します.
依存ライブラリをpip install hogehoge -t .
という感じでインストールしておくのをお忘れなく.
コードはzipで固めてアップロードします.
Lambda関数の構造はこんな感じになるはずです.
Lambda関数
Lambda関数は以下のように書きます.
クレジットカードが未登録だったり, センター預かり残高が一杯だったり, 月間チャージ限度額を超えていたりする場合は処理中にエラーで死にますが, そのへんの考慮は今回はしません.
lambda_function.py
# -*- coding: utf-8 -*-
import os
from PyNanacoLight.nanaco import Nanaco
def lambda_handler(event, context):
nanaco_number = os.environ['nanaco_number']
card_number = os.environ['card_number']
charge_password = os.environ['charge_password']
charge_threshold = os.environ['charge_threshold']
charge_amount = os.environ['charge_amount']
mynanaco = Nanaco(
nanaco_number,
card_number,
charge_password
)
# カード残高がしきい値未満だったらクレジットチャージ
if mynanaco.value_card < charge_threshold:
mynanaco.charge(charge_amount)
パラメータ
nanacoカード番号などは環境変数でセットしておきます.
トリガーの設定
最後に, Cloudwatch Eventから定時で発火させるようにします.
発火頻度は利用状況に応じて調整しましょう.
以上です. それではみなさん, 素敵なnanacoライフを!