LoginSignup
23
25

More than 5 years have passed since last update.

Pythonでopen exchange ratesから為替レートを取得する

Posted at

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で入れておくこと。

forex.rb
#!/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から為替レートを取るサービスはいくつもある。有名どころ……というか、信頼性が高いと思われる提供元としては、

あたりが挙げられる。ただし、ちゃんとした提供元のサービスは相応の利用料金が掛かるので、個人が使うのは敷居が高い。

信頼性がよくわからないが無料で使えるサービスとしては、

があるようだ。どこからレートを取ってきているかよくわからないし、サービスの継続性も何とも言えないが、とりまお遊びで使うならこのあたりでもよいだろう。

APIの使用状況は?

無料プランだとAPIの呼び出しに回数制限があるのだが、どれくらい使ったかは以下のページから分かる。パスワードの変更なんかもここからできる。

23
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
25