はじめに
特定の仮想通貨の現在価格を定期的に知りたいなと思い色々調べていたら
Line Notify と CoinMarketCap を使えばできることが判明!!
しかもどちらも無料で使えるという。。。(リクエスト回数?とか縛りはありそう)
これで億万長者...
目次
事前準備
Line Notify と CoinMarketCap へ登録しAPIキーを取得する
Line Notifyの登録
すでに色々な方が記載しているのでこちらは割愛。。。
CoinMarketCapの登録
① CoinMarketCap の「GET YOUR API KEY NOW」をクリック
② 項目を埋めて「CREATE MY ACCOUNT」をクリック
※無料で使用枠は初期設定のBasicのみ
③ ログイン後APIキーをコピー
API KEYにカーソルをもっていけばコピーできます
API詳細については画面左下のAPI DOCUMNETATIONから確認可能
今回は特定の通貨の値段を知りたいので/cryptocurrency/*を使う
実装
#!/usr/bin/env python3
import requests
import json
import numpy as np
# CoinMarketCap API
COIN_API_KEY = 'hogehogehogehogehogehogehogehogehogehoge'
COIN_URL = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest'
# Line Notify API
LINE_API_KEY = 'hagehagehagehagehagehagehagehagehagehage'
LINE_URL = 'https://notify-api.line.me/api/notify'
def get_coin_data():
targe = {'GMT,SOL'}
# CoinMarketCapリクエスト情報
parameters = {
# 取得時の法定通貨
'convert': 'USD',
# 取得対
'symbol': 'GMT,SOL' # todo target
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': COIN_API_KEY,
}
# CoinMarketCapから通貨情報を取得
session = requests.Session()
session.headers.update(headers)
try:
response = session.get(COIN_URL, params=parameters)
# response = requests.get(COIN_URL, headers=headers)
resp = json.loads(response.text)
data = resp['data']
except (ConnectionError, Timeout, TooManyRedirects) as e:
print(e)
# とりあえず必要な情報のみ拾う
line_message=''
for key in data:
symbol = key
price = np.round(data[key]['quote']['USD']['price'],decimals=3)
line_message+=f'\n{key} -> price: {price}$'
# Lineに通知
headers = {'Authorization': f'Bearer {LINE_API_KEY}'}
data = {'message': f'message: {line_message}'}
requests.post(LINE_URL, headers=headers, data=data)
if __name__ == '__main__':
get_coin_data()