bitFlyerのAPIをPythonで使ってみた
bitFlyerのAPIを使ってみた
すごく丁寧なドキュメントなので、本当にわかりやすいです。
こちらがAPIの公式ドキュメント。
bitFlyerのAPIが使えるpythonライブラリもあるのですが、勉強もかねて一度は自分でやってみようという感じです。
簡単なAPIの使い方説明
基本的には、curlでリクエストを送ったら、レスポンスに情報が入っています。
マーケット情報が欲しければ...
$ curl https://api.bitflyer.jp/v1/getmarkets [{"product_code":"BTC_JPY"},{"product_code":"FX_BTC_JPY"},{"product_code":"ETH_BTC"},{"product_code":"BCH_BTC"},{"product_code":"BTCJPY01SEP2017","alias":"BTCJPY_MAT1WK"},{"product_code":"BTCJPY08SEP2017","alias":"BTCJPY_MAT2WK"}]
けっこうたくさんの種類の仮想コイン扱ってるんですね〜
ちなみに、返り値はjson形式なので、jsonファイルに保存したい場合はリダイレクトしてあげる感じ。
curl https://api.bitflyer.jp/v1/getmarkets > getmarkets.json
エンドポイントURLがhttps://api.bitflyer.jp/v1/これなので、こいつのお尻に欲しい情報の種類をくっつけます。
マーケット情報が欲しいなぁって思ったら、getmarkets
板情報が欲しいなぁって思ったら、getboard
みたいな感じです。
https://api.bitflyer.jp/v1/ #マーケット情報 https://api.bitflyer.jp/v1/getmarkets #板情報 https://api.bitflyer.jp/v1/getboard
Pythonプログラム
汚いプログラムですみません笑
初心者でも読みやすいようなプログラムにしています。
チャームポイントはエンドポイントURLの場所です(なんで関数の外にいるんですかね)
リストじゃなくて辞書型のほうがいいやろ、とかは自分でも思うのでまた今後直します...
import urllib.request import json #エンドポイントURL endpoint = "https://api.bitflyer.jp/v1/" #APIを呼んでくる関数 def call_api(what, which): print("----------" + what + "----------") #GETパラメータで付与したい情報を辞書形式で持つ data = {} data["product_code"] = which # data["count"] = # data["before"] = # data["after"] = #URLとして送れる形に変換(エンコード) url_values = urllib.parse.urlencode(data) #リクエストを送っている req = urllib.request.Request(endpoint + what + "?" + url_values) with urllib.request.urlopen(req) as res: #レスポンスを読める形にする response = res.read().decode("utf-8") #jsonファイルを保存します saveFile(what, response) return response def saveFile(what, response): f = open(what + ".json", "w") f.write(response) f.close() #APIで呼べる情報をリスト形式に api_list = ["getmarkets", "getboard", "getticker", "getexecutions", "gethealth", "getchats"] #GETパラメータに付与する情報をリスト形式に product_code = ["BTC_JPY", "ETH_BTC"] response = call_api(api_list[1], product_code[0]) print(response)
プログラムとしては、APIで受け取った情報をjsonファイルに保存しています。
何かに使うときは保存したファイルを読み込む形がいいと思います。