Skip to content

Instantly share code, notes, and snippets.

@sawadyrr5
Created March 26, 2020 14:02
Show Gist options
  • Save sawadyrr5/d858c9b7ec9dc40103cf2076ed72cea0 to your computer and use it in GitHub Desktop.
Save sawadyrr5/d858c9b7ec9dc40103cf2076ed72cea0 to your computer and use it in GitHub Desktop.
セブンカード以外でもnanacoオートチャージがしたい!

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関数は以下のように書きます. クレジットカードが未登録だったり, センター預かり残高が一杯だったり, 月間チャージ限度額を超えていたりする場合は処理中にエラーで死にますが, そのへんの考慮は今回はしません.

# -*- 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ライフを!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment