Fitbit APIを使って、本日のActivityを取得するかんたんなサンプルを書いてみた(Node.jsとGoとPython)
以前から気になっていたFitbit APIを試してみた。
セットアップなどについては下記の記事がとても参考になった。
目次
- 目次
- Node.jsを用いて本日のActivityを取得するサンプル
- Node.js(.mjs)を用いて本日のActivityを取得するサンプル、その2
- Goを用いて本日のActivityを取得するサンプル
- Pythonを用いて本日のActivityを取得するサンプル
Node.jsを用いて本日のActivityを取得するサンプル
ひとまずはtokenを取得して、APIを叩けるところまで準備し、下記のコードで本日のactivityが取得できることを確認した。
const fetch = require('node-fetch'); const config = require('config'); const moment = require('moment'); (async() => { const today = moment().format('YYYY-MM-DD'); const url = `https://api.fitbit.com/1/user/-/activities/date/${today}.json`; const option = { method: "GET", headers: {'Authorization': `Bearer ${config.token}`} }; const response = await fetch(url, option).then(r => r.json()); console.log({response}); })();
上のコードを実行するには、下記コマンドでライブラリを導入の上、 config/default.json
に下記の記述を追加する必要がある。
yarn add config node-fetch moment
{ "token": "取得した自身のtokenを設定" }
ちなみにactivity取得APIに関するドキュメントは下記にあった
Node.js(.mjs)を用いて本日のActivityを取得するサンプル、その2
久しぶりにFitbit APIを使った際に、この記事を読み返したのだが、自身のJSサンプルが冗長な気がしたので、書き直してみた。
なお、mjs
で書いているので、top level awaitを利用している。
あと、上のサンプルでは ライブラリをいくつか利用しているが、今回は node-fetch
のみとしている。
import fetch from 'node-fetch'; // 取得したtokenをセット const TOKEN = ""; // 本日の日付 const date = new Date(); const today = date.getFullYear() + "-" + String(date.getMonth() + 1).padStart(2, '0') + "-" + String(date.getDate()).padStart(2, "0"); // 本日のactivityを取得 const url = `https://api.fitbit.com/1/user/-/activities/date/${today}.json`; const option = { method: "GET", headers: {'Authorization': `Bearer ${TOKEN}`} }; const response = await fetch(url, option).then(r => r.json()); console.log(response);
Goを用いて本日のActivityを取得するサンプル
Goで同様の内容のサンプルを書いてみたので、こちらもサンプルとして残しておく。
package main import ( "io/ioutil" "log" "net/http" "time" ) func main() { today := time.Now().Format("2006-01-02") url := "https://api.fitbit.com/1/user/-/activities/date/" + today + ".json" // 取得したtokenをセット token := "" bearer := "Bearer " + token req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { log.Println("Error new requst: ", err) } req.Header.Add("Authorization", bearer) client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Println("Error response: ", err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Println("Error while reading: ", err) } log.Println(string([]byte(body))) }
Pythonを用いて本日のActivityを取得するサンプル
Pythonで同様の内容のサンプルを書いてみたので、こちらもサンプルとして残しておく。
ライブラリとして requests
を利用している。
from datetime import datetime import requests def main(): # 本日の日付 today = datetime.now().strftime('%Y-%m-%d') url = "https://api.fitbit.com/1/user/-/activities/date/" + today + ".json" # 取得したtokenをセット token = "" headers = { "Authorization": "Bearer {}".format(token) } r = requests.get(url, headers=headers) print(r.json()) if __name__ == "__main__": main()