未分類

Zaifの非公式ライブラリ(zaifapi)を使ってみる

こちらにある非公式ライブラリであるzaifapiを使ってみましょう。
非公式とは言え、一応Zaifの開発者向けページにリンクされているので、使っても悪用はされないと思いますが…。

まずは、zaifapiをインストールします。
スタートメニューから、Anaconda3 → Anaconda Prompt をクリックしてください。そして、下記入力してEnter。

[python]
pip install zaifapi
[/python]

下記が実行結果です。

これでzaifapiが使えるようになりました。

では、前回やったBTC価格を取得してみましょう。
AnacondaのSpyderを起動し、下記を入力して実行してください。

[python]
from zaifapi import ZaifPublicApi
zaif = ZaifPublicApi()
ticker = zaif.ticker('btc_jpy')
print('BTC価格(Zaif): ' + str(ticker["last"]) + ' 円')
[/python]

結果は以下のようになりました。

BTC価格(Zaif): 1367000.0 円

約136万円ですね。以前は207万円だったので、かなり値下がりしましたね。

解説

1行目は zaifapi ライブラリを使用するための準備です。
前回は下記のようにrequests ライブラリをインポートしましたね。

[python]
import requests
[/python]

2行目は ZaifPublicApi クラスのインスタンスを生成しています。クラスやインスタンスを理解するには、オブジェクト指向を勉強する必要がありますが…。理解しなくていいと思いますので、ここでは省略します。
現物公開APIを使用する際には、この記述をする、と覚えてしまってください。

ちなみに、ZaifPublicApi クラスの定義は下記ファイルにありますので、気になる方は見てみましょう。

zaifapi-master\zaifapi\exchange_api\public.py

3行目は生成したインスタンス変数 instance を使用して、ZaifPublicApi クラスのメソッド ticker を呼び出しています。

tickerメソッドの戻り値を ticker 変数で受けています。ここでzaifapiのソースを見てみましょう。抜粋したものが下記です。

[python]
def ticker(self, currency_pair):
schema_keys = ['currency_pair']
return self._execute_api(method_name(),
schema_keys,
currency_pair=currency_pair)

def _execute_api(self, func_name, schema_keys=None, q_params=None, **kwargs):
schema_keys = schema_keys or []
q_params = q_params or {}
params = self._params_pre_processing(schema_keys, kwargs)
self._url.add_dirs(func_name, *params.values())
response = requests.get(self._url.get_absolute_url(), params=q_params)
self._url.refresh_dirs()
if response.status_code != 200:
raise ZaifApiError('return status code is {}'.format(response.status_code))
return json.loads(response.text)
[/python]

 

 

tickerメソッドは、ZaifPublicApi クラスのメソッドなのですが、ZaifPublicApi クラスは _ZaifPublicApiBase クラスを継承して作られています。ですので、 _ZaifPublicApiBase クラスのメソッドも使えます。
_execute_api というメソッドを呼んでその戻り値をそのまま戻していますね。
そして、この関数は最後に return json.loads(response.text) をしていますので、結局 ticker メソッドは json 形式で戻ってくるわけですね。
BTC価格を取得する で説明した json です。

4行目は出力しているだけですね。
json で返ってきているので、BTC価格を取得する と全く同じです。

 

-未分類

© 2024 プログラマの雑記帳 Powered by AFFINGER5