24
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

セブンカード以外でもnanacoオートチャージがしたい!

Last updated at Posted at 2018-01-07

chuni_nanaco.png

この記事の内容

  • 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関数の構造はこんな感じになるはずです.

nanaco_2.png

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カード番号などは環境変数でセットしておきます.

nanaco_1.png

トリガーの設定

最後に, Cloudwatch Eventから定時で発火させるようにします.
発火頻度は利用状況に応じて調整しましょう.

nanaco_3.png

以上です. それではみなさん, 素敵なnanacoライフを!

24
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?