open exchange ratesは為替レートを取得するAPIを提供しているWebサービス。一時間ごとの更新&1000件/月までという制限があるが、無料プランを提供している(この制限だと用途によってはキツいだろうが、その場合は有料プランを使うか、同様の他サービスを検討しよう)。
以下、open exchange ratesの無料プランのサインアップをして、PythonからAPIを呼んでレートを取る方法を書く。
サインアップ
無料プランのサインアップページはここ。
メールアドレス、パスワード、氏名、Catpchaの数字を入力し、「Aggreement」のチェックを付けて「Continue」ボタンを押せばOK。メールでAPP IDが送信されてくる。
最新レートの取得
open exchange ratesでは、最新レートの取得と日付を指定してのヒストリカルレートの取得ができる。
試しに、通貨を指定すると対JPYの最新レートを表示するスクリプトを書く。
もしhttplib2がなければ、pip install httplib2
で入れておくこと。
#!/usr/bin/env python`
# -*- coding: utf-8 -*-
import sys
import httplib2
import json
app_id='ここにAPP IDを入れる'
api_url='http://openexchangerates.org/api/latest.json?app_id=' + app_id
if __name__ == '__main__':
client = httplib2.Http()
response, context = client.request(api_url, "GET")
rates = json.loads(context)['rates']
target_currency = sys.argv[1]
rate = rates['JPY'] * (1.0 / rates[target_currency])
print target_currency + '/JPY rate is ' + "{0:.2f}".format(rate) + ' now.'
最低限レートを取るだけならこれくらいでOK。こんな感じで動く。
[shin@tk2-235-27441 sandbox]$ python forex.py EUR
EUR/JPY rate is 140.02 now.
[shin@tk2-235-27441 sandbox]$ python forex.py AUD
AUD/JPY rate is 96.83 now.
[shin@tk2-235-27441 sandbox]$ python forex.py JPY
JPY/JPY rate is 1.00 now.
Appendix.
他のサービスは?
同じようにしてWebでREST APIから為替レートを取るサービスはいくつもある。有名どころ……というか、信頼性が高いと思われる提供元としては、
- QANDA
- XE
- xurrency
あたりが挙げられる。ただし、ちゃんとした提供元のサービスは相応の利用料金が掛かるので、個人が使うのは敷居が高い。
信頼性がよくわからないが無料で使えるサービスとしては、
- Exchange Rate Lab
- Fixer.io
があるようだ。どこからレートを取ってきているかよくわからないし、サービスの継続性も何とも言えないが、とりまお遊びで使うならこのあたりでもよいだろう。
APIの使用状況は?
無料プランだとAPIの呼び出しに回数制限があるのだが、どれくらい使ったかは以下のページから分かる。パスワードの変更なんかもここからできる。