LoginSignup
2
6

More than 5 years have passed since last update.

fitbitのデータをサーバーから取得するやつ

Last updated at Posted at 2017-02-02

概要

  • fitbitのサーバー上に保存されたデータをローカルに保存するやつ
  • 言語はPython,2.7.10で動作の確認した
  • 各種環境を整えることに関しては,以下記事を参考にしてほしい
  • http://qiita.com/fujit33/items/2af7c4afdb4e07601def

コード

  • 概要のURLを参考に「USER_ID」「CLIENT_SECRET」「ACCESS_TOKEN」「REFRESH_TOKEN」をメモしておき,それぞれ「各自」の文字に置き換える
# -*- coding: utf-8 -*-
import sys
import os
import fitbit
import gather_keys_oauth2 as Oauth2

# コマンドライン引数の数で分岐(2以外なら終了)
if not len(sys.argv) == 2: sys.exit(1)

# 変数の宣言及び日付,データの頻度,ディレクトリ,ファイル名の生成
DATE = sys.argv[1]
FREQS = ['1sec','1min','15min']
DIRS={}
FILES={}
for FREQ in FREQS:
    DIRS[FREQ] = './%s' % FREQ
    FILES[FREQ] = 'HR_%s_%s.csv' % ( DATE, FREQ )

# ディレクトリが存在しない場合,ディレクトリ作成
for FREQ in FREQS:
    if not os.path.exists(DIRS[FREQ]):os.mkdir(FREQ)

# 固有情報,認証サーバーに接続及び認証処理
USER_ID = '各自'
CLIENT_SECRET = '各自'
ACCESS_TOKEN = '各自'
REFRESH_TOKEN = '各自'
auth2_client = fitbit.Fitbit(USER_ID, CLIENT_SECRET, oauth2=True, access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)

# データの取得
fitbit_stats = {}
stats = {}
for FREQ in FREQS:
    fitbit_stats[FREQ] = auth2_client.intraday_time_series('activities/heart', DATE, detail_level=FREQ)
    stats[FREQ] = fitbit_stats[FREQ]['activities-heart-intraday']['dataset']

# CSVファイルの生成及びファイルの保存
for FREQ in FREQS:
    os.chdir(DIRS[FREQ]) # 各ディレクトリに移動
    csv_file = open(FILES[FREQ],'w')
    for var in range(0, len(stats[FREQ])):
        csv_file.write(stats[FREQ][var]['time'])
        csv_file.write(",")
        csv_file.write(str(stats[FREQ][var]['value']))
        csv_file.write("\n")
    csv_file.close()
    os.chdir('..') # 一つ上のディレクトリに移動

解説

  • あとで編集予定です

結果

  • FitbitのAPI内の「fitbit」,「gather_keys_oauth2.py」,「gather_keys_oauth2.pyc」をソースコードと同じディレクトリにコピー
  • python ファイル名.py 2017-02-01 で実行
  • 実行ディレクトリに「1sec」「1min」「15min」という名前のディレクトリが作成され,各ディレクトリに,指定した日付のデータがそれぞれ保存される

参考

初投稿です.助言や補足などがあれば指摘をお願いします.

2
6
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
2
6