こちらにある非公式ライブラリである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価格を取得する と全く同じです。