Zaimのデータを取得・操作するPythonパッケージ
大きくわけて2つの処理を行うパッケージです。
- Zaim APIのラッパークラス
- Zaim APIのアクセストークンの発行
- Rest APIとして提供されている処理の実行
- Seleniumを用いたデータ取得
- Zaimにはクレジットカードや銀行口座から自動でデータ取得する機能があるが、APIではそれらのデータにはアクセスできない
- これらの情報を取得するため、Seleniumのwebdriver(Chrome)を用いてデータを取得
pip install pyzaim
-
Zaimアカウントの作成
-
Zaim Developersでのアプリケーションの登録 (コンシューマID、コンシューマシークレットの発行)
- https://dev.zaim.net/users/login にアクセスし、新しいアプリケーションを追加
- ブラウザアプリを選択し、サービスのURLに以下を入力
http://127.0.0.1:5000/callback
- コンシューマID、コンシューマシークレットが発行される
-
Google Chromeおよびseleniumの導入
- アクセストークンの発行
from pyzaim import get_access_token
get_access_token()
# コンシューマIDとコンシューマシークレットを聞かれるので入力
# 認証ページのURLが表示されるので、アクセスして許可
# 遷移先ページのcopyボタンを押して、oauth_verifierをコピー
# コピーしたoauth_verifierを入力
# 問題なければアクセストークンとアクセスシークレットが表示される
- APIを利用してデータを取得・操作
from pyzaim import ZaimAPI
api = ZaimAPI('コンシューマID', 'コンシューマシークレット',
'アクセストークン', 'アクセスシークレット', 'verifier')
# 動作確認 (ユーザーID等のデータが取得されて、表示されればOK)
print(api.verify())
# データの取得
data = api.get_data()
# 支払いデータの登録
api.insert_payment_simple('日付(datetime.date型)', '金額(int)', 'ジャンル名',
'口座名', 'コメント', '品名', '店舗名') # 後半4つは任意入力
# 使用できるジャンル名は以下で確認できる
print(api.genre_itos)
# 使用できる口座名は以下で確認できる
print(api.account_itos)
# 支払いデータの更新 (更新対象データのIDはapi.get_data()で確認)
api.update_payment_simple('更新対象データのID', '日付(datetime.date型)', '金額(int)',
'ジャンル名', '口座名', 'コメント', '品名', '店舗名') # 後半4つは任意入力
# 支払いデータの削除
api.delete_payment('削除対象のデータのID')
from pyzaim import ZaimCrawler
# Chrome Driverの起動とZaimへのログイン、ログインには少し時間がかかります
crawler = ZaimCrawler('ログインID', 'ログインパスワード',
driver_path='Chrome Driverのパス'(PATHが通っていれば省略可),
headless=False) # headlessをTrueにするとヘッドレスブラウザで実行できる
# データの取得 (データの取得には少し時間がかかります、時間はデータ件数による)
data = crawler.get_data('取得する年(int)', '取得する月(int)', progress=True) # progressをFalseにするとプログレスバーを非表示にできる
# 終了処理
crawler.close()
本リポジトリのブランチについては以下の運用といたします。
main
- リリース用ブランチ。
- このブランチにマージした時点で新たにタグを打ち、PyPIにアップロードします。
- このブランチには直接PRを出さないでください。
develop
- 開発用の常駐ブランチ。
- すべてのコミットはこのブランチに一度マージし、動作を確認した上でmainにマージします。
- PRはこのブランチに対して行ってください。
feature-*
- 新規開発用のブランチ。
- 必ずdevelopから分岐し、developにマージする。
*
には開発やバグ修正などの対応内容を簡潔に記入。- 例: feature-add-headless-mode
Thanks goes to these wonderful people (emoji key):
りーべ 📆 👀 💻 📖 |
Ponk02 💻 |
zenjiro 💻 👀 |
omatsu555 💻 |
Y.Tory 💻 |
o-matsu 💻 |
kefi550 💻 |
tra (とら) (Taisuké) 💻 |
日高 凌 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!